¿Ha habido investigaciones sobre lingüística de programación?

18

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  ?

Jon Purdy
fuente
66
Perl fue creado por un lingüista, y es más complicado que el idioma inglés en sí.
Trabajo
1
@Job: Y ha existido durante más de 23 años, se instala de manera predeterminada en innumerables plataformas tipo Unix, y todavía se usa regularmente para todo, desde la automatización (para lo cual es mucho más limpio que el scripting de shell) hasta el desarrollo web (para lo cual es la forma más limpio que PHP) a su propósito original de procesamiento de texto con expresiones regulares (para lo cual ha establecido el estándar de facto de la industria). Claro que es desordenado, pero de una manera que funciona bien para las personas, y ahí es donde, en el desarrollo de Perl, los antecedentes lingüísticos de Larry fueron de gran ayuda.
Jon Purdy
@Job, el efecto se llama "Peor es mejor" en.wikipedia.org/wiki/Worse_is_better .
Apalala
@Aplala: Eso no está relacionado. En todo caso, Perl es un contraejemplo, porque es rica en características y compleja y popular.
Jon Purdy

Respuestas:

6

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])

Apalala
fuente
En nuestra investigación (tuve un tutor) observamos griego y latín porque tenían gramáticas bien definidas que cubrían bien cada papel que una palabra podía tener en una oración por su declinación. No fue lo suficientemente bueno, y los registros de cómo las personas realmente hablaban esos idiomas dicen que era muy diferente de lo que indicaban sus gramáticas, como sucede con los idiomas modernos.
Apalala
44
Con respecto al griego y al latín antiguos, parte del problema aquí es que los textos supervivientes tienden a ser de naturaleza formal: ensayos, contratos, resoluciones legales, etc. leche de camino a casa "y" Jim - recuerda el informe de Casey para las 9 en punto "- la mayoría de estos mensajes transitorios en la antigua Roma se habrán perdido para siempre en el tiempo.
HorusKol
2
Eso no es del todo cierto. Mi madre ocasionalmente habla sobre sus clases de latín en la escuela secundaria y menciona una pieza que tradujeron, una nota de un patricio romano a su conductor de carro. La esencia era "Por favor, durante la hora pico, NO se deje atrapar por el carro de tal y tal. No sé lo que alimenta a sus caballos, pero el hedor es TERRIBLE".
John R. Strohm
4

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.

evolución del lenguaje de programación

Apalala
fuente
1
Esto es mucho más parecido a lo que estaba buscando. Supongo que también estoy buscando una correlación directa con la morfología y la fonología, además de la asociación obvia con la sintaxis que proviene de trabajar con gramáticas formales.
Jon Purdy
@ Jon Bueno, la otra tendencia obvia es que el inglés era y es el lenguaje natural dominante en todos los lenguajes de programación, tanto sintáctica como gramaticalmente. Los lenguajes de programación son de izquierda a derecha, verbo primero. El japonés, por ejemplo, es muy diferente, pero no conozco ningún esfuerzo para desarrollar un lenguaje de programación de estilo japonés. en.wikipedia.org/wiki/Japanese_language#Sentence_structure
Apalala
@Aplala: el orden SOV es común en los lenguajes orientados a la pila, los operadores infix cuentan como SVO y las funciones (Lisp es el ejemplo patológico) son VSO. El inglés definitivamente tiene una fuerte influencia, pero creo que hay otros factores en el trabajo ... Puede que tenga que hacer esta investigación yo mismo. : P
Jon Purdy
@ Jon Sí, me olvidé de Forth y Postcript, que están basados ​​en stack y en SOV. Por favor, avíseme si comienza la investigación. Me especialicé en teoría del lenguaje en la universidad, y los lenguajes de programación siguen siendo mi hobby. Tengo recuerdos de primera mano de muchos de ellos (Simula, Prolog, LISP).
Apalala
@ Jon Puede resultarle interesante que muchos programadores de habla hispana prefieran usar identificadores en español a pesar de que no coinciden con los lenguajes de programación, bibliotecas, marcos, estándares y herramientas que usan. Sus programas terminan en "Spanglish". He visto los gustos con programadores con idiomas nativos en otros idiomas con herencia romana / latina, como los europeos del este. No tengo idea de lo que les gusta hacer a los programadores del Lejano Oriente (chino, japonés, coreano), ruso o árabe.
Apalala
1

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.

Mike Dunlavey
fuente