¿Por qué diagnosticar la muerte de los lenguajes?

Sigo con interés los aportes que se hacen a este sitio. Quizá soy uno de sus seguidores que más juventud acumulada tiene (juventud acumulada!=viejo) y por esa razón me interesó el hilo de discusión acerca de "la muerte de algunos lenguajes de programación". Por cierto que el hilo coincide con las celebraciones de estos días (Halloween y el Día de muertos) y quizá a algunos se les aparezca el lenguaje C disfrazado de "apuntador mortal" o C++ con su disfraz de "herencia múltiple de implementación".

Me ha tocado trabajar con varios lenguajes de programación; de propósito general, y algunos lenguajes para resolver problemas en contextos específicos donde no existe otra alternativa y quizá por eso me llamó la atención lo que algunos comentaron sobre alguno que otro lenguaje, que hoy en día siguen siendo de batalla en la industria de software y que algunos consideran muertos. Tal es el caso por poner un ejemplo de C y C++, que siguen siendo los lenguajes para escribir sistemas operativos, que en mi humilde opinión es el tipo de software donde el diseñador y programador tiene que tener la punta del lápiz más afilada. El resto del software que escribimos depende de lo "bueno" que sea el escrito para el sistema operativo.

No es nada nuevo el criticar con "saña" a algunos lenguajes de programación. Los "grandes" de la computación lo han hecho, y en ocasiones han dañado de manera considerable el progreso y futuro de algunos lenguajes. Edsger Djisktra en 1975, en una de sus notas tituladas "How do we tell truths that might hurt? escribía entre otras cosas:

Respecto a FORTRAN:

FORTRAN --"the infantile disorder"--, by now nearly 20 years old, is hopelessly inadequate for whatever computer application you have in mind today: it is now too clumsy, too risky, and too expensive to use.

Respecto a PL/1:

PL/I --"the fatal disease"-- belongs more to the problem set than to the solution set.

Respecto a BASIC:

It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration

Respecto a COBOL:

The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence.

Respecto a APL:

APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums.

Anthony Hoare se refirió al lenguaje Ada (el lenguaje estándar por muchos años para los proyectos del cliente supremo de software en el mundo: el Departamento de Defensa de los Estados Unidos) de esta forma: "The future of mankind was at stake if we were to use Ada". Mathew Heaney escribió en una ocasión: "Tony Hoare severely criticized Ada in his Turing Award lecture, saying (literally) that the future of mankind was at stake if we were to use Ada, and that Ada was "doomed to succed". Who's gonna argue with Hoare. If he said it, it mus be true right?

Más recientemente, en 2004 Alan Kay se refirió a Java: "If the pros at Sun had had a chance to fix Java, the world would be a much more pleasant place. This is not secret knowledge. It’s just secret to this pop culture.

En la actualidad, después de un simple "googlazo", seguramente encontraremos críticas más severas no sólo a lenguajes "adultos" sino también a lenguajes "adolescentes" de amplio uso en la industria. Son muchos los "forenses" que han dictaminado la muerte de Java y de otros lenguajes importantes. En ocasiones tales comentarios carecen de sustento (otra vez en mi humilde opinión), presentando ejemplos de código de esos lenguajes y criticando lo que en ellos sucede, para después presentar la "solución mágica" en el lenguaje que se promueve. Muchas veces de lo que se trata es de una sintaxis más simple (lo que por supuesto no deja de ser un gran aporte) y a veces se escribe incorrectamente el código en el lenguaje "sentenciado a muerte", para entonces promover la magia del nuevo lenguaje. Ejemplos de este tipo he visto en algunos libros. Me referiré a uno de ellos en mi próximo aporte.

Soy de los que opina que todo "constructor" de software debe aprender un nuevo lenguaje de forma periódica en su vida activa. Muchos consideran que dos años es un tiempo aceptable para entrarle con fuerza a otro lenguaje y, también a un nuevo paradigma. Por suerte, los lenguajes que hoy se anuncian como "dinámicos" están promoviendo mucho la programación funcional, la programación concurrente y la metaprogramación y lo están haciendo de una forma inteligente: extendiendo los lenguajes actuales, de forma que la curva de aprendizaje no sea tan costosa. El éxito de C++ como el lenguaje que más promovió en la industria la programación orientada a objetos, se debe precisamente a eso: a tomar al lenguaje C y extenderlo.

Entre otras actividades, me dedico a la academia. Entre otras materias, me ha tocado enseñar programación orientada a objetos en varios lenguajes de programación, y entre otras cosas siempre insisto en el proceso de convertir el código fuente a ejecutable. No pocas veces me he encontrado con el problema de que algunos estudiantes que ya programan, desconocen ese proceso, fundamentalmente en la fase de edición de enlace, cuando nuestro programa hace uso de bibliotecas de funciones y bibliotecas de clases externas a nuestro código. Es difícil que quien ha usado lenguajes como C y C++ y, además de un IDE hace uso de un shell, esté en ese caso.

En lo personal, me gustaría escribir y hablar Latin, a pesar de ser una lengua muerta.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Nopalin

Temporadas...

Como casi todo en la vida, todo nace con un propósito, incluidos los lenguajes de programación. Se hace con el fin de atacar cierto problema que se está viviendo en la época, que con el paso de los años, aparecen nuevos problemas y por ende nuevos lenguages. Esto nunca va a cambiar ya que los problemas nunca van a terminar, y de alguna forma tienen que marcarlos para darle paso a los nuevos, como cuando microsoft dijo que ya no le daría soporte a window xp para que los usuarios cambiaran a windows 7. Muchas veces es mas marketing que soluciones.

sobres

En ocasiones es por llamar

En ocasiones es por llamar la atención (la mayoría de los googlazos que das y encuentras de "Why does [inserte lenguaje aquí] sucks?") y aquí tenemos el máximo ejemplo. Otras veces es por el paradigma del lenguaje que no se lleva con el paradigma del programador que lo usa y el ejemplo está aquí.

En fin, muchos somos críticos porqué podemos y cómo podemos lo hacemos, jaja. Saludos.

Variedad

Yo considero que en las escuelas se les debe de mostrar una variedad de lenguajes de programacion y de enfoques que permitan al programador tener opciones, de esa forma no se ata uno a un solo paradigma, modelo, enfoque, etc.
Y cuando egresen, tendrian mas variedad de opciones, pienso yo que seria mas facil que haya rotacion de personal como programador o ingeniero de software en proyectos de Java que de Cobol por ejemplo, lo que a la larga da mas estabilidad laboral, mas facilidad para sacar creditos, comprar cosas, etc.