Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


Razones de la invención del C++


A continuación se incluye la trascripción íntegra de un e-mail, que bajo el título "La conspiración del C++", reproduce una entrevista en la que Stroustrup explica las razones que le llevaron a inventar el C++.

Nota: me fue remitido por un lector, y lo reproduzco "tal cual"; me he limitado a eliminar la dirección de origen, dado que no puedo garantizar su autenticidad (ni su contenido).  Juzguen ustedes mismos.

La conspiracion C++Date:  Tue, 15 May 2001 14:03:01 -0300
From:  XXXXXXXX XXXXXXX <yyyyyy@yyyyy.com.ar>
To:  Lista PC-Host <pchost@yahoogroups.com>
Reply-To:  pchost@yahoogroups.com
Organization:  zzzzzz
Subject:[pchost] No tiene desperdicio


-----BEGIN PGP SIGNED MESSAGE-----

Hola Pcjos!

Este ¿apócrifo? no tiene desperdicio, no se lo pierdan que toca muchos
de los temas que hace poco se tocaron acá, me cagué de risa

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Queridos compañeros del mundillo de la informática... a ver que os parece esto.  Es difícil de creer, pero lo que cuenta es una verdad como un templo.
Es una entrevista que no salió a la luz en su momento.

Aquí empieza:

"Esta mañana me ha llegado a la cuenta del trabajo por parte de un buen amigo y muy bien situado en Motorola-USA, este mensaje.  Lo de Motorola no lo aclaro con ánimos rimbombantes, sino para dar cierta credibilidad al asunto,  aunque yo particularmente todavía no doy crédito.
Bueno, al lío: leed lo que dice el autor de C++."

***********************************************
ENTREVISTA A BJARNE STROUSTRUP
----------------------------------------------------------

Traducción:

El 1 de Enero de 1998, Bjarne Stroustrup dió una entrevista a la revista de Informática del IEEE.  Naturalmente, los editores pensaron que el estaba dando una visión retrospectiva de los siete anos de diseño orientado a objetos, usando el lenguaje que él mismo había creado.

Al finalizar la entrevista, el entrevistador consiguió más de lo que había pactado en un principio, y consecuentemente, el editor decidió suprimir los contenidos 'por el bien de la industria'.  Pero como suele suceder, la información se filtró...

Aquí está una completa transcripción de lo que se dijo, no editado, no ensayado, es decir que no es como las entrevistas planeadas...

Podeis dudar si es cierto o no, pero da que pensar.

Lo encontraréis interesante...

Int: Bien, hace unos pocos anos que cambió el mundo del diseño de software. ¿Cómo se siente mirando atrás?

BS: En este momento estaba pensando en aquellos días, justo antes de que llegases. ¿Los recuerdas? Todo el mundo escribía en C y el problema era que eran demasiado buenos... Las Universidades eran demasiado buenas enseñándolo también. Se estaban graduando programadores competentes a una velocidad de vértigo. Esa era la causa del problema.

Int: Problema?

BS: Sí, problema. ¿Recuerdas cuando todos programaban en Cobol?

Int: Desde luego. Yo también lo hice.

BS: Bien, al principio, esos tipos eran como semidioses. Sus salarios eran altos, y eran tratados como la realeza...

Int: Aquellos fueron buenos tiempos, ¿eh?

BS: Exacto. Pero, ¿qué paso?.  IBM se cansó de ello, e invirtió millones en entrenar a programadores, hasta el punto que podías comprar una docena por medio dolar...

Int: Eso es por lo que me fui. Los salarios bajaron en un año hasta el punto de que el trabajo de periodista está mejor pagado.

BS: Exactamente. Bien, lo mismo paso con los programadores de C...

Int: Ya veo, pero ¿a donde quiere llegar?

BS: Bien, un día, mientras estaba sentado en la oficina, pensaba en este pequeño esquema, que podría inclinar la balanza un poquito. Pense '¿Qué ocurriría si existiese un lenguaje tan complicado, tan difícil de aprender, que nadie fuese capaz de inundar el mercado de programadores?'.  Empecé cogiendo varias ideas del X10, ya sabes, X window.  Es una auténtica pesadilla de sistemas gráficos, que sólo se ejecutaba en aquellas cosas Sun 3/60... tenía todos los ingredientes que yo buscaba.  Una sintaxis ridículamente compleja, funciones oscuras y estructuras pseudo-OO (Orientada a Objetos). Incluso ahora nadie escribe en código nativo para las X-Window.  Motif es el único camino a seguir si quieres mantener la cordura.

Int: ¿Está bromeando?

BS: Ni un pelo. De hecho, existe otro problema... Unix está escrito en C, Lo que significa que un programador en C puede convertirse fácilmente en un programador de sistemas. ¿Recuerdas el dinero que un programador de sistemas solía conseguir?

Int: Puede apostar por ello. Es lo que solía hacer yo...

BS: Ok, por lo tanto, este nuevo lenguaje tenía que divorciarse por si mismo de Unix, ocultando las llamadas al sistema.  Esto podría permitir a tipos que sólo conocían el DOS ganarse la vida decentemente...

Int: No me puedo creer que haya dicho eso...

BS: Bueno, ha llovido mucho desde entonces.  Ahora creo que la mayoría de la gente se habrá figurado que C++ es una pérdida de tiempo, pero debo decir que han tardado más en darse cuenta de lo que pensaba.

Int: Entonces, ¿qué hizo exactamente?

BS:  Se suponía que tenía que ser una broma, nunca pensé que la gente se tomase el libro en serio.  Cualquiera con dos dedos de frente puede ver que la programación orientada a objetos es anti intuitiva, ilógica e ineficiente...

Int: ¡¿¡¿Qué?!?!

BS: Y como el código reutilizable... ¿Cuando has oído de una compañía que reutilice su código?

Int: Bien, nunca, pero...

BS: Entonces estás de acuerdo.  Recuerda, algunos lo intentaron al principio.  Había esa compañía de Oregón, creo que se llamaba Mentor Graphics, que reventó intentando reescribir todo en C++ en el 90 o 91.  Lo siento realmente por ellos, pero pensé que los demás aprenderían de sus errores.

Int: Obviamente no lo hicieron, ¿verdad?

BS: Ni lo más mínimo.  El problema es que la mayoría de las empresas se callaron sus mayores disparates, y explicar 30 millones de dólares de perdidas a los accionistas podría haber sido difícil...  Démosles el reconocimiento que merecen, finalmente consiguieron hacer que funcionase.

Int: ¿Lo hicieron?. Bien eso demuestra que la OO funciona...

BS: Casi.  El ejecutable era tan gigantesco que tardaba unos cinco minutos en cargar en una estación de trabajo de HP con 128 MB de RAM.  Iba tan rápido como un triciclo.  Creí que sería un escollo insalvable pero nadie se preocupó.  SUN y HP estaban demasiado alegres de vender enormes y poderosas máquinas con gigantescos recursos para ejecutar programas triviales.  Ya sabes, cuando hicimos nuestro primer compilador de C++, en AT&T, compilé el clásico 'Hello World', y no me podía creer el tamaño del ejecutable.  2.1 MB.

Int: ¡¿¡¿Qué?!?!. Bueno, los compiladores han mejorado mucho desde entonces...

BS: ¿Lo han hecho? Inténtalo en la última revisión de C++, la diferencia no será mayor que medio mega.  Además existen multitud de ejemplos actuales en todo el mundo.  British Telecom tuvo un desastre mayor en sus manos, pero, afortunadamente, se deshicieron de ello y comenzaron de nuevo.  Tuvieron más suerte que Australian Telecom.  Ahora he oído que Siemens está construyendo un dinosaurio y se empiezan a preocupar porque los recursos hardware no hacen más que crecer para hacer funcionar ejecutables típicos. ¿No es una delicia la herencia múltiple?

Int: Bien, pero C++ es un lenguaje avanzado ....

BS: ¡¿¡¿¡¿Realmente crees eso?!?!?!. ¿Te has sentado alguna vez y te has puesto a trabajar en un proyecto C++? Esto es lo que sucede:  Primero he puesto las suficientes trampas para asegurarme de que sólo los proyectos más triviales funcionen a la primera. Coge la sobrecarga de operadores.  Al final del proyecto casi todos los módulos lo tienen, normalmente los programadores sienten que deberían hacerlo así porque es como les enseñaron en sus cursos de aprendizaje. El mismo operador entonces significa cosas diferentes en cada módulo. Intenta poner unos cuantos juntos, cuando tengas unos cientos de módulos. Y para la ocultación de datos.  Dios, a veces no puedo parar de reirme cuando oigo los problemas que algunas empresas han tenido al hacer a sus módulos comunicarse entre sí.  Creo que el término 'sinergético' fue especialmente creado para retorcer un cuchillo en las costillas del director de proyecto...

Int: Tengo que decir que me siento bastante pasmado por todo esto. ¿Dice que consiguió subir el salario de los programadores?  Eso es inmoral.

BS: No del todo.  Cada uno tiene su opción. Yo no esperaba que la cosa se me fuese tanto de las manos.  De cualquier forma acerté.  C++ se está muriendo ahora, pero los programadores todavía conservan sus sueldos altos. Especialmente esos pobres diablos que tienen que mantener toda esta majadería. ¿Comprendes que es imposible mantener un gran módulo en C++ si no lo has escrito tú mismo?

Int: ¿Cómo?

BS: Estás fuera de juego, ¿verdad?. ¿Recuerdas 'typedef'?

Int: Sí, desde luego.

BS: ¿Recuerdas cuanto tiempo se perdía buscando a tientas en las cabeceras sólo para darse cuenta de que 'RoofRaised' era un número de doble precisión?.  Bien, imagina el tiempo que te puedes tirar para encontrar todos los typedefs implícitos en todas las clases en un gran proyecto.

Int: ¿En qué se basa para creer que ha tenido éxito?

BS: ¿Te acuerdas de la duración media de un proyecto en C?.  Unos 6 meses.  No mucho para que un tipo con una mujer e hijos pueda conseguir un nivel de vida decente.  Coge el mismo proyecto, realízalo en C++ y ¿qué obtienes?. Te lo diré. Uno o dos años. ¿No es grandioso? Mucha más seguridad laboral sólo por un error de juicio. Y una cosa más. Las universidades no han estado enseñando C desde hace mucho tiempo, lo que produce un descenso del numero de buenos programadores en C.  Especialmente de los que saben acerca de la programación en sistemas Unix. ¿Cuantos tipos sabrían qué hacer con un 'malloc', cuando han estado usando 'new' durante estos años y nunca se han preocupado de chequear el código de retorno?.  De hecho la mayoría de los programadores en C++ pasan de los códigos que les devuelven las funciones. ¿Qué pasó con el '-1'?.  Al menos sabías que tenías un error, sin enredarte con 'throw', 'catch', 'try'...

Int: Pero seguramente la herencia salve un montón de tiempo.

BS: ¿Lo hace?. ¿Te has fijado en la diferencia entre un proyecto en C y el mismo en C++?  La etapa en la que se desarrolla un plan en un proyecto en C++ es tres veces superior.  Precisamente para asegurarse de que todo lo que deba heredarse, lo hace, lo que no, no.  Y aun así sigue dando fallos. ¿Quien ha oído hablar de la pérdida de memoria en un programa en C?  Ahora se ha creado una auténtica industria especializada en encontrarlas.  Muchas empresas se rinden y sacan el producto, sabiendo que pierde como un colador, simplemente para reducir el gasto de buscar todas esas fugas de memoria.

Int: Hay herramientas...

BS: La mayoría escritas en C++.

Int: Si publicamos esto, probablemente le lincharán. ¿Se da cuenta?

BS: Lo dudo. Como dije, C++ está en su fase descendente ahora y ninguna compañía en su sano juicio comenzaría un proyecto en C++ sin una prueba piloto.  Eso debería convencerles de que es un camino al desastre. Si no lo hace, entonces se merecen todo lo que les pase. ¿Ya sabes?, yo intente convencer a Dennis Ritchie a reescribir Unix en C++...

Int: Oh Dios. ¿Qué dijo?

BS: Afortunadamente tiene un buen sentido del humor. Creo que tanto el como Brian se figuraban lo que estaba haciendo en aquellos dias, y nunca empezaron el proyecto.  Me dijo que me ayudaría a escribir una version en
C++ de DOS, si estaba interesado...

Int: ¿Lo estaba?

BS: De hecho ya he escrito DOS en C++, te pasaré una demo cuando pueda.  Lo tengo ejecutándose en una Sparc 20 en la sala de ordenadores.  Va como un cohete en 4 CPUs, y solo ocupa 70 megas de disco...

Int: ¿Cómo se comporta en un PC?

BS: Ahora estás bromeando. ¿No has visto Windows '95?  Creo que es mi mayor éxito.  Casi acaba con la partida antes de que estuviese preparado.

Int: La idea de Unix++ me ha hecho pensar.  Quizás haya alguien ahí fuera intentándolo.

BS: No después de leer esta entrevista.

Int: Lo siento, pero no nos veo capaces de publicar esto.

BS: Pero es la historia del siglo.  Sólo quiero ser recordado por mis compañeros programadores, por lo que he hecho por ellos. ¿Sabes cuanto puede conseguir un programador de C++ hoy día?

Int: Lo último que oí fue algo como unos $70 - $80 la hora para uno realmente bueno...

BS: ¿Lo ves?. Y se los gana a pulso.  Seguir la pista de todo lo que he puesto en C++ no es fácil. Y como dije anteriormente, todo programador en C++ se siente impulsado por alguna promesa mística a usar todos los elementos del lenguaje en cada proyecto.  Eso ciertamente me molesta a veces, aunque sirva a mi propósito original.  Casi me ha acabado gustando el lenguaje tras todo este tiempo.

Int: ¿Quiere decir que no era así antes?

BS: Lo odiaba. Parece extraño, ¿no estás de acuerdo?. Pero cuando los beneficios del libro empezaron a llegar... bien, te haces una idea...

Int: Sólo un minuto. ¿Que hay de las referencias?. Debe admitir que mejoró los punteros de C...

BS: Hmm. Siempre me he preguntado por eso.  Originalmente creí que lo había hecho.  Entonces, un día estaba discutiendo esto con un tipo que escribe en C++ desde el principio.  Dijo que no podía recordar cuales de sus variables estaban o no referenciadas, por lo que siempre usaba punteros.  Dijo que el pequeño asterisco se lo recordaba.

Int: Bien, llegados a este punto suelo decir 'muchas gracias', pero hoy no parece muy adecuado.

BS: Prométeme que publicarás ésto.  Mi conciencia está dando lo mejor de mí mismo estos días.

Int: Se lo haré saber, pero creo que se lo que dirá mi editor...

BS: ¿Quién se lo creería de todas formas?... De todos modos, ¿puedes enviarme una copia de la cinta.?

Int: Descuide, lo haré.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx