Menschensprachen vs. Programmiersprachen

Ein kurzer Vergleich aus der Perspektive eines (in Kürze) zu programmierenden Linguisten

Ich erinnere mich noch an den Tag, an dem ich zum ersten Mal etwas über Computerlinguistik gelernt habe. Ich hatte gerade mein naturwissenschaftliches Abitur abgeschlossen und stand vor der schwierigen Entscheidung, was ich studieren sollte. Aus irgendeinem Grund habe ich mich für Sprachen entschieden und in einer der ersten Vorlesungen etwas über angewandte Linguistik und ihre zahlreichen Unterteilungen gelernt. Von all diesen Gebieten erregte die Computerlinguistik meine Aufmerksamkeit. Ich erinnere mich, dass ich dachte, es muss ein perfektes Gleichgewicht zwischen zwei sehr unterschiedlichen Disziplinen sein, ideal für die unentschlossenen Typen wie mich, die sich weigern, zwischen Geisteswissenschaften und Naturwissenschaften zu wählen.

Quelle: 3: AM Magazine

Neun Jahre später lerne ich wieder, aber diesmal bin ich auf der anderen Seite der Medaille - ich lerne etwas über das Programmieren. Die Erinnerungen an die Studentenzeit sind zurückgekehrt, aber dieses Mal kann ich mehr als nur von diesem perfekt ausgeglichenen Feld träumen. Ich nutze diese Gelegenheit, um mehr über Linguistik, Programmierung und alles, was sie gemeinsam haben, zu lernen. Beginnen wir also mit den Grundlagen.

Was ist eine Sprache?

Das Definieren einer Sprache mag einfach erscheinen, aber Seiten und Seiten könnten darüber geschrieben sein (und wurden). Der Grund dafür liegt in der Komplexität einer Sprache als Phänomen sowie in ihren unterschiedlichen Herangehensweisen und Erklärungen. Sprache kann als ein System aus gesprochenen, manuellen oder geschriebenen Symbolen definiert werden, mit denen Menschen sich selbst, ihre Identität, Vorstellungskraft und Emotionen ausdrücken. Im Laufe der Zeit entwickelten und entwickelten sich Sprachen, und wir fanden einen Weg, diese Veränderungen zu beschreiben und zu systematisieren. Ihr Hauptzweck - die Kommunikation - hat sich jedoch nicht geändert.
Programmiersprachen drehen sich um dasselbe Prinzip der Kommunikation. Sie wurden vom Menschen als ein System von Symbolen und Regeln erstellt, mit denen ein Befehlssatz an eine Maschine / einen Computer übermittelt wird. Obwohl sie viel einfacher sind, haben Programmiersprachen auch ihre eigene Klassifikation und Geschichte entwickelt.

Was sind also die Gemeinsamkeiten und Unterschiede zwischen Programmiersprachen und menschlichen Sprachen?

Ähnlichkeiten

Wir haben dies bereits aus dem vorherigen Absatz erfahren, aber wiederholen wir es noch einmal: Die Hauptfunktion von Sprachen, sei es Python oder Chinesisch, ist die Kommunikation. Dies ist die wichtigste Ähnlichkeit zwischen ihnen und einer der Hauptgründe, warum wir beide als Sprachen bezeichnen.

Ein weiteres wichtiges Merkmal, das ihnen gemeinsam ist, ist die Struktur. Zwei der Hauptkonzepte in der Linguistik sind Semantik und Syntax. Die Semantik bezieht sich auf die Bedeutung eines bestimmten Wortes oder vielmehr einer Information, die mit einem bestimmten Begriff verbunden ist. Beispielsweise bezieht sich ein Wort essen auf eine bestimmte Aktion, die lebende Organismen ausführen können. Syntax hingegen ist ein Satz von Regeln, die uns das Anordnen und Kombinieren von Wörtern und Phrasen mitteilen. Die beiden sind eng miteinander verbunden und nur zusammen kann ein voll funktionsfähiger Ausdruck entstehen. Nehmen Sie einen Satz, den das Bett isst als Beispiel: Während es vom Standpunkt einer Syntax aus korrekt ist, ist es semantisch falsch, da ein Bett nicht lebt und daher nicht essen kann. Ähnlich wie natürliche Sprachen unterscheiden Programmiersprachen zwischen Syntax und Semantik. Jede Programmiersprache wurde mit einer bestimmten Idee oder Absicht (Semantik) geschrieben, wobei die Regeln für die Verwendung von Variablen, Funktionen, verschiedenen Arten von Klammern, Doppelpunkten usw. (Syntax) befolgt wurden.

Es ist auch wichtig darauf hinzuweisen, dass beide Sprachfamilien oder Gruppen verwandter Sprachen bilden, die sich voneinander trennen. Wir alle haben von der indogermanischen Sprachfamilie gehört, zu der neben vielen anderen Sprachen auch Englisch gehört. Programmiersprachen haben ihre eigenen Sprachfamilien mit relativ ähnlicher Syntax und / oder Semantik. Im Bild unten sehen Sie einige der bekannteren Programmiersprachen (für einen detaillierten Stammbaum klicken Sie hier).

Quelle: Geschichte der Programmiersprachen von Ursula Lewis

Unterschiede

Vergessen wir nicht, die Morphologie zu erwähnen, wenn wir über die Struktur der Sprachen sprechen. Morphologie ist das Studium von Wörtern, ihrer Bildung, ihrer Beziehung zu anderen Wörtern in derselben Sprache sowie die Art und Weise, wie der Kontext die Aussprache und Bedeutung eines Wortes ändern kann. Während die Morphologie eine sehr wichtige Rolle bei der Analyse menschlicher Sprachen spielt, können wir nicht wirklich sagen, dass Programmiersprachen etwas Ähnliches haben.

Zuallererst sind Programmiersprachen künstliche Kreationen. Dies bedeutet, dass alle ihre Regeln und Definitionen im Voraus entworfen wurden, sodass sie vollständig beschrieben und in ihrer Gesamtheit untersucht werden können. Ihre Grammatik ist selbstdefinierend und ändert sich je nach Kontext nicht. Stellen Sie sich das so vor: Jede Codezeile hat entweder eine oder eine Nullbedeutung (mit anderen Worten, sie enthält entweder einen Fehler oder ist ein gültiges Programm, das Sie ausführen können). Es gibt keine Synonyme (obwohl Rubys .map und .collect zum Beispiel als Synonyme angesehen werden könnten), Allegorien, Analogien, historische oder kulturelle Referenzen. Aus diesem Grund haben Programmiersprachen keine wirkliche Morphologie, zumindest nicht so wie menschliche Sprachen.

Quelle: Steve the vagabond und alberner Linguist

Zweitens können sich Programmiersprachen aufgrund der Tatsache, dass sie sehr strengen Regeln folgen, nicht so entwickeln und entwickeln wie menschliche Sprachen (obwohl man sagen könnte, dass sich Programmiersprachen durch verschiedene Bibliotheken entwickeln). Es gibt keinen Raum für Fehler oder Improvisation. Andererseits sind die menschlichen Sprachen voller Unvollkommenheiten. Denken Sie nur an Dialekte, Slang, Jargon, Argot (Geheimsprache einer bestimmten Gruppe, die für Außenstehende unverständlich ist), Namensvetter, Akzente, falsch ausgesprochene Wörter, Tippfehler, unregelmäßige Zeichensetzung und viele andere Aspekte menschlicher Sprachen, die die Botschaft, die wir haben, nicht stören versuche zu kommunizieren.

Quelle: Steve the vagabond und alberner Linguist

Und die Botschaft, die die menschlichen Sprachen vermitteln, ist sowohl logisch als auch emotional. Wenn gesprochen, handelt es sich um Körpersprache, Intonation, Lautstärke und viele andere nonverbale Hinweise. Tatsächlich werden Sprachen stark durch die physischen Eigenschaften des menschlichen Körpers (Augen, Zunge, Hände) definiert und sind aus diesem Grund für den Menschen einzigartig. Nichts davon gilt für Programmiersprachen. Obwohl hochqualifizierte Programmierer ihre eigenen Codestile entwickeln können, bleibt die Art dieses Codes dieselbe: logisch, präzise, ​​absolut eindeutig. Kein Wunder, denn die Grundlage aller Programmiersprachen sind Milliarden und Abermilliarden von Einsen und Nullen.

Warum ist das wichtig?

Das Verstehen des Unterschieds zwischen Programmiersprachen und menschlichen Sprachen ist für viele Bereiche von großem Wert, in denen Tools für wichtige praktische Aufgaben wie maschinelle Übersetzung, Spracherkennung, Sprachsynthese, Informationsextraktion aus Text, Grammatikprüfung, Text Mining und mehr erstellt werden. Denken Sie an Google Translate oder Siri und versuchen Sie, alles zu verstehen, was erforderlich ist, um einen einfachen englischen Satz in eine Nachricht zu verwandeln, die von einem Computer verarbeitet werden kann. Denken Sie jetzt an das erste Gespräch auf Spanisch, das Sie außerhalb des Unterrichts geführt haben. Es hat dich schwindelig gemacht, nicht wahr?

Quelle: Steve the vagabond und alberner Linguist