domingo, 13 de febrero de 2022

¿Por qué hay tantos lenguajes de programación? ¿No podemos crear un solo lenguaje para hacer todo?

Este post es una copia de una respuesta que di en Quora a la pregunta " ¿Por qué hay tantos lenguajes de programación? ¿No podemos crear un solo lenguaje para hacer todo? Sería más fácil, ¿no? , y que se me hizo interesante el tema sobre todo por los temas que hemos tratado en el blog.


Hay que considerar la historia y los motivos para que esto sea así.

La necesidad de poder expresar procesos y "algoritmos" precede incluso a la programación como tal. Es la necesidad de poder definir como se hacen las cosas, de una forma clara y sin ambigüedades.


Los lenguajes declarativos, aquellos en los que expresamos que deseamos obtener y no como obtenerlos preceden en fecha a cualquier tipo de lenguaje e incluso arquitectura avanzada, pero no era posible implementarles en las primeras maquinas.

Las primeras maquinas reales y prácticas que permitían programación era los telares (para generar distintos diseños y formas) y lo que se programaba era el hardware mediante la dispositivo física del mismo.

A parte de lo anterior, el primer concepto de programación era combinaciones de unos y ceros, que la maquina interpretaba como instrucciones.

Evidentemente eso era imposible para comprender para un ser humano (cuando aumentaba la complejidad de un programa), con los que se inventaron mnemotécnicos, para que fuera más "entendible" y se pudiera memorizar de forma más sencilla. Así nació el ensamblador, que es simplemente un conjunto de instrucciones que representa literalmente combinaciones de unos y ceros.

Al principio se hacia el programa en ensamblador y se traducía manualmente en unos o ceros.

Cuando mas evoluciona el hardware (e evoluciona mas cada vez más rápido), fue patente que era necesario que los lenguajes fueran más sencillos y más claros, por que el tiempo era algo fundamente, si podías hacer (y vender) un sistema en la mitad de tiempo, ¿por que ibas a tardar el doble?

Así sugirieron lenguajes como FORTRAN para que los científicos (que no tenían por qué ser ingenieros informáticos), pudieran usar las capacidades de computación de "alta" rendimiento, COBOL para que las instituciones (bancarias principalmente) pudieran gestionar el negocio y la contabilidad de su empresa, y posteriormente C, un lenguaje para programar maquinas de forma genérica, incluso BASIC que su principal atractivo era programar de forma fácil.

La creación de estos lenguajes, junto con el abaratamiento del hardware, provoco un boom de la informática. Todo el mundo de una forma u otra, quería incursionar en este mundo, para distintos fines.

Y eso creo el primer problema del mantenimiento del software; el software era muy difícil de mantener y cuando lo mantenías para cambiar algo las posibilidades de que estropearas algo era extremadamente grande. Hacer software cada vez más complejo y que pudieran cambiarse y modificarse según las necesidades de un negocio, era menos que imposible.

Por eso se crearon nuevos paradigmas y lenguajes cuyo principal atractivo era que son fáciles de mantener, así surgió los paradigmas estructuramos, modular y finalmente orientado a objetos.

Pero las necesidades seguían evolucionando, mientras que antes podrías hacer un sistema en modo texto que resolviera para todas las necesidades de un negocio, ahora se necesitaban que fuera gráfico para simplificar su uso o que este interconectado entre sí y con otros sistemas.

Así nacieron cosas como las bases de datos, las interfaces graficas y la programación orientada a eventos.

Debido a que los sistemas seguían siendo cada vez más complejos surgieron lenguajes cada vez más específicos llamados DSL, lenguajes específicos del domino, que son lenguajes que no tienen un propósito general y están creados para resolver un problema en particular, los más conocidos (y usados) son SQL para generar consultas a base de datos y HTML (y relacionados como CSS) para ofrecer información a través de un navegador web.

También surgieron lenguajes que aunque pudieran ser generales tiene una "especialización", hacia algún lado, PHP para desarrollo web, Java (actualmente) y C# para el desarrollo empresarial, y así.

La constante en todo esto es que las necesidades de desarrollo de software cada vez son más y deben ser resueltas de forma más rápida y los productos que se crean para resolver estás necesidades deben ser adaptables de forma sencillas.

Lo anterior hace que los lenguajes evolucionen buscando ser más abstractos y fáciles de mantener e independientes de las máquinas dónde se ejecutan y por otro lado se crean nuevos lenguajes especializados que aprovechan las capacidades de cada profesional, como la separación de las tecnologías de frontend o backend, o el desarrollo de aplicaciones móviles o de servicios.


Puedes leer los siguientes enlaces donde se habla más de estos motivos e históricamente de la evolución de los lenguajes de programación.


Y particularmente este


Si te ha gustado la entrada, ¡Compártela! ;-)

No hay comentarios:

Publicar un comentario