Los lenguajes de programación son lenguajes formales , pero a diferencia de muchos formalismos, también tienen cierto significado inherente definido por su semántica operativa o, en el caso de los lenguajes de marcado, semántica de presentación . Y los lenguajes de programación, aunque de hecho formales, son muy similares a los lenguajes naturales, en términos de la comunicación que permiten.
Si bien el desarrollo de lenguajes de programación es artificial, los procesos de evolución del lenguaje natural, los préstamos, la mezcla y la mutación tienen contrapartes artificiales bastante claras. Entonces me pregunto: ¿alguna vez ha habido una investigación a gran escala y en profundidad sobre la evolución y el comportamiento de los lenguajes de programación desde la perspectiva de un lingüista ?
fuente
Respuestas:
Recuerde que las gramáticas formales, sin las cuales la programación moderna no podría ser, son el producto de la investigación del lingüista Noam Chomsky .
Un accidente automovilístico me impidió terminar una tesis de graduación sobre el tema que usted pregunta, por lo que no hay referencias que pueda darle, solo una opinión.
Los idiomas hablados evolucionan a cualquier velocidad dependiendo del contexto, y lo hacen de maneras impredecibles como los contextos humanos impredecibles. El resultado de la Segunda Guerra Mundial tuvo enormes efectos en el idioma japonés. Británicos, australianos, sudafricanos y norteamericanos no hablan el mismo idioma. El uso de declinaciones verbales entre lo que solían ser colonias españolas se ha vuelto bastante diferente después de doscientos años de independencia (las ex colonias piensan que el español de España es arcaico ).
Solo la fuerza de la eficiencia sobre la fonética hace que las diferentes palabras utilizadas con diferentes frecuencias en diferentes regiones se pronuncien de manera diferente: las palabras muy comunes se descreman o se escriben mal, y las menos comunes se expresan con la mayor precisión posible.
Los lenguajes naturales, con sus variaciones, matices y evolución, no son aptos para el determinismo que exigimos de las computadoras. (¡Caramba! Dada la similitud de las interpretaciones erróneas y las segundas interpretaciones, parece que no son aptas incluso para las interacciones más simples entre humanos [absteniéndose de citar bromas sobre lo que dice la novia / novio y lo que realmente significa])
fuente
Releí la pregunta y creo que mi respuesta original no la abordó. Aquí hay otro intento.
No, no se ha realizado ninguna investigación seria sobre la lingüística del lenguaje de programación. Se han rastreado linajes de idiomas para dos ramas principales y una rama secundaria:
Para aquellos de nosotros con décadas en el campo, es obvio que los lenguajes de programación se han cruzado y, por lo tanto, uno encuentra la mayoría de los aspectos de cualquier paradigma puro en la mayoría de los lenguajes de programación modernos, los ahora llamados lenguajes de programación multiparadigm : C #, Python, Java, .. .. Incluso los lenguajes funcionales anteriormente puros como OCaml y Haskell incluyen suficientes funciones de procedimiento (a través de mónadas ) y OO para que pueda hacer cualquier cosa.
Lo que sucedió, creo, es que se hizo obvio que era costoso (cuando no tonto) tener que cambiar los lenguajes de programación solo para poder aplicar el paradigma correcto a un subproblema dado.
Sigue habiendo una excepción a la tendencia en el área de sistemas altamente paralelos y asíncronos. Allí los lenguajes preferidos son estrictamente funcionales, como Erlang , probablemente porque es más fácil pensar funcionalmente en sistemas tan complejos.
La parte no paradigmática de la evolución ha sido la sintaxis. Los lenguajes que fomentaron o incluso permitieron programas crípticos se han utilizado cada vez menos ( APL , AWK e incluso Perl y LISP). Las sintaxis dominantes hoy en día son las de lenguajes más legibles (en lugar de fácilmente editables) como C (C ++, C #, Java, Objective-C, Scala, Go, IML, CSS, JavaScript y también Python), Pascal (Fortran 90+ x), Smalltalk (Ruby), ML / Miranda (OCaml, Haskell, Erlang) y SGML (HTML, XML).
Este diagrama no es completamente exacto y no está actualizado, pero da una buena idea de cuánto han convergido los lenguajes de programación desde la era del lenguaje por sitio de los años 70.
fuente
Me gustan las respuestas de @ Apalala, que parecen mostrar una convergencia con algunos idiomas principales de uso general. Eso solo tiene sentido, ya que una buena idea en uno puede ser recogida tarde o temprano por los demás.
Lo que agregaría es que cada vez que uno usa un lenguaje, necesariamente lo extiende, agregando términos, transformándolo en un lenguaje más orientado al dominio en cuestión. A veces esto es bastante sencillo, a veces no. Aquí hay un ejemplo que no fue tan sencillo.
Una propiedad que aprecio en un lenguaje de propósito general es la medida en que ayuda en la definición de nuevos lenguajes específicos de dominio.
fuente