El mundo está lleno de cosas que tienen muchas variaciones diferentes: procesadores de texto, automóviles, diseños para el hogar, bebidas, dulces, bolígrafos, palas, etc. Las razones por las que tenemos tantos pueden resumirse en algunos principios:
- Alguien piensa que puede mejorar los productos existentes.
- Se requiere un diseño diferente por consideraciones locales (piense: casas sobre pilotes versus casas sobre losas de concreto)
- Una nueva categoría de producto satisface una necesidad donde antes no existía
Ingrese a cualquier tienda de suministros de oficina y mire la sección "instrumento de escritura": hay cientos de variedades de bolígrafos. Todos hacen aproximadamente lo mismo: entregar tinta a una superficie de escritura. Pero cada bolígrafo que se ve a la venta está allí porque es uno de los tres motivos anteriores.
- Las plumas estilográficas de cartucho son una mejora en las plumas estilográficas sumergidas, que a su vez son una mejora en las plumas de plumas.
- La NASA necesitaba un bolígrafo que pudiera escribir en ausencia de gravedad, por lo que se inventó el bolígrafo a presión.
- La primera pluma en sí misma puede haber sido un palo puntiagudo sumergido en alquitrán o sangre; Antes de eso, la gente raspaba rocas o untaba pigmentos en las paredes con pieles. (Solo una suposición.)
La evolución de los bolígrafos continuará ya que ningún producto se ajusta a las necesidades de cada usuario. Algunas plumas son baratas y desechables, algunas son caras y están construidas con materiales de alta calidad; algunos usan geles, algunos usan tinta, algunos usan pigmentos; algunos tienen tapas desenroscables, algunos no tienen tapas en absoluto; barriles anchos, barriles estrechos, barriles redondos, barriles cuadrados; corto largo; rojo, blanco, negro, azul Etcétera etcétera.
Pero basta de bolígrafos.
Nuestra miríada actual de lenguajes de programación se remonta a los primeros: los códigos de máquina numéricos para las primeras computadoras en la década de 1940. Primitivo, difícil de usar y laborioso para ingresar a la computadora, pero hicieron el trabajo. No pasó mucho tiempo después de que los programadores asignaron palabras mnemotécnicas (como AGREGAR, LLAMAR, CARGAR) a los códigos de máquina, dando origen a la clase de idiomas llamados "lenguajes de ensamblaje".
Las diferentes arquitecturas de procesador requerían diferentes códigos mnemónicos, dependiendo de las características específicas de las máquinas subyacentes. Tener en cuenta estas diferencias significaba inventar diferentes lenguajes de ensamblaje.
(Quizás a estas alturas puedas ver a dónde va esto ...)
Los programadores observaron sus programas de lenguaje ensamblador y vieron patrones: las mismas secuencias de instrucciones se usarían para formar bucles, condicionales, asignación de variables, llamadas a funciones, etc. Así nacieron los lenguajes de programación procesal. Estos idiomas encapsulan grupos de instrucciones bajo términos generales como "if", "while", "let", etc.
De un análisis matemático de la programación de computadoras surgieron los lenguajes funcionales, una forma completamente nueva de ver la computación. No mejor, no peor, solo diferente.
Y luego está orientado a objetos, estáticamente tipado, tipado dinámicamente, enlace tardío, enlace temprano, bajo uso de memoria, alto uso de memoria, paralelizable, idiomas para usos específicos, y así sucesivamente.
En última instancia, tenemos diferentes lenguajes de programación porque queremos diferentes lenguajes de programación. Cada diseñador de idiomas tiene sus propias ideas sobre cómo se verá y funcionará su lenguaje "soñado". La diversidad es algo bueno .