Ci sono state ricerche sulla linguistica di programmazione?

17

I linguaggi di programmazione sono lingue formali , ma a differenza di molti formalismi, hanno anche un certo significato definito dalla loro semantica operativa o, nel caso dei linguaggi di markup, semantica di presentazione . E i linguaggi di programmazione, sebbene in effetti formali, sono molto simili alle lingue naturali, in termini di comunicazione che consentono.

Mentre lo sviluppo dei linguaggi di programmazione è artificiale, i processi in linguaggio naturale dell'evoluzione, del prestito, dell'intermissione e della mutazione hanno tutti controparti artificiali abbastanza chiare. Quindi mi chiedo: c'è mai stata una ricerca su larga scala e approfondita sull'evoluzione e sul comportamento dei linguaggi di programmazione dalla prospettiva di un linguista ?

    
posta Jon Purdy 20.03.2011 - 22:01
fonte

3 risposte

5

Ricorda che le grammatiche formali, senza le quali la programmazione moderna non potrebbe essere, sono il prodotto della ricerca del linguista Noam Chomsky .

Un incidente automobilistico mi ha impedito di terminare una tesi di laurea sull'argomento che mi chiedi, quindi non ci sono riferimenti che posso darti, solo un parere.

I linguaggi parlati si evolvono a qualsiasi velocità a seconda del contesto, e lo fanno in modi imprevedibili come i contesti umani imprevedibili. L'esito della seconda guerra mondiale ha avuto enormi effetti sulla lingua giapponese. Britannici, australiani, sudafricani e nord americani non parlano la stessa lingua. L'uso delle declinazioni del verbo tra quelle che erano le colonie spagnole è diventato molto diverso dopo duecento anni di indipendenza (le ex colonie pensano che lo spagnolo di Spagna sia arcaico ).

Solo la forza dell'efficienza sulla fonetica rende le diverse parole usate con frequenze diverse su regioni diverse da pronunciare in modo diverso: le parole molto comuni vengono scremate o errate, e quelle meno comuni sono dichiarate il più accuratamente possibile.

I linguaggi naturali, con le loro variazioni, sfumature ed evoluzione non sono adatti al determinismo che chiediamo ai computer. (Gee! Data la comunanza di interpretazioni errate e seconde interpretazioni, sembra che non siano adatti nemmeno alle interazioni più semplici tra gli umani [astenendosi dal citare barzellette su cosa dice ragazza / ragazzo-amico e cosa significa veramente])

    
risposta data 20.03.2011 - 23:16
fonte
4

Ho riletto la domanda, e penso che la mia risposta originale non l'abbia affrontata. Ecco un altro tentativo.

No, non ci sono state ricerche serie sulla linguistica linguistica di programmazione di cui sono a conoscenza. Ci sono stati dei lignaggi tracciati per due rami principali e un sottobosco:

Per quelli di noi con decenni sul campo è ovvio che i linguaggi di programmazione si sono incrociati e che quindi si trovano la maggior parte degli aspetti di qualsiasi paradigma puro nella maggior parte dei linguaggi di programmazione moderni, l'ora chiamato linguaggi di programmazione multiparadigm : C #, Python, Java, .... Anche i linguaggi funzionali precedentemente puri come OCaml e Haskell includono abbastanza procedurali (tramite monads ) e funzionalità OO per consentire di fare qualsiasi cosa .

Ciò che è successo, penso, è che è diventato ovvio che era costoso (quando non era sciocco) dover cambiare i linguaggi di programmazione solo per essere in grado di applicare un paradigma giusto a un dato sottoproblemi.

Rimane un'eccezione alla tendenza nell'area dei sistemi altamente paralleli e asincroni. Le lingue preferite sono strettamente funzionali, come Erlang , probabilmente perché è più facile pensare a sistemi così complessi funzionalmente.

La parte non paradigmatica dell'evoluzione è stata sulla sintassi. Le lingue che hanno incoraggiato o addirittura permesso programmi criptici sono diventate sempre meno usate ( APL , AWK e persino Perl e LISP). Le dominanti dominanti oggi sono quelle di linguaggi più leggibili (al contrario di quelli facilmente scrivibili) come C (C ++, C #, Java, Objective-C, Scala, Go, IML, CSS, JavaScript e anche Python), Pascal (Fortran 90+ x), Smalltalk (Ruby), ML / Miranda (OCaml, Haskell, Erlang) e SGML (HTML, XML).

Questo diagramma non è completamente accurato e non è aggiornato, ma dà una buona idea di quanto i linguaggi di programmazione siano convergenti dall'era della lingua per sito degli anni '70.

    
risposta data 23.03.2011 - 21:00
fonte
1

Mi piacciono le risposte di @ Apalala, che sembrano mostrare una convergenza con alcune delle principali lingue generali. Questo ha senso solo perché una buona idea in uno può essere presto o tardi presa dagli altri.

Ciò che aggiungerei è che ogni volta che si utilizza un linguaggio, lo stanno necessariamente estendendo, aggiungendo termini, trasformandolo in un linguaggio più orientato al dominio in questione. A volte questo è abbastanza semplice, a volte no. Ecco un esempio che non era così semplice.

Una proprietà che apprezzo in un linguaggio generico è la misura in cui assiste nella definizione di nuovi linguaggi specifici del dominio.

    
risposta data 23.03.2011 - 21:42
fonte

Leggi altre domande sui tag