Wurde die Programmiersprachwissenschaft erforscht?

18

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  ?

Jon Purdy
quelle
6
Perl wurde von einem Linguisten erstellt und ist chaotischer als die englische Sprache.
Job
1
@Job: Und es gibt es schon seit über 23 Jahren, es ist standardmäßig auf unzähligen Unix-ähnlichen Plattformen installiert und wird immer noch regelmäßig für alles verwendet, von der Automatisierung (für die es viel sauberer ist als Shell-Scripting) bis zur Webentwicklung (für die es so ist) sauberer als PHP) zu seinem ursprünglichen Zweck der Textverarbeitung mit regulären Ausdrücken (für die es den De-facto-Industriestandard festgelegt hat). Sicher, es ist chaotisch, aber auf eine Art und Weise, die gut für die Menschen ist, und das war in Perls Entwicklung ein Segen für Larry.
Jon Purdy
@Job der Effekt heißt "Schlimmer ist besser" en.wikipedia.org/wiki/Worse_is_better .
Apalala
@Aplala: Das hat nichts zu tun. Wenn überhaupt, ist Perl ein Gegenbeispiel, weil es reich an Funktionen und komplex und beliebt ist.
Jon Purdy

Antworten:

6

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.])

Apalala
quelle
In unserer Recherche (ich hatte einen Tutor) haben wir uns Griechisch und Latein angesehen, weil sie gut definierte Grammatiken hatten, die jede Rolle, die ein Wort in einem Satz durch ihre Deklination haben könnte, gut abdeckten. Es war nicht gut genug, und Aufzeichnungen darüber, wie die Leute diese Sprachen tatsächlich sprachen, besagen, dass es sich stark von dem unterschied, was ihre Grammatik anzeigte, wie es bei modernen Sprachen der Fall ist.
Apalala
4
In Bezug auf Altgriechisch und Latein geht es hier zum Teil darum, dass die überlieferten Texte in der Regel formeller Natur sind - Aufsätze, Verträge, rechtliche Bestimmungen usw. Wenn Sie über die Nachrichten nachdenken, die wir täglich senden - "Hallo Schatz, bitte verstehe milch auf dem heimweg "und" jim - denk an den casey report für 9 uhr "- die meisten dieser vergänglichen nachrichten im alten rom sind für immer in der zeit verloren gegangen.
HorusKol
2
Das stimmt nicht ganz. Meine Mutter spricht gelegentlich über ihren Lateinunterricht an der Highschool und erwähnt ein Stück, das sie übersetzt haben, ein Memo eines römischen Patriziers an seinen Streitwagenfahrer. Der Kerngedanke war "Bitte, während der Hauptverkehrszeit, lassen Sie sich NICHT von so und so Wagen fangen. Ich weiß nicht, was er seine Pferde füttert, aber der Gestank ist SCHRECKLICH."
John R. Strohm
4

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:

  • Verfahrenstechnisch. Von Neuman . Dijkstra . Fortran, Pascal, C.
    • Objektorientierter. Simula. Smalltalk.
  • Funktional. McArthy . LISPELN.

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.

Evolution der Programmiersprache

Apalala
quelle
1
Das ist viel eher das, wonach ich gesucht habe. Ich suche auch nach einer direkten Korrelation mit Morphologie und Phonologie, zusätzlich zu der offensichtlichen Assoziation mit der Syntax, die aus der Arbeit mit formalen Grammatiken resultiert.
Jon Purdy
@Jon Nun, der andere offensichtliche Trend ist, dass Englisch die dominierende natürliche Sprache war und ist, die allen Programmiersprachen zugrunde liegt, sowohl syntaktisch als auch grammatisch. Programmiersprachen sind von links nach rechts, Verb-First. Japanisch ist zum Beispiel ganz anders, aber ich kenne keine Bemühungen, eine Programmiersprache im japanischen Stil zu entwickeln. en.wikipedia.org/wiki/Japanese_language#Sentence_structure
Apalala
@Aplala: SOV-Reihenfolge ist in stapelorientierten Sprachen üblich, Infix-Operatoren zählen als SVO und Funktionen (Lisp ist das pathologische Beispiel) sind VSO. Englisch hat definitiv einen starken Einfluss, aber ich denke, es gibt andere Faktoren bei der Arbeit ... Ich muss diese Forschung möglicherweise selbst machen. : P
Jon Purdy
@ Jon Ja, ich habe Forth und Postcript vergessen, die beide stapelbasiert und SOV sind. Bitte lassen Sie mich wissen, wenn Sie mit der Recherche beginnen. Ich habe mich an der Universität auf Sprachtheorie spezialisiert und Programmiersprachen sind immer noch mein Hobby. Ich habe aus erster Hand Erinnerungen an viele von ihnen (Simula, Prolog, LISP).
Apalala
@Jon Möglicherweise finden Sie es interessant, dass viele spanischsprachige Programmierer lieber spanische Bezeichner verwenden, obwohl diese nicht mit den verwendeten Programmiersprachen, Bibliotheken, Frameworks, Standards und Tools übereinstimmen. Ihre Programme enden in "Spanglish". Ich habe die Gleichen mit Programmierern mit Muttersprachen in anderen Sprachen mit römischem / lateinischem Erbe gesehen, wie den Osteuropäern. Ich habe keine Ahnung, was die fernöstlichen (chinesischen, japanischen, koreanischen), russischen oder arabischen Programmierer gerne tun.
Apalala
1

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.

Mike Dunlavey
quelle