Bjarne Stroustrup

Revisión del 08:43 31 may 2011 de Colon1 jc (discusión | contribuciones) (Trayectoria investigativa)
Bjarne Stroustrup
Información sobre la plantilla
Bjarne.jpg
NombreBjarne Stroustrup
Nacimiento30 de diciembre de 1950
Aarhus, Bandera de Dinamarca Dinamarca
OcupaciónIngeniero

Bjarne Stroustrup.Es un científico informático y Catedrático de Informática del Colegio de Ingeniería de la Universidad A&M de Texas. Ha destacado por desarrollar el lenguaje de programación C++.

Biografía

Nacimiento

Nació el 30 de diciembre de 1950 en Aarhus, Dinamarca.

Trayectoria investigativa

Stroustrup escribió el considerado por muchos como el texto introductorio de referencia para el lenguaje, su título original es The C++ Programming Language, el cuál alcanza actualmente su tercera edición. Existe una versión especial editada en 2000, aunque no figuran en ella cambios significativos respecto al original. Este último texto ha sido revisado tanto para reflejar la evolución del lenguaje, como el trabajo del comité de estándares de C++. Stroustrup es un cand. scient. (el equivalente danés a un máster) en Matemáticas y ciencias de la computación (1979) por la Universidad de Aarhus, Dinamarca, y Doctor en ciencias de la Computación (1979 por la Universidad de Cambridge, Inglaterra. Anteriormente trabajó a la cabeza del departamento de Investigación en Programación de los laboratorios Bell de AT&T, desde su creación hasta finales de 2002.

Necesitaba una herramienta para diseñar e implementar una versión distribuida del kernel de Unix. En ese momento, 1979, no existía dicha herramienta. Necesitaba algo que pudiera expresar la estructura del programa, manipulara directamente el hardware, y que sea lo suficientemente eficiente y portable para programación de sistemas importantes.

Pueden encontrar más información y detalles acerda del diseño y evolución de C++ en mi notas de HOPL (Histoy of Programming Languages - Historia de los Lenguajes de Programación), las cuales pueden encontrar en mi página personal y en mi libro "El Diseño y Evolución de C++".

Los dos problemas que me vienen a la mente eran poder simular la infraestructura de comunicación inter-procesos para un sistema distribuido o un sistema de memoria compartida (para determinar qué servicios del Sistema Operativo podríamos correr en cada procesador por separado); y el escribir los drivers de red para este sistema. Obviamente, como Unix estaba escrito en C, también quería un alto grado de compatiblidad con C. Muy tempranamente, desde 1980 en adelante, fue utilizado por otras personas (con mi ayuda) para simular distintos protocolos de red y algoritmos de gestión de tráfico.

Mientras "C con Clases" (el ancestro de C++) se volvia popular dentro de Bell Labs, algunas personas pensaban que era un nombre demasiado largo y comenzaron a llamarlo "C".

Esto significaba que tenían que aclarar a lo que se referián cuando necesitaban distinguirlo del lenguaje de Dennis Rithcie, al cual llamaban "Viejo C", "C original", y así. Algunos pensaban que era una falta de respeto hacia Dennis (ni él ni yo lo sentiamos así) y un día recibí un "pedido" de Bell Labs para que le cambiara el nombre. Como resultado, lo nombramos C84 por un tiempo. Este cambio no ayudó demasiado, así que pedí ayuda por sugerencias y elegí C++ de una lista de candidatos. Todos están de acuerdo que, semánticamente hablando, ++C hubiera sido todavía mejor, pero habría ocasionado demasiados problemas para quienes no conocen la sintaxis.

Para empezar, ¿cuales deberían ser las reglas fundamentales del lenguaje? ¿Qué debía estar en el lenguaje, y que debia quedar afuera? La mayoría quiere un lenguaje pequeño que brinde todas las características que encuentran útil en el resto de los lenguajes. Desafortunadamente, eso es imposible.

Luego de un corto tiempo de confiar en la suerte y el buen gusto, me decidí por un grupo de "reglas a ojo" que pretendian asegurar que los programas en C++ fueran a la vez elegantes (como en Simula67, el lenguaje que presentó la programación orientada a objetos) y efcientes para la programación de sistemas (como C). Obviamente, no todos los programas logran ambas cosas, pero la idea era (y es) lograr que un desarrollador competente pueda expresar practicamente cualquier idea directamente y lograr su ejecución con un mínimo overhead (cero overheads comparando contra una versión en C).

Convencer a la comunidad de programadores del valor del chequeo de tipos fue sorprendemente dificil. La idea de chequear los argumentos de una función contra una delcaración de la función fue resistida fuertemente - al menos hasta que C adoptó la idea.

En la actualidad la programación orientada a objetos está por todos lados, por lo que a las personas les cuesta creer que me fue imposible convencer a las personas de su utilidad hasta que finalmente agregué funciones virtuales y demostré que eran lo suficientemente rápidas para usos muy demandantes. El enfoque de C++ hacia la Programación Orientada a Objetos fue (y es) básicamente el mismo que Simula, con simplificaciones y mejores de peformance.

La compatibilidad con C fue (y es) una gran fuente de problemas y fortalezas. Al ser compatible con C, los desarrolladores de C++ tenian garantizada una gran cantidad de características que usualmente faltan en las primeras versiones de los lenguajes, y acceso directo (y efeciente) a una gran cantidad de código - no sólo código en C, sino también en Fortran y más ya que las convenciones de llamadas de C eran simples y similares a las que soportaban otros lenguajes. Después de todo, como solía decir, la reutilización comienza por utilizar algo que ya existe, en vez de esperar que alguien desarrolle nuevos componentes reutilizables. Por otro lado, C tiene varias vueltas sintácticas y semánticas, por lo que seguir a la par de C mientras fue evolucionando no es tarea fácil.

La mayoría de las diferencias estuvieron en la técnica de implementación. C con Clases se implentó con un preprocesador, mientras que C++ requiere un compilador apropiado (por lo cual escribí uno). Era fácil transcribir programas en C con Clases hacia C++, pero los lenguajes no eran 100% compatibles. Desde un punto de vista del lenguaje, la mayor mejora fue la incorporación de funciones virtuales, lo cual permitió la programación orientada a objetos clásica. También se agregó la sobrecarga (incluyendo la sobrecarga de operadores). Vale destacar que las características fundamentales de C++ para la gestión de recursos generales, constructores y destructores ya se encontraban en las primeras versiones de C con Clases. Por otro lado, los templates (y las excepciones) se añadieron en versiones algo posteriores de C++ (1989); antes de esto, soliamos usar macros para expresar ideas generales de programación.

No tenía el beneficio de casi 30 años de experiencia con C++, y mucho de lo que sé actualmente es el resultado de experimentar con versiones anteriores de C++. Por otro lado, en aquel entonces básicamente no tenía recursos (sólo yo y mi tiempo libre), por lo tanto si dijera (correctamente) que las funciones virtuales, los templates (con "conceptos", tal como los ofrece C++0x) y las excepciones hubieran hecho de C++85 un mejor lenguaje, estaría no sólo sugiriendo algo que no hubiera sabido diseñar en 1980, sino también que, aunque hubiera encontrado el diseño perfecto de forma mágica, no lo hubiera podido implementar en un tiempo razonable.

Creo que hubiera sido posible lanzar una mejor librería estandard en 1985 junto a C++ 1.0, la cual hubiera mejorado mucho con el tiempo. Con "mejor librería" me refiero a una librería con clases que incluyeran una mejora versión de funciones para soportar concurrencia y un set de clases de containers.

Más tarde, hubiera desarrrolaldo templates (claves para el estilo de programación genérico de C++) antes que herencia múltiple (no una gran característica, como muchos la con Trabajé duro en la estandarización durante años (1989-1997); ahora estoy trabajando en el sucesor del estándard: C++0x. Evitar que un lenguaje popular se fragmente en dialectos es una tarea dificil y esencial. C++ no tiene un dueño o un "papá rico" para brindar fuerza de desarrollo, librerías "gratis" y marketing. El comité de estandarización ISO fue esencial para el crecimiento de la comunidad de C++.

En general no pienso en los programas como "interesantes". Me fijo más en los sistemas completos, de los cuales algunas partes están escritos en C++. Entre estos me vienen a la mente el sub-sistema de manejo autónomo del Mars Rover de la NASA, el motor de búsqueda de Google, y el sistema de reservas de vuelos de Amadeus. Mirando el código aislado, creo que la librería STL de Alexander Stepanov (containers, iteradores, y librerias parte de la librería estándard de C++) está entre las porciones de código más interesantes, útiles e influeyentes para C++ que haya visto.
Bjarne Stroustrup

Premios y logros

1990 - Fue nombrado uno de los "doce mejores científicos jóvenes de América" por la revista Fortune.

1993 - Premio Grace Murray Hopper de la ACM (Association for Computing Machinery) por sus primeros trabajos en C++.

1995 - La revista Byte nombró a Stroustrup una de las veinte personas que más ha influido en la industria informática.

1996 - Stroustrup fue nombrado socio en AT&T: "Por sus fundamentales contribuciones al desarrollo de lenguajes informáticos y programación orientada a objetos, culminando en el lenguaje de programación C++."

1998 - Stroustrup fue nombrado socio en ACM: "Por sus primeros trabajos construyendo los cimientos del lenguaje de programación C++. Basándose en los pilares y el continuado esfuerzo del Dr. Stroustrup, C++ se ha convertido en el lenguaje de programación más influyente de la historia de la informática".

2004 - Academian Nacional (Estados Unidos) de Ingeniería, 2004.

2004 - Premio 200 al Empresario en Informática de la IEEE Computer Society.

2005 - William Procter Prize for Scientific Achievement

2008 - Dr. Dobb's Excellence in Programming award.

Fuentes

http://www.dosideas.com/noticias/actualidad/109-entrevista-a-bjarne-stroustrup-creador-de-c.html http://es.wikipedia.org/wiki/Bjarne_Stroustrup http://thinkwasabi.com/2006/02/wiki-personaje-bjarne-stroustrup/ http://www.freewebs.com/nando_cdl/parcial1.htm http://www.angelfire.com/planet/andres88/BjarneStroustrup.htm