La Wikipedia, define a los lenguajes de propósito general, como: Los lenguajes de propósito general, son lenguajes que pueden ser usados para varios propósitos, acceso a bases de datos, comunicación entre computadoras, comunicación entre dispositivos, captura de datos, cálculos matemáticos, diseño de imágenes o páginas.

Era una filosofía completamente válida en la época (dorada) de los 8 bits. Teníamos ensamblador y código máquina para los programas de alto rendimiento, y BASIC para el aprendizaje, y tareas más sencillas.

Siguió siendo válida con DOS y los 16 bits, pero ampliando la variedad. Se usaba ensamblador para programas pequeños y de alto rendimiento, C en aquellos que requerían acceso al hardware de bajo nivel, y también buena eficiencia, BASIC en programas de gestión, y otros más sencillos, y Pascal en un punto medio. En este punto, empezamos a contar con herramientas específicas diseñadas para tareas concretas: dBase/xBase, Derive, …

Con la aparición de Windows se siguió ampliando la oferta, Visual BASIC, que construía sobre un dialecto de BASIC una herramienta capaz de desarrollar aplicaciones Windows de forma sencilla, Delphi que haría lo propio sobre Object Pascal, Visual C++ para software eficiente, Mathlab o Maple para cálculos matemáticos, Fortran para entornos científicos, …

A día de hoy, con tantas plataformas disponibles, seguimos aplicando esa misma filosofía. Así por ejemplo, podemos usar C# en Windows (.NET Framework), Windows Phone, Windows Mobile (.NET Compact Framework), Web (ASP.NET), X-Box (XDK), …

Podemos usar asimismo Java, para aplicaciones de escritorio, applets de navegador, servlets en web, páginas JSP, apps para dispositivos Android, móviles (J2ME), …

Sin embargo, son normalmente tantas las diferencias entre una y otra plataforma, que el basarse en un lenguaje común, apenas nos ayuda, y necesitamos aprender muchas veces nuevos IDE, nuevas clases o jerarquías de clase, nuevos componentes, y a veces, hasta nuevas filosofías de desarrollo.

Es decir, volvemos a utilizar los mismos lenguajes de programación generalistas, para tareas cada vez más concretas, de modo que los dialectos se amplían, y ocurre que digamos un desarrollador Android, no sea capaz de crear una página JSP o viceversa.

La explicación que le doy, es en mi caso sencilla. A nivel de mercado, es mejor basarse en un lenguaje existente, que otros desarrolladores puedan ya conocer, lo que les animará a crear para la nueva plataforma pensando que la curva de aprendizaje será más suave. Aunque como hemos visto, no es del todo cierto. Eso explica porque a ECMAScript, se le rebautizó como Javascript, a pesar de no tener nada en común con él.

Mientras las plataformas sean tan diferentes, y no se cuente con una plataforma que se adapte a ellas, ¿no sería mejor usar un lenguaje específico optimizado para cada tarea?