Programmiersprachen sind formale Sprachen , aber im Gegensatz zu vielen Formalismen haben sie auch eine bestimmte inhärente Bedeutung, die durch ihre Operationssemantik oder im Fall von Auszeichnungssprachen durch die Präsentationssemantik definiert wird . Und Programmiersprachen sind, obwohl formal, natürlichen Sprachen in Bezug auf die Kommunikation, die sie ermöglichen, sehr ähnlich.
Während die Entwicklung von Programmiersprachen künstlich ist, haben die natürlichen Sprachprozesse Evolution, Entlehnung, Vermischung und Mutation ziemlich klare künstliche Entsprechungen. Ich frage mich also: Gab es jemals eine umfassende und gründliche Untersuchung der Entwicklung und des Verhaltens von Programmiersprachen aus der Sicht eines Sprachwissenschaftlers ?
quelle
Antworten:
Denken Sie daran, dass formale Grammatiken, ohne die moderne Programmierung nicht möglich wäre, das Ergebnis der Forschung des Linguisten Noam Chomsky sind .
Ein Autounfall hat mich davon abgehalten, eine Abschlussarbeit zu dem Thema zu schreiben, nach dem Sie fragen. Ich kann Ihnen also keine Referenzen nennen, nur eine Meinung.
Gesprochene Sprachen entwickeln sich je nach Kontext mit jeder Geschwindigkeit und dies auf unvorhersehbare Weise wie die unvorhersehbaren menschlichen Kontexte. Der Ausgang des Zweiten Weltkriegs hatte enorme Auswirkungen auf die japanische Sprache. Briten, Australier, Südafrikaner und Nordamerikaner sprechen nicht ganz dieselbe Sprache. Die Verwendung von Verbdeklarationen in früheren spanischen Kolonien ist nach zweihundert Jahren Unabhängigkeit völlig anders geworden (die ehemaligen Kolonien halten die spanischen Spanier für archaisch ).
Aufgrund der Effizienz der Phonetik werden die verschiedenen Wörter, die mit unterschiedlichen Frequenzen in verschiedenen Regionen verwendet werden, unterschiedlich ausgesprochen: Sehr häufige Wörter werden überflogen oder falsch geschrieben, und weniger häufige Wörter werden so genau wie möglich angegeben.
Natürliche Sprachen mit ihren Variationen, Nuancen und Entwicklungen sind nicht geeignet für den Determinismus, den wir von Computern fordern. (Gee! Angesichts der Gemeinsamkeiten von Fehlinterpretationen und Zweitinterpretationen scheinen sie nicht einmal für die einfachsten Interaktionen unter Menschen geeignet zu sein. [Verzichten Sie darauf, Witze darüber zu zitieren, was Mädchen / Freund sagt und was es wirklich bedeutet.])
quelle
Ich habe die Frage noch einmal gelesen und glaube, meine ursprüngliche Antwort hat sie nicht beantwortet. Hier ist ein weiterer Versuch.
Nein, es wurden keine ernsthaften Untersuchungen zur Programmiersprachen-Linguistik durchgeführt, die mir bekannt sind. Es wurden Sprachlinien für zwei Hauptzweige und einen Nebenzweig verfolgt:
Für diejenigen von uns mit Jahrzehnten auf dem Gebiet ist es offensichtlich, dass sich Programmiersprachen vermischt haben, und dass man somit die meisten Aspekte eines reinen Paradigmas in den meisten modernen Programmiersprachen findet, den jetzt als Multiparadigmen bezeichneten Programmiersprachen : C #, Python, Java, .. Sogar zuvor reine funktionale Sprachen wie OCaml und Haskell enthalten genügend prozedurale (durch Monaden ) und OO-Funktionen, um Ihnen alles zu ermöglichen.
Ich denke, es ist offensichtlich geworden, dass es kostspielig (wenn auch nicht albern) war, die Programmiersprache wechseln zu müssen, um auf ein bestimmtes Teilproblem das richtige Paradigma anwenden zu können .
Im Bereich der hochparallelen und asynchronen Systeme bleibt eine Ausnahme vom Trend. Dort sind die bevorzugten Sprachen genau so funktional wie Erlang , wahrscheinlich, weil es einfacher ist, sich solche komplexen Systeme funktional vorzustellen.
Der nicht-paradigmatische Teil der Evolution lag in der Syntax. Sprachen, die kryptische Programme unterstützen oder sogar zulassen, werden immer seltener verwendet ( APL , AWK und sogar Perl und LISP). Die dominierenden Syntaxen sind heutzutage die von besser lesbaren (im Gegensatz zu leicht beschreibbaren) Sprachen wie C (C ++, C #, Java, Objective-C, Scala, Go, IML, CSS, JavaScript und auch Python), Pascal (Fortran 90+) x), Smalltalk (Ruby), ML / Miranda (OCaml, Haskell, Erlang) und SGML (HTML, XML).
Dieses Diagramm ist nicht ganz genau und nicht auf dem neuesten Stand. Es gibt jedoch einen guten Überblick darüber, wie viele Programmiersprachen seit dem Zeitalter der Sprache pro Site in den 1970er Jahren konvergiert haben.
quelle
Ich mag die Antworten von @ Apalala, die eine Annäherung an einige wichtige Mehrzwecksprachen zu zeigen scheinen. Das macht nur Sinn, denn eine gute Idee in der einen kann früher oder später von den anderen aufgegriffen werden.
Was ich hinzufügen möchte, ist, dass wenn man eine Sprache benutzt, sie notwendigerweise erweitert, indem man Begriffe hinzufügt und sie in eine Sprache umwandelt, die sich mehr an der jeweiligen Domäne orientiert. Manchmal ist das ziemlich einfach, manchmal nicht. Hier ist ein Beispiel, das nicht so einfach war.
Eine Eigenschaft, die ich in einer Allzwecksprache schätze, ist das Ausmaß, in dem sie bei der Definition neuer domänenspezifischer Sprachen hilft.
quelle