Sind Programmiersprachen Sprachen?

 

 

Wal(fische) sind keine Fische. Walnüsse sind keine Nüsse, sondern Steinfrüchte. Erdbeeren sind keine Beeren, sondern rote, süsse Fruchtböden, auf welchen gelbe Nüsschen zu hunderten sitzen. Sind Programmiersprachen Sprachen?

 

Was sind Sprachen?

Der Ausdruck "Sprache" wird im Alltag meistens auf konkrete Sprachen bezogen. Im Informatik-Duden steht, Sprachen werden von Menschen "zu allen Zwecken der Kommunikation verwendet". Duden sagt aber auch im Grammatik-Band nicht explizit, was "Sprache" ist. Dort stehen lediglich Sätze wie: "Die Produktivität unserer Sprache ist ungewöhnlich gross" oder "Die deutsche Sprache kommt in zwei Existenzformen vor: gesprochen und geschrieben". Die Duden-Grammatik enthält keine Charakterisierung dessen, was mit Sprache überhaupt gemeint ist und schon gar keine Definition des Begriffes Sprache; "Sprache" fehlt sogar als Stichwort im Register.

In seiner Etymologie schreibt Duden, Sprache sei "eine Substantivbildung zu dem unter 'sprechen' behandelten Verb". "Sprechen" steht für die (menschliche) Tätigkeit, bei welcher wir mittels der Sprechorgane, die - für unsere Diskussion zweckmässig vereinfacht - aus Knochen, Muskulatur und Nerven bestehen und von Duden sinnigerweise Sprech-Werkzeuge genannt werden, akustische Signale erzeugen, mit welchen wir Nachrichten vermitteln können. Sprechen ist Handeln; wenn ich etwas sage, bin ich tätig, wie wenn ich beispielsweise einen Hammer herstelle. Beim Sprechen verwenden wir bestimmte Muskeln, die wir - unbewusst - bewegen und steuern, wie etwa die Beinmuskulatur beim Gehen. Der unmittelbare Effekt unserer Muskelbewegungen beim Sprechen sind Laute. Normalerweise sprechen wir nicht, damit "es tönt", sondern weil wir etwas bezwecken. Sprechen hat wie jede Tätigkeit eine Zielsetzung. Wenn ich beispielsweise einen Hammer brauche, um einen Nagel einzuschlagen, kann ich den Hammer aus der Werkzeugkiste holen, indem ich meine Beinmuskulatur verwende. Ich kann aber auch jemanden darum bitten, dass er mir den Hammer holt. Letzteres ist einfach eine bequemere Handlung als den Hammer selber zu holen. In beiden Fällen handle ich zielgerichtet.

Wenn ich jemanden darum bitte, mir den Hammer zu holen, kann ich das durch Deuten tun, indem ich etwa nach einer hammertypischen Bewegung auf die Werkzeugkiste und dann zu mir zeige. Noch umständlicher könnte ich den Hammer, den ich gerne hätte, zeichnen. Normalerweise handeln wir möglichst einfach; in der beschriebenen Situation sagen wir: "Bitte, gib mir den Hammer aus der Werkzeugkiste!".

 

Zeichensystem

In der alltäglichen Rede über Sprache, insbesondere über sogenannte Programmiersprachen, wird der für Sprache konstitutive Tätigkeitsaspekt häufig ausgeblendet und "Sprache" lediglich als eine Menge von Zeichen oder Sprachlauten unterstellt. Wo Sprache als Zeichenmenge missverstanden und der Sprecher ausgeklammert wird, steht "Sprache" für irgend ein "System-Ding", das häufig Zeichensystem genannt wird. Die Zeichen einer Sprache sind weder ein System, noch bilden sie eines. Als System käme allenfalls eine Zeichen verarbeitende oder Sätze produzierende Maschine in Betracht - ganz abstrakt mag man sogar an Menschen denken -, aber die Sprache selbst ist keine Maschine, sondern allenfalls das 'Verhalten' einer Mensch-Maschine.

"Sprache" steht - zunächst - für die Menge aller (abgeschlossenen) Sprechhandlungen, also für alle möglichen Reden. Wenn wir von einer bestimmten Sprache sprechen, meine wir die Menge der abgeschlossenen Sprechhandlungen, die einer gemeinsamen Grammatik unterworfen sind. Die Schriftform der Sprache zeigt, dass Sprache nicht an akustische Signale gebunden ist, Signale lassen sich umwandeln. Akustische Signale können beispielsweise durch optische oder, wie im Telefon, durch elektrische ersetzt werden. Im Falle unserer Sprache ist der Ersetzungsmechanismus, der die gesprochenen Laute in Schriftzeichen umsetzt allerdings sehr kompliziert, weil wir die Buchstaben nicht bestimmten Lauten zuordnen, sondern den Phonemen, einfach gesagt, den Bedeutungseinheiten, denen wir auch die Laute zuordnen. "Sprache" steht schliesslich nicht nur für Sprechhandlungen, sondern verallgemeinert für alle Handlungen, die den Sprechhandlungen insofern entsprechen, als sie sprachlich direkt und indirekt beschreibbar sind, also insbesondere auch für unser schriftliches Verhalten.

Wir betrachten im folgenden die geschriebene Sprache, weil sie im Sinne des Wortes anschaulicher ist.

 

Sprachliche Symbole

Jede Sprechhandlung beruht auf einer Menge von Handlungselementen, die vereinbarte Symbole begründen. Schriftzeichen, die als Symbole fungieren, sind - wie Sprech-Laute - unmittelbare Resultate solcher Handlungen, sie sind abstrakte Produkte unseres sprachlichen Verhaltens. Die Menge der möglichen sprachlichen Handlungen ist eingeschränkt durch das Alphabet und die Grammatik, also durch die Menge der in ihr zulässigen elementaren Zeichen, und durch die Regeln, die bestimmen, wie die Zeichen angeordnet werden können. Alphabet und Grammatik beschränken die Sprachhandlungen auf einer bestimmten Stufe - was zur Vereinbarung der Sprache nötig ist - ohne die Sprache als solche auf eine endliche Menge von Handlungen zu beschränken. Wir können beliebige und beliebig viele Symbole vereinbaren.

Sprachliche Symbole stehen für eine jeweils gemeinte Bedeutung, auf welche sie vereinbarterweise verweisen. Sprachliche Handlungen sind auf eine (unterstellte) Wirklichkeit bezogen. Wenn wir "Hammer" sagen, meinen wir im allgemeinen das Werkzeug, das man zum Einschlagen eines Nagel benutzt. Ein Symbol verstehen heisst, verstehen, welche Wirklichkeit mit dem Symbol gemeint ist.

 

Programmiersprachen als Sprachen

Die sogenannten Maschinensprachen, auf die sich alle Programmiersprachen zurückführen (kompilieren = unschöpferisches übersetzen) lassen, erscheinen als Sprachen, weil wir durch Programmiersprach-Texte anderen Menschen effizient mitteilen können, welche Schalter der entsprechenden Maschine wann wie stehen - mit den Maschinen selbst sprechen wir natürlich nicht. Symbole sind die Zeichen der Maschinensprachen nur, wo sie dadurch "verzwischenmenschlicht" werden, dass sie an Menschen gerichtet werden, sei es als Erläuterung der Maschine oder als Anweisungen an eine Datatypistin. Nur in diesen Fällen nämlich stehen die Zeichen für etwas und müssen interpretiert werden. Wir verstehen, dass im Programmtext die Handlung eines Programmierers, der um seine Maschine zu programmieren bestimmte Tasten drückt, in einer unmittelbaren Art beschrieben ist. Natürlich sind wir aber - wie bezüglich eigentlicher Sprachen - nicht an der tippenden Handlung interessiert, sondern am Effekt dieser Handlung.

Der eigentliche Sinne der Zeichen in einem Programm zeigt sich durch den sogenannten Scanner, einem "oberflächlichen Leser", der das "Gelesene" weder interpretiert noch behält, sondern moduliert weiterleitet.

 

 

 

Programmiersprache als Konstruktions-Mittel

Was der Scanner "liest" und weiterleitet, sind nicht irgendwelche hochgeistige Anweisungen, sondern Signale, die durch die Zeichen pixelweise strukturiert werden. Viel deutlicher ist das Prinzip noch bei den Lochkarten erkennbar. Es ist für den Scanner und für die hinter ihm liegenden Instanzen im Computer völlig gleichgültig, was wir mit der jeweiligen Pixelmenge anfangen, respektive wie wir sie interpretieren. In Maschinensprachen haben die Zeichen selbst eine unmittelbare Bedeutung, sie sind Schalter, die den Signalfluss in der entsprechend weit gefassten Maschine steuern.

Die geschriebenen Zeichen sind als Pixelmengen wie die Programme als Zeichenmengen quasi festverdrahtete Schalter(mengen), man kann sie nicht ändern (ROM-Hardware). Was man relativ leicht verändern kann, ist die Gesamtheit der jeweilige Maschine, zu welcher auch die Schaltermenge des Programmes gehört, weil sich das geschriebene Programm als ganzes wie beispielsweise ein Werkzeug auf einer Werkzeugmaschine leicht austauschen lässt.

Natürlich ist das Programm ein Teil der Maschine und muss als solcher konstruiert werden. Die Anordnung der Pixel ist ein Formgebungsprozess wie wir ihm von der Herstellung irgendeines anderen Maschinenteils kennen. Auch dieser Zusammenhang ist bei der Lochkarte noch wesentlich leichter zu erkennen als beim geschriebenen Programm, weil das Stanzen von Löchern in Karton eher an die Produktion erinnert, als das Auftragen von Graphitstaub auf Papier. Dass das in Lochkarten gestanzte oder auf Papier geschriebene Programm vom Computer getrennt werden kann, nachdem es durch das sogenannte "Einlesen" codiert in einen anderen Teil der Maschine kopiert wurde, bedeutet keineswegs, dass das Programm kein physisch konstruierter Teil des Computers ist, sondern nur das neben Lochkarten und beschriebenem Papier auch andere Konstruktions-Materialien (Memory- oder Disktechnik) verwendet werden können.

 

Weshalb heissen Programmiersprachen "Programmiersprachen"?

Weshalb heissen Erdbeeren "Beeren"? Erdbeeren sind keine Beeren, man kann aber gut nachvollziehen, weshalb sie Beeren genannt werden. Man versteht dann im Nachhinein auch, dass die Vorsilbe "Erd-" darauf hinweisen soll, dass es sich bei den Erdbeeren nur scheinbar um Beeren handelt, da eigentliche Beeren nicht am Boden sondern an verholzten Sträuchern wachsen.

Die Wörter unserer Sprache sind wie die Namen von Variablen in Programmen völlig willkürlich gewählt. Man darf ihnen nur bedingt trauen, man muss die bezeichnete Sache unabhängig von der Bezeichnung der Sache verstehen. Umgekehrt werden aber die Bezeichnungen normalerweise auch nicht erwürfelt, sondern sinnandeutend so gewählt, dass sie die bezeichnete Sache in bestimmter Hinsicht charakterisieren. Wal(fische) leben im Wasser, Walnüsse öffnen wir mit dem Nussknacker und Erdbeeren essen wir mit Vanilleeis.

Programmieren ist wie Sprechen "syntaxgeordnetes" Handeln, das sich durch die dabei verwendete Zeichenmenge direkt darstellen lässt. Die Vorsilbe "Programmier-" deutet an, dass diese vermeintlichen Sprachen nicht zum Sprechen, also nicht symbolisch verwendet werden, sondern als gedankliche Schablonen das Konstruieren erleichtern. Ohne Programmiersprache hätten wir grosse Mühe die Lochkarten richtig zu stanzen.