Les langages de programmation sont des langages formels , mais contrairement à de nombreux formalismes, ils ont également une certaine signification inhérente définie par leur sémantique opérationnelle , ou, dans le cas des langages de balisage, la sémantique de présentation . Et les langages de programmation, bien qu'effectivement formels, sont très similaires aux langages naturels, en termes de communication qu'ils permettent.
Alors que le développement des langages de programmation est artificiel, les processus d'évolution, d'emprunt, de mélange et de mutation en langage naturel ont tous des équivalents artificiels assez clairs. Je me demande donc: y a-t-il déjà eu des recherches approfondies à grande échelle sur l'évolution et le comportement des langages de programmation du point de vue d'un linguiste ?
la source
Réponses:
N'oubliez pas que les grammaires formelles, sans lesquelles la programmation moderne ne pourrait pas être, sont le produit des recherches du linguiste Noam Chomsky .
Un accident de voiture m'a empêché de terminer une thèse de fin d'études sur le sujet que vous posez, donc il n'y a pas de références que je puisse vous donner, seulement un avis.
Les langues parlées évoluent à n'importe quelle vitesse selon le contexte, et elles le font de manière imprévisible comme les contextes humains imprévisibles. Le résultat de la Seconde Guerre mondiale a eu d'énormes effets sur la langue japonaise. Les Britanniques, les Australiens, les Sud-Africains et les Nord-Américains ne parlent pas tout à fait la même langue. L'utilisation des déclinaisons verbales parmi ce qui était autrefois les colonies espagnoles est devenue très différente après deux cents ans d'indépendance (les ex-colonies pensent que l'espagnol d'Espagne est archaïque ).
Seule la force de l'efficacité sur la phonétique fait que les différents mots utilisés avec différentes fréquences sur différentes régions se prononcent différemment: les mots très courants sont écrémés ou mal orthographiés, et les mots moins courants sont énoncés aussi précisément que possible.
Les langues naturelles, avec leurs variations, leurs nuances et leur évolution, ne sont pas adaptées au déterminisme que nous exigeons des ordinateurs. (Gee! Compte tenu de la similitude des interprétations erronées et des secondes interprétations, il semble qu'elles ne conviennent pas même aux interactions les plus simples entre les humains [s'abstenir de citer des blagues sur ce que dit une fille / un petit ami et ce que cela signifie vraiment])
la source
J'ai relu la question et je pense que ma réponse originale ne l'a pas abordée. Voici un autre essai.
Non, il n'y a pas eu de recherche sérieuse sur la linguistique du langage de programmation à ma connaissance. Des lignées linguistiques ont été tracées pour deux branches principales et une sous-branche:
Pour ceux d'entre nous qui ont des décennies dans le domaine, il est évident que les langages de programmation se sont croisés, et que l'on retrouve ainsi la plupart des aspects de tout paradigme pur dans la plupart des langages de programmation modernes, les désormais appelés langages de programmation multiparadigmes : C #, Python, Java, .. .. Même les langages fonctionnels auparavant purs comme OCaml et Haskell incluent suffisamment de fonctionnalités procédurales (via des monades ) et OO pour vous permettre de faire quoi que ce soit.
Ce qui s'est passé, je pense, c'est qu'il est devenu évident qu'il était coûteux (quand ce n'était pas idiot) de devoir changer de langage de programmation juste pour pouvoir appliquer le bon paradigme à un sous-problème donné.
Il reste une exception à la tendance dans le domaine des systèmes hautement parallèles et asynchrones. Là, les langues préférées sont strictement fonctionnelles, comme Erlang , probablement parce qu'il est plus facile de penser fonctionnellement à de tels systèmes complexes.
La partie non paradigmatique de l'évolution a porté sur la syntaxe. Les langages qui encourageaient ou même permettaient des programmes cryptiques sont de moins en moins utilisés ( APL , AWK , et même Perl et LISP). Aujourd'hui, les syntaxes dominantes sont celles de langages plus lisibles (par opposition à des langages facilement inscriptibles) comme C (C ++, C #, Java, Objective-C, Scala, Go, IML, CSS, JavaScript et aussi Python), Pascal (Fortran 90+ x), Smalltalk (Ruby), ML / Miranda (OCaml, Haskell, Erlang) et SGML (HTML, XML).
Ce diagramme n'est pas complètement précis et il n'est pas à jour, mais il donne une bonne idée de la quantité de langages de programmation qui ont convergé depuis l'ère langage par site des années 1970.
la source
J'aime les réponses de @ Apalala, qui semblent montrer une convergence vers quelques langages polyvalents majeurs. Cela n'a de sens que dans la mesure où une bonne idée dans l'une peut tôt ou tard être reprise par les autres.
Ce que j'ajouterais, c'est que chaque fois qu'on utilise une langue, ils l'étendent nécessairement, en ajoutant des termes, en la transformant en une langue plus orientée vers le domaine en question. Parfois, c'est assez simple, parfois non. Voici un exemple qui n'était pas si simple.
Une propriété que j'apprécie dans un langage à usage général est la mesure dans laquelle il aide à la définition de nouveaux langages spécifiques à un domaine.
la source