Meine Antwort ist wirklich nur eine Ausarbeitung von Gilles ', die ich nicht gelesen hatte, bevor ich meine schrieb. Vielleicht ist es trotzdem hilfreich.
Lassen Sie mich meinen Versuch, Ihre Frage zu beantworten, mit einer Unterscheidung zwischen zwei Dimensionen der Arbeit mit Programmiersprachen beginnen, die sich ganz unterschiedlich auf die Theorie der Programmiersprache im Allgemeinen und die Prozessrechnung im Besonderen beziehen.
Letzteres findet typischerweise in der Industrie mit dem Ziel statt, Programmiersprachen als Produkt bereitzustellen. Die Teams, die Java bei Oracle und C # bei Microsoft entwickeln, sind Beispiele. Im Gegensatz dazu ist reine Forschung nicht an Produkte gebunden. Ziel ist es, Programmiersprachen als Objekte von intrinsischem Interesse zu verstehen und die mathematischen Strukturen zu untersuchen, die allen Programmiersprachen zugrunde liegen.
Aufgrund unterschiedlicher Ziele sind verschiedene Aspekte der Programmiersprachtheorie für die reine Forschung und für produktorientierte Forschung und Entwicklung relevant. Das folgende Bild kann einen Hinweis darauf geben, was wo wichtig ist.
Man kann an dieser Stelle fragen, warum die beiden Dimensionen so scheinbar unterschiedlich sind und wie sie sich dennoch verhalten.
Die wichtigste Erkenntnis ist, dass die Erforschung und Entwicklung von Programmiersprachen mehrere Dimensionen hat: technische, soziale und wirtschaftliche. Fast per Definition ist die Industrie an der wirtschaftlichen Auszahlung von Programmiersprachen interessiert. Microsoft et al. Entwickeln Sprachen nicht aus der Güte ihres Herzens heraus, sondern weil sie glauben, dass Programmiersprachen ihnen einen wirtschaftlichen Vorteil verschaffen. Und sie haben eingehend untersucht, warum einige Programmiersprachen erfolgreich sind, andere, die scheinbar ähnlich sind oder über erweiterte Funktionen verfügen, nicht. Und sie fanden heraus, dass es keinen einzigen Grund gibt. Programmiersprachen und ihre Umgebungen sind komplex, ebenso wie die Gründe für die Übernahme oder Ignorierung einer bestimmten Sprache. Der größte Faktor für den Erfolg einer Programmiersprache ist jedoch die bevorzugte Bindung von Programmierern an Sprachen, die bereits weit verbreitet sind: Je mehr Menschen eine Sprache verwenden, desto mehr Bibliotheken, Werkzeuge und Lehrmaterialien stehen zur Verfügung und desto produktiver ist ein Programmierer kann diese Sprache verwenden. Dies wird auch als Netzwerkeffekt bezeichnet. Ein weiterer Grund sind die kostenintensiven Sprachwechsel für Einzelpersonen und Organisationen: Das Beherrschen der Sprache, insbesondere für einen weniger erfahrenen Programmierer, und wenn die semantische Distanz zu vertrauten Sprachen groß ist, ist eine ernsthafte, zeitaufwändige Anstrengung. Angesichts dieser Tatsachen kann man sich fragen, warum neue Sprachen überhaupt Anklang finden. Warum entwickeln Unternehmen überhaupt neue Sprachen? Warum bleiben wir nicht einfach bei Java oder Cobol? Ich denke, es gibt mehrere Hauptgründe für den Erfolg einer Sprache.
Es eröffnet sich eine neue Programmierdomäne, die keine zu verdrängenden Amtsinhaber hat. Das Hauptbeispiel ist das Web mit dem damit einhergehenden Aufstieg von Javascript.
Sprachklebrigkeit. Damit meine ich den hohen Preis für einen Sprachwechsel. Aber manchmal wechseln Programmierer in verschiedene Bereiche, nehmen eine Programmiersprache mit und sind mit der alten Sprache im neuen Bereich erfolgreich.
Eine Sprache wird von einem großen Unternehmen mit ernsthafter finanzieller Feuerkraft vorangetrieben. Diese Unterstützung verringert das Risiko einer Adoption, da Frühanwender ziemlich sicher sein können, dass die Sprache in einigen Jahren noch unterstützt wird. Ein gutes Beispiel dafür ist C #.
Eine Sprache kann mit überzeugenden Werkzeugen und Ökosystemen kommen. Auch hier könnte C # und sein .Net- und Visual Studio-Ökosystem als Beispiel genannt werden.
Alte Sprachen übernehmen neue Funktionen. Es fällt mir Java ein, das in jeder Iteration mehr gute Ideen aus der Tradition der funktionalen Programmierung aufgreift.
Schließlich könnte eine neue Sprache intrinsische technische Vorteile haben, z. B. ausdrucksstärker sein, eine bessere Syntax haben, Systeme eingeben, die mehr Fehler auffangen usw.
Vor diesem Hintergrund sollte es nicht überraschen, dass zwischen reiner Programmiersprachenforschung und kommerzieller Programmiersprachenentwicklung eine gewisse Trennung besteht. Während beide darauf abzielen, die Softwarekonstruktion und -entwicklung effizienter zu gestalten, insbesondere für Software in großem Maßstab, muss die Arbeit mit industriellen Programmiersprachen mehr daran interessiert sein, eine schnelle Einführung zu ermöglichen, um eine kritische Masse zu erreichen und den Netzwerkeffekt zu erzielen. Dies führt zu einem Forschungsschwerpunkt auf Dinge, die arbeitende Programmierer interessieren. Dies sind in der Regel Bibliotheksverfügbarkeit, Compilergeschwindigkeit, Qualität des kompilierten Codes, Portabilität usw. Die Prozessrechnung, wie wir sie heute praktizieren, ist für Programmierer, die an Mainstream-Projekten arbeiten, von geringem Nutzen (obwohl ich glaube, dass sich dies in Zukunft ändern wird).
λπβ-Reduktion für funktionale Programmierung, Auflösung / Vereinheitlichung für Logikprogrammierung, Namensübergabe für gleichzeitige Berechnung). Um zu verstehen, ob eine Sprache wie Scala eine brauchbare vollständige Typinferenz haben kann, müssen wir uns keine Sorgen um die JVM machen. In der Tat wird das Nachdenken über die JVM ein besseres Verständnis der Typinferenz beeinträchtigen. Deshalb ist die Abstraktion der Berechnung in winzige Kernkalküle wichtig und mächtig.
Sie können sich also die Programmiersprachenforschung als einen riesigen Sandkasten vorstellen, in dem Menschen mit Spielzeug spielen. Wenn sie beim Spielen mit einem bestimmten Spielzeug etwas Interessantes finden und das Spielzeug gründlich untersucht haben, beginnt dieses interessante Spielzeug seinen langen Weg in Richtung industrieller Akzeptanz . Ich sage einen langen Marsch, weil Sprachmerkmale, die zuerst von Programmiersprachenforschern erfunden wurden, Jahrzehnte dauern, bis sie allgemein akzeptiert werden. Zum Beispiel wurde die Speicherbereinigung in den 1950er Jahren konzipiert und in den 1990er Jahren mit Java weit verbreitet. Pattern Matching stammt aus dem Jahr 1970 und ist erst seit Scala weit verbreitet.
Prozessrechnung ist ein besonders interessantes Spielzeug. Aber es ist zu neu, um gründlich untersucht zu werden. Das wird ein weiteres Jahrzehnt reiner Forschung dauern. Was derzeit in der prozesstheoretischen Forschung vor sich geht, ist, die größte Erfolgsgeschichte der Programmiersprachenforschung, die Theorie der (sequentiellen) Typen, aufzugreifen und die Theorie der Typen für die gleichzeitige Nachrichtenübermittlung zu entwickeln. Typisierungssysteme mit mäßiger Expressivität für die sequentielle Programmierung, so Hindley-Milner, sind mittlerweile gut verstanden, allgegenwärtig und werden von arbeitenden Programmierern akzeptiert. Wir möchten mäßig ausdrucksstarke Typen für die gleichzeitige Programmierung haben. Die Forschung dazu begann in den 1980er Jahren von Pionieren wie Milner, Sangiorgi, Turner, Kobayashi, Honda und anderen, die häufig explizit oder implizit auf der Idee der Linearität beruhten, die aus der linearen Logik stammt. In den letzten Jahren hat die Aktivität stark zugenommen, und ich gehe davon aus, dass sich dieser Aufwärtstrend auf absehbare Zeit fortsetzen wird. Ich erwarte auch, dass diese Arbeit in produktorientierte Forschung und Entwicklung einfließt, teilweise aus dem pragmatischen Grund, dass junge Forscher, die in Prozessrechnung geschult wurden, in industrielle Forschungs- und Entwicklungslabors gehen werden, aber auch aufgrund der Entwicklung der CPU- und Computerarchitektur weg aus sequentiellen Berechnungsformen.
Zusammenfassend würde ich mir keine Sorgen machen, dass Sie die neueste Theorie der Programmiersprache wie die Prozessrechnung nicht für Ihre eigene Arbeit beim Erstellen von Sprachen nützlich finden. Das liegt einfach daran, dass die Spitzentheorie die Bedenken der aktuellen Programmiersprachen nicht berücksichtigt. Es geht um zukünftige Sprachen. Es wird eine Weile dauern, bis die "reale Welt" aufholt. Das Wissen, mit dem Sie heute Sprachen erstellen, ist die Programmiersprachtheorie der Vergangenheit. Ich ermutige Sie, mehr über Prozessrechnung zu erfahren, da dies einer der spannendsten Bereiche der gesamten theoretischen Informatik ist.