Y a-t-il eu des recherches sur la programmation linguistique?

18

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  ?

Jon Purdy
la source
6
Perl a été créé par un linguiste, et c'est plus compliqué que la langue anglaise elle-même.
Job
1
@Job: Et il existe depuis plus de 23 ans, est installé par défaut sur d'innombrables plates-formes de type Unix et est toujours utilisé régulièrement pour tout, de l'automatisation (pour laquelle il est beaucoup plus propre que les scripts shell) au développement Web (pour lequel c'est le moyen plus propre que PHP) à son objectif initial de traitement de texte avec des expressions régulières (pour lequel il a établi la norme industrielle de facto). Bien sûr, c'est désordonné, mais d'une manière qui fonctionne bien pour les gens, et c'est là que le développement linguistique de Larl a été une aubaine.
Jon Purdy
@Job l'effet s'appelle "Worse is Better" en.wikipedia.org/wiki/Worse_is_better .
Apalala
@Aplala: Ce n'est pas lié. Si quoi que ce soit, Perl est un contre-exemple, car il est riche en fonctionnalités , complexe et populaire.
Jon Purdy

Réponses:

6

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

Apalala
la source
Dans notre recherche (j'avais un tuteur), nous avons examiné le grec et le latin car ils avaient des grammaires bien définies qui couvraient bien tous les rôles qu'un mot pouvait avoir dans une phrase par leur déclinaison. Ce n'était pas assez bon, et les enregistrements de la façon dont les gens parlaient réellement ces langues disent que c'était très différent de ce que leurs grammaires indiquaient, comme cela arrive avec les langues modernes.
Apalala
4
En ce qui concerne le grec ancien et le latin - une partie du problème ici est que les textes survivants ont tendance à être de nature formelle - essais, contrats, décisions de justice, etc. Si vous pensez aux messages que nous envoyons au jour le jour - lait sur le chemin du retour "et" Jim - rappelez-vous le rapport Casey pour 9 heures "- la plupart de ces messages transitoires dans la Rome antique auront été perdus à jamais dans le temps.
HorusKol
2
Ce n'est pas tout à fait vrai. Ma mère parle de temps en temps de ses cours de latin au lycée et a mentionné une pièce qu'ils ont traduite, une note d'un patricien romain à son conducteur de char. L'essentiel était "S'il vous plaît, aux heures de pointe, ne vous laissez pas attraper par tel ou tel char. Je ne sais pas de quoi il nourrit ses chevaux, mais la puanteur est TERRIBLE."
John R. Strohm
4

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:

  • Procédure. Von Neuman . Dijkstra . Fortran, Pascal, C.
    • Orienté objet. Simula. Smalltalk.
  • Fonctionnel. McArthy . ZÉZAYER.

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.

évolution du langage de programmation

Apalala
la source
1
Cela ressemble beaucoup plus à ce que je cherchais. Je suppose que je recherche également une corrélation directe avec la morphologie et la phonologie, en plus de l'association évidente avec la syntaxe qui vient du travail avec les grammaires formelles.
Jon Purdy
@Jon Eh bien, l'autre tendance évidente est que l'anglais était et est le langage naturel dominant sous-jacent à tous les langages de programmation, à la fois syntaxiquement et grammaticalement. Les langages de programmation sont de gauche à droite, en premier lieu. Le japonais, par exemple, est très différent, mais je ne connais aucun effort pour développer un langage de programmation de style japonais. en.wikipedia.org/wiki/Japanese_language#Sentence_structure
Apalala
@Aplala: L'ordre SOV est courant dans les langages orientés pile, les opérateurs infixes comptent comme SVO et les fonctions (Lisp étant l'exemple pathologique) sont VSO. L'anglais a certainement une forte influence, mais je pense qu'il y a d'autres facteurs à l'œuvre ... Je devrai peut-être faire cette recherche moi-même. : P
Jon Purdy
@ Jon Oui, j'ai oublié Forth et Postcript, qui sont à la fois basés sur la pile et SOV. Veuillez me faire savoir si vous commencez la recherche. Je me suis spécialisé dans la théorie du langage à l'université, et les langages de programmation sont toujours mon hobby. J'ai des souvenirs de première main de bon nombre d'entre eux (Simula, Prolog, LISP).
Apalala
@Jon Vous trouverez peut-être intéressant que de nombreux programmeurs hispanophones préfèrent utiliser des identifiants en espagnol, même s'ils correspondent mal aux langages de programmation, bibliothèques, frameworks, normes et outils qu'ils utilisent. Leurs programmes se retrouvent dans "Spanglish". J'ai vu des goûts avec des programmeurs avec des langues natives dans d'autres langues avec l'héritage romain / latin, comme les Européens de l'Est. Je n'ai aucune idée de ce que les programmeurs d'Extrême-Orient (chinois, japonais, coréens), russes ou arabes aiment faire.
Apalala
1

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.

Mike Dunlavey
la source