C'è stata una ricerca sulla linguistica di programmazione?


18

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

Mentre lo sviluppo dei linguaggi di programmazione è artificiale, i processi di evoluzione, prestito, mescolanza e mutazione del linguaggio naturale hanno tutti controparti artificiali abbastanza chiare. Quindi mi chiedo: c'è mai stata una ricerca approfondita e approfondita sull'evoluzione e sul comportamento dei linguaggi di programmazione dal punto di vista di un linguista  ?


6
Il Perl è stato creato da un linguista ed è più disordinato della stessa lingua inglese.
Giobbe

1
@Job: è in circolazione da oltre 23 anni, è installato di default su innumerevoli piattaforme simili a Unix ed è ancora usato regolarmente per tutto, dall'automazione (per la quale è molto più pulita degli script di shell) allo sviluppo Web (per il quale è il modo più pulito di PHP) al suo scopo originale di elaborare testi con espressioni regolari (per i quali ha stabilito di fatto lo standard del settore). Certo è disordinato, ma in un modo che funziona bene per le persone, ed è qui che lo sviluppo linguistico di Larry è stato un vantaggio.
Jon Purdy,

@Job l'effetto si chiama "Peggio è meglio" en.wikipedia.org/wiki/Worse_is_better .
Apalala,

@Aplala: non è correlato. Semmai, Perl è un controesempio, perché è ricco di funzionalità e complessa e popolare.
Jon Purdy,

Risposte:


6

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 d'auto mi ha impedito di terminare una tesi di laurea sull'argomento che mi chiedi, quindi non ci sono riferimenti che posso darti, solo un'opinione.

Le lingue parlate si evolvono a qualsiasi velocità a seconda del contesto e lo fanno in modi imprevedibili come i contesti umani imprevedibili. Il risultato della seconda guerra mondiale ebbe enormi effetti sulla lingua giapponese. Britannici, australiani, sudafricani e nordamericani non parlano abbastanza la stessa lingua. L'uso delle declinazioni dei verbi tra quelle che erano le colonie spagnole è diventato abbastanza diverso dopo duecento anni di indipendenza (le ex colonie pensano che lo spagnolo di Spagna sia arcaico ).

Solo la forza dell'efficienza sulla fonetica fa sì che le diverse parole usate con frequenze diverse su regioni diverse vengano pronunciate in modo diverso: le parole molto comuni vengono scremate o errate, e quelle meno comuni vengono dichiarate nel modo più accurato possibile.

I linguaggi naturali, con le loro variazioni, sfumature ed evoluzione, non sono adatti al determinismo che chiediamo ai computer. (Accidenti! Vista la comunanza di fraintendimenti e interpretazioni secondarie, sembra che non siano adatti nemmeno per le interazioni più semplici tra gli umani [astenendosi dal citare battute su ciò che dice la ragazza / ragazzo e cosa significa realmente])


Nella nostra ricerca (avevo un tutor) abbiamo esaminato il greco e il latino perché avevano grammatiche ben definite che coprivano bene ogni ruolo che una parola poteva avere in una frase in base alla loro declinazione. Non era abbastanza buono, e le registrazioni di come le persone effettivamente parlavano quelle lingue dicono che era molto diverso da ciò che indicavano le loro grammatiche, come accade con le lingue moderne.
Apalala,

4
Per quanto riguarda il greco antico e il latino - parte del problema qui è che i testi sopravvissuti tendono ad essere di natura formale - saggi, contratti, sentenze legali, ecc. Se pensi ai messaggi che inviamo ogni giorno - "Ciao tesoro, per favore latte sulla strada di casa "e" Jim - ricorda il rapporto di Casey per le 9 "- la maggior parte di questi messaggi transitori nell'antica Roma andranno persi per sempre nel tempo.
HorusKol,

2
Questo non è del tutto vero. Mia madre parla occasionalmente delle sue lezioni di latino al liceo e menziona un pezzo che hanno tradotto, un promemoria da un patrizio romano al suo autista di bighe. L'essenziale era "Per favore, nelle ore di punta, NON lasciarti catturare dietro il carro così e così. Non so cosa dia da mangiare ai suoi cavalli, ma la puzza è TERRIBILE."
John R. Strohm,

4

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

No, non ho fatto ricerche serie sulla linguistica del linguaggio di programmazione di cui sono a conoscenza. Ci sono stati lignaggi linguistici tracciati per due rami principali e un subbranch:

  • Procedimental. Von Neuman . Dijkstra . Fortran, Pascal, C.
    • Orientato agli oggetti. Simula. Smalltalk.
  • Funzionale. McArthy . LISP.

Per quelli di noi con decenni nel settore è 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, i cosiddetti linguaggi di programmazione multiparadigm : C #, Python, Java, .. .. Anche in precedenza linguaggi funzionali puri come OCaml e Haskell includono abbastanza funzioni procedurali (tramite monadi ) e OO per permetterti di fare qualsiasi cosa.

Quello che è successo, penso, è che è diventato ovvio che era costoso (quando non sciocco) cambiare linguaggio di programmazione solo per essere in grado di applicare un paradigma giusto a un dato sottoproblema.

Rimane un'eccezione alla tendenza nell'area dei sistemi altamente paralleli e asincroni. Lì 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 utilizzate ( APL , AWK e persino Perl e LISP). Le sintassi dominanti oggi sono quelle di linguaggi più leggibili (anziché 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 quanti linguaggi di programmazione sono confluiti dall'era del linguaggio per sito degli anni '70.

evoluzione del linguaggio di programmazione


1
Questo è molto più simile a quello che stavo cercando. Immagino che sto anche cercando una correlazione diretta con la morfologia e la fonologia, oltre all'ovvia associazione con la sintassi che deriva dal lavorare con le grammatiche formali.
Jon Purdy,

@Jon Bene, l'altra ovvia tendenza è che l'inglese era ed è il linguaggio naturale dominante alla base di tutti i linguaggi di programmazione, sia sintatticamente che grammaticamente. I linguaggi di programmazione sono da sinistra a destra, primo verbo. Il giapponese, ad esempio, è molto diverso, ma non conosco nessuno sforzo per sviluppare un linguaggio di programmazione in stile giapponese. en.wikipedia.org/wiki/Japanese_language#Sentence_structure
Apalala

@Aplala: l'ordine SOV è comune nei linguaggi orientati allo stack, gli operatori infix contano come SVO e le funzioni (Lisp è l'esempio patologico) sono VSO. L'inglese ha sicuramente una forte influenza, ma penso che ci siano altri fattori al lavoro ... Potrei dover fare questa ricerca da solo. : P
Jon Purdy,

@Jon Sì, mi sono dimenticato di Forth e Postcript, che sono entrambi basati su stack e SOV. Per favore fatemi sapere se si avvia la ricerca. Mi sono specializzato in teoria dei linguaggi all'università e i linguaggi di programmazione sono ancora il mio hobby. Ho ricordi di prima mano di molti di essi (Simula, Prolog, LISP).
Apalala,

@Jon Potresti trovare interessante il fatto che molti programmatori di lingua spagnola preferiranno usare identificatori in spagnolo anche se non corrispondono ai linguaggi di programmazione, alle librerie, ai framework, agli standard e agli strumenti che usano. I loro programmi finiscono in "Spanglish". Ho visto artisti del calibro di programmatori con lingue native in altre lingue con eredità romana / latina, come gli europei dell'est. Non ho idea di cosa vogliano fare i programmatori dell'Estremo Oriente (cinese, giapponese, coreano), russo o arabo.
Apalala,

1

Mi piacciono le risposte di @ Apalala, che sembrano mostrare una convergenza con alcune delle principali lingue di uso generale. Questo ha senso solo, dal momento che una buona idea in uno può prima o poi essere presa dagli altri.

Ciò che aggiungerei è che ogni volta che si utilizza una lingua, la si estende necessariamente, aggiungendo termini, trasformandola in una lingua più orientata al dominio a portata di mano. A volte questo è abbastanza semplice, a volte no. Ecco un esempio che non è stato così semplice.

Una proprietà che apprezzo in una lingua di uso generale è la misura in cui aiuta nella definizione di nuove lingue specifiche del dominio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.