C++: An Interview with Bjarne Stroustrup (1/4)
La siguiente entrevista la hace un reportero del sitio http://www.ddj.com/ al creador de C++ Bjarne Stroutrup (BS), aunque al comienzo es un poco lenta y llena de detalles más adelente aborda temas que incumben a la educación en ingeniería (específicamente en el tópico de programación -que es el que me interesa;-)... espero que les resulte interesante
Marzo 27, 2008
http://www.ddj.com/cpp/207000124
by James Buchanan
Historia de C++
El creador de C++, Bjarne Stroustrup discute la evolución del estándar de C++0x, la educación de los programadores y el futuro de la programación
JB: Cuando te interesaste inicialmente por la computación, ¿cuál fue tu primer computador y el primer programa que escribiste?
BS: Aprendí a programar en mi segundo año de universidad. Desde el comienzo estaba comprometido a hacer "matemáticas con ciencia de computadores", pero realmente no recuerdo por qué. Sospecho que (erróneamente) pensé que la computación era algún tipo de matemática aplicada.
Mi primer computador fue el computador GIER del departamento. Se programaba casi exclusivamente en Algol-60. Mi semi-real primer programa dibujaba líneas (¡en papel!) entre puntos sobre el borde de una superelipse, para crear agradables diseños gráficos. Eso fue en 1970.
JB: ¿Cuando creaste C++, lo hiciste porque el paradigma (o estilo de programación) de programación orientada a objetos (POO) obviamente ganaría mucha popuplaridad en el futuro, o fué un proyecto de investigación para averiguar si la POO convencería?.
BS: Por ninguna de esas razones! Mi firme impresión (en aquel tiempo) era que todas las personas sensibles "sabían" que la POO no funcionaba en el mundo real: Era muy lenta (por más de un orden de magnitud), mucho más difícil de usar por los programadores, no era aplicable a los problemas del mundo real, y no podía interactuar con todo el resto del código que necesitaba un sistema. De hecho, probablemente estoy siendo demasiado optimista aquí: la "gente sensible" nunca había oído hablar de la POO y no querían hacerlo. Diseñé e implementé C++ porque tenía algunos problemas para los cuales era la solución correcta: necesitaba acceso al hardware al estilo de C y una organización del programa como la de Simula. Resultó que varios de mis colegas tenían las mismas necesidades. De hecho, entonces ni siquiera era obvio que C triunfaría. En ese tiempo, C estaba ganando adeptos, pero mucha gente aún consideraba a la programación de sistemas seria, en cualquier lenguaje que no fuera assembler, como una aventura y habían varios lenguajes -como C- que proveían de una manera de escribir programación de sistema portable. Uno de aquellos otros pudo haberse vuelto dominante en vez de C.
JB: Antes de C++, ¿fué debido a lo inadecuado de otros lenguajes que, por ejemplo, dijiste "tengo que crear C++"? ¿En esencia, por qué creaste C++?
BS: Sí, creé C++ en respuesta a una necesidad real: Los lenguajes de programación de esa época no soportaban abstracción para tareas difíciles de programación de sistemas de la forma en que yo lo necesitaba. Fué tratando de separa las funciones del kernel de Unix, de tal forma en que pudieran ejecutarse en distintos procesadores de un computador multi-procesador o en un cluster.
JB: Personalmente, ¿piensas que la POO es el mejor paradigma de programación para sistemas de software a gran escala, en oposición a la programación literal, la programación funcional, la programación procedural, etc.?¿Por qué?
BS: Ningún paradigma de programación es el mejor para todo. Lo que tu tienes es un problema y una solución para él; luego, tratas de amoldar la solución en el código ejecutable. Haces eso con restricciones de recursos y preocupación por la mantenibilidad. A veces, este amoldamiento se puede lograr de mejor manera con POO, a veces con Programación Gerérica o con Programación Funcional, etc.
La POO es apropiada donde puedes organizar algunos conceptos clave dentro de una jerarquía y manipular las clases resultantes a través de una base común de clases. Por favor nota para mí es lo mismo OO que le uso tradicional de la encapsulación, herencia, y polimorfismo (en tiempo de ejecución). Tu puedes elegir definiciones alternativas, pero esta es una historia bien definida.
No creo que la Programación Literal es un paradigma como los otros que mencionaste. Es más un método de desarrollo como el Desarrollo manejado por pruebas.