La mia risposta è davvero solo un'elaborazione di Gilles, che non avevo letto prima di aver scritto la mia. Forse è comunque utile.
Vorrei iniziare il mio tentativo di rispondere alla tua domanda con una distinzione tra due dimensioni del lavoro dei linguaggi di programmazione che si relazionano in modo molto diverso alla teoria del linguaggio di programmazione in generale e al calcolo del processo in particolare.
Quest'ultimo si svolge in genere nell'industria con l'obiettivo di fornire linguaggi di programmazione come prodotto. I team che sviluppano Java presso Oracle e C # presso Microsoft ne sono esempi. Al contrario, la ricerca pura non è legata ai prodotti. Il suo scopo è comprendere i linguaggi di programmazione come oggetti di interesse intrinseco ed esplorare le strutture matematiche alla base di tutti i linguaggi di programmazione.
A causa di obiettivi divergenti, diversi aspetti della teoria del linguaggio di programmazione sono rilevanti nella ricerca pura e nella ricerca e sviluppo incentrata sul prodotto. L'immagine sotto può dare un'indicazione di ciò che è importante dove.
A questo punto ci si può chiedere perché le due dimensioni siano così apparentemente diverse e come si colleghino comunque.
L'intuizione chiave è che la ricerca e lo sviluppo del linguaggio di programmazione ha molteplici dimensioni: tecnica, sociale ed economica. Quasi per definizione, l'industria è interessata al payoff economico dei linguaggi di programmazione. Microsoft e altri non sviluppano i linguaggi per la bontà dei loro cuori ma perché credono che i linguaggi di programmazione offrano loro un vantaggio economico. E hanno studiato a fondo perché alcuni linguaggi di programmazione hanno successo e altri, apparentemente simili o con funzionalità più avanzate, non lo fanno. E hanno scoperto che non esiste un unico motivo. I linguaggi di programmazione e i loro ambienti sono complessi, così come i motivi per l'adozione o l'ignoranza di qualsiasi linguaggio specifico. Ma il singolo principale fattore per il successo di un linguaggio di programmazione è l'attaccamento preferenziale dei programmatori a linguaggi già ampiamente utilizzati: più persone usano una lingua, più sono disponibili librerie, strumenti, materiale didattico e più produttivo è un programmatore può usare quella lingua. Questo è anche chiamato effetto di rete. Un'altra ragione è l'elevato costo che cambia le lingue per individui e organizzazioni: padroneggiare la lingua, specialmente per un programmatore non così esperto, e quando la distanza semantica per le lingue familiari è grande, è uno sforzo serio e che richiede tempo. Alla luce di questi fatti, ci si potrebbe chiedere perché le nuove lingue ottengono trazione? Perché le aziende sviluppano nuove lingue? Perché non restiamo solo con Java o Cobol? Penso che ci siano diverse ragioni chiave per cui una lingua ha successo,
Si apre un nuovo dominio di programmazione che non ha incumbent da spostare. L'esempio principale è il web con il concomitante aumento di Javascript.
Appiccicosità del linguaggio. Con questo intendo l'alto prezzo del cambio di lingua. Ma a volte i programmatori si spostano in campi diversi, portando con sé un linguaggio di programmazione e avendo successo con il vecchio linguaggio nel nuovo campo.
Una lingua è spinta da una grande azienda con una seria potenza di fuoco finanziaria. Questo supporto riduce il rischio di adozione, poiché i primi utenti possono essere ragionevolmente sicuri che la lingua sarà ancora supportata tra qualche anno. Un buon esempio di ciò è C #.
Una lingua potrebbe venire con strumenti convincenti ed ecosistema. Anche in questo caso C # e il suo ecosistema .Net e Visual Studio potrebbero essere citati come esempio.
Le vecchie lingue acquisiscono nuove funzionalità. Viene in mente Java, che, in ogni iterazione, raccoglie più buone idee dalla tradizione di programmazione funzionale.
Infine, un nuovo linguaggio potrebbe avere vantaggi tecnici intrinseci, ad esempio essere più espressivo, avere una sintassi migliore, sistemi di battitura che rilevano più errori, ecc.
Alla luce di ciò, non dovrebbe sorprendere che ci sia un po 'di disconnessione tra la pura ricerca del linguaggio di programmazione e lo sviluppo del linguaggio di programmazione commerciale. Mentre entrambi mirano a rendere la costruzione e l'evoluzione del software più efficienti, in particolare per i software su larga scala, il lavoro sul linguaggio di programmazione industriale deve essere più interessato a facilitare l'adozione rapida per raggiungere una massa critica e ottenere l'effetto della rete. Ciò porta ad un focus di ricerca sulle cose che interessano ai programmatori che lavorano. E questo tende ad essere cose come la disponibilità della libreria, la velocità del compilatore, la qualità del codice compilato, la portabilità e così via. Il calcolo del processo come lo pratichiamo oggi è di scarsa utilità per i programmatori che lavorano su progetti tradizionali (anche se credo che cambierà in futuro).
λπβ-riduzione per programmazione funzionale, risoluzione / unificazione per programmazione logica, passaggio di nomi per calcolo simultaneo). Per capire se una lingua come Scala può avere un'inferenza di tipo completa praticabile, non dobbiamo preoccuparci della JVM. In effetti, pensare alla JVM toglierà una migliore comprensione dell'inferenza del tipo. Ecco perché l'astrazione del calcolo in piccoli calcoli core è vitale e potente.
Quindi puoi pensare alla programmazione del linguaggio di ricerca come un enorme sandbox in cui le persone giocano con i giocattoli e se trovano qualcosa di interessante quando giocano con un giocattolo specifico e hanno studiato a fondo il giocattolo, allora quel giocattolo interessante inizia la sua lunga marcia verso l'accettazione industriale tradizionale . Dico lunga marcia perché le caratteristiche del linguaggio inventate per la prima volta dai ricercatori del linguaggio di programmazione tendono a richiedere decenni prima di essere ampiamente accettate. Ad esempio, la raccolta dei rifiuti è stata concepita negli anni '50 e divenne ampiamente disponibile con Java negli anni '90. La corrispondenza del modello risale al 1970 ed è ampiamente utilizzata solo dalla Scala.
Il calcolo del processo è un giocattolo particolarmente interessante. Ma è troppo nuovo per essere studiato a fondo. Ci vorrà un altro decennio di pura ricerca. Ciò che sta attualmente accadendo nella ricerca sulla teoria dei processi è quello di prendere la più grande storia di successo della ricerca nel linguaggio di programmazione, la teoria dei tipi (sequenziali) e sviluppare la teoria dei tipi per la concorrenza che passa messaggi. I sistemi di tipizzazione di moderata espressività per la programmazione sequenziale, affermano Hindley-Milner, sono ora ben compresi, onnipresenti e accettati dai programmatori che lavorano. Vorremmo avere tipi moderatamente espressivi per la programmazione concorrente. La ricerca iniziò negli anni '80 da pionieri come Milner, Sangiorgi, Turner, Kobayashi, Honda e altri, spesso basati, esplicitamente o implicitamente, sull'idea di linearità che deriva dalla logica lineare. Gli ultimi anni hanno visto un notevole aumento dell'attività e mi aspetto che questa traiettoria ascendente continui per il prossimo futuro. Mi aspetto anche che questo lavoro inizi a infiltrarsi nella ricerca e sviluppo incentrata sul prodotto, in parte per la ragione pragmatica che i giovani ricercatori che sono stati formati nel calcolo dei processi andranno a lavorare nei laboratori di ricerca e sviluppo industriali, ma anche a causa dell'evoluzione della CPU e dell'architettura del computer via da forme sequenziali di calcolo.
In sintesi, non mi preoccuperei che non trovi utile la teoria del linguaggio di programmazione all'avanguardia come il calcolo del processo nel tuo lavoro di costruzione di linguaggi. Questo semplicemente perché la teoria all'avanguardia non affronta le preoccupazioni degli attuali linguaggi di programmazione. Riguarda le lingue future. Ci vorrà del tempo prima che il "mondo reale" raggiunga. La conoscenza che usi per costruire linguaggi per oggi è la teoria dei linguaggi di programmazione del passato. Ti incoraggio a saperne di più sul calcolo dei processi perché è una delle aree più interessanti di tutta l'informatica teorica.