HispaMSX

[hispamsx] Off-topic: LA gran maravilla de C++

2000-05-30 17:14:30

Hola!

   Ya se que este es un mail un poco fuera de la tematica de la lista,
pero como creo que puede ser de un gran interes para la mayoria de la
gente pues por eso lo mando. Es una entrevista al creador del C++ en la
cual cuenta unas cosas poco mas que increibles, para darse cuenta de como
va la industria informatica hoy en dia:



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 restrospectiva 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 trancripción de lo que se dijo, no editado, no
ensayado, es decir que no es como las entrevistas planeadas...

Lo encontraréis interesante...

Int: Bien, hace unos pocos anos que cambió el mundo del diseno 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 fuí. 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 ¿adonde 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 windows. 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.
Incluso
ahora nadie escribe en codigo nativo para las X-Windows. 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 oido 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 verision de g++, 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 oido 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 modulos comunicarse entre sí. Creo que el término

'sinergético' fué 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 monton 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 oido hablar  de la pérdida de memoria en un programa en C?
Ahora
se ha creado una autentica 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 ejecutandose 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: Ya sabes, 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í fué 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 proposito 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
habia
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
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é.


















<Anterior en la conversación] Conversación actual [Siguiente en la conversación>