Joachim
Ja, Programmieren ist eine praktische Fähigkeit. Eine Sprachfähigkeit ist es aber so wenig, wie Mathematik eine Naturwissenschaft.
— Quantenwelt (@quantenwelt) 21. Oktober 2014
jhermes
Obwohl ich mir ziemlich sicher bin, dass Joachims Aussage eine Reaktion auf eine noch viel falschere Bemerkung von was-weiß-ich-wem ist, provoziert sie bei mir Widerspruch. Ich will hier gar nicht auf die Gleichsetzung mit der Mathematik-Naturwissenschaft-Relation eingehen. Es dürfte ja jedem klar sein, dass Naturwissenschaften (wahrscheinlich nicht nur die) ohne Mathematik undenkbar sind, diese aber weder empirisch arbeitet, noch Naturphänomene untersucht.
Programmieren ist nun keine notwendige Voraussetzung für Sprachfähigkeit (umgekehrt dürfte das indes schon gelten), aber ist der Begriff Programmiersprache ein irreführender Begriff, weil Programmieren etwas ganz anderes ist als die Nutzung sprachlicher Fähigkeiten? Joachim, erläutere doch mal.
Joachim
Es geht zum eine Idee von Sigmar Gabriel oder einem seiner Berater, Programmiersprachen als zweite Fremdsprache an den Schulen zuzulassen. Ich halte das für eine Schnapsidee, denn Programmiersprachen sind etwas anderes. Aber bevor ich das ausführe, wäre es vielleicht hilfreich zu erfahren, was Computersprachen für dich, aus Sicht eines Linguisten zu Sprachen macht.
jhermes
So ein richtiger Linguist bin ich ja nicht. Aber dafür weiß ich auch ein bisschen was über Programmierung. Ich spekuliere mal wild drauflos, weshalb du Programmierung die Sprachhaftigkeit absprichst. Wahrscheinlich hast du einen einfachen Code im Sinn, der bestimmte Anweisungen in Reihe schaltet, die in Assembler- oder Maschinencode übersetzt und auf der zentralen Recheneinheit ausgeführt werden. So etwas nennt man auch Algorithmus und dieser Fall – da muss ich dir Recht geben – hat wenig mit natürlichsprachlicher Kommunikation zu tun. Das wäre so, als würde ein Schwede einzig und allein deutsch lernen, um deutschen IKEA-Käufern tagein, tagaus Anweisungen zum Zusammenbau der Möbel zu geben.
Zwar lösen sich auch modernere Ansätze der Programmierung nicht davon, dass letztlich Algorithmen codiert werden, allerdings wurden inzwischen so Konzepte eingeführt wie
- Funktionale Abstraktion (wo Arbeitsanweisungen gebündelt, durch einen bestimmten Begriff aufgerufen werden können und nach außen ein bestimmtes Verhalten zeigen)
- Objektorientierte Programmierung (wo solche benannten Arbeitsanweisungs-Bündel als Verhalten bestimmter, wiederum benannter Objekte festgelegt werden)
- Komponentenorientierte Software-Entwicklung (wo wiederum Bündel aus Objekten zusammengestellt werden und sich so ein Bündel nach außen auf bestimmte Weise verhält)
Das Verhalten von Programmeinheiten kann also von der Programmiererin oder dem Programmierer also auf verschiedenen Ebenen (Methoden – Objekte – Komponenten) modelliert und benannt werden. Softwareentwicklung sollte nun darauf ausgerichtet sein, dass diese Programmeinheiten von anderen Anwenderinnen und Anwendern auch wiederverwendet werden können. Das heißt, Programmierung ist nicht mehr nur Kommunikation mit der Maschine, sondern auch Kommunikation der Programmierenden untereinander. Man sollte sich Mühe geben, die eigenen Programmeinheiten auf durchschaubare Weise zu benennen, auf dass sie von anderen auch gefunden und im intendierten Sinn genutzt werden können. Es gibt selbstverständlich bestimmte Konventionen in der Benennung, die eingehalten werden sollten, aber nicht unbedingt müssen. Diese Konventionen sind bisweilen unscharf und werden laufend neu verhandelt. Ja, Programmiersprachen sind etwas anderes als eine zweite Fremdsprache. Aber sie sind nicht so anders.
Joachim
Ich verstehe was du meinst. Habe im Sommer vor Studierenden einen Vortrag zum Thema “Studium und dann?” gehalten und dort darauf hingewiesen, dass Wissenschaft auch Kommunikation ist. Sei es weil Kooperationen organisiert werden müssen oder weil die Veröffentlichung der Ergebnisse Teil jeder Forschung ist.
Aber mir ging es in dem Tweet ja um die Schulbildung. Und dort ist jedes Fach nur der Schatten seiner selbst. In Mathematik wird gerechnet, in Physik auch. Sprachfähigkeit helfen den Schülerinnen und Schülern in diesen Fächern vielleicht, um sich den Hals zu retten, wenn sie ihre Hausaufgaben nicht gemacht haben. In der Regel reicht aber einfaches analytisches Sprachverständnis aus und Kommunikationsfähigkeit fließt kaum in die Note ein.
Es wäre mein Traum als Gymnasiast gewesen, wenn ich mit dem Lernen einer Programmiersprache den sprachlich, künstlerischen Lernbereich hätte abdecken können. Programmieren hatte ich mir ja am C64 selbst beigebracht. Aber es wäre halt ein Fachabi geworden: Mathe und Physik als Leistungskurse, Programmieren als Prüfungsfach und für den Gesellschaftswissenschaftlichen Bereich Wirtschaft. Da wird in der Schule auch nur gerechnet, Personalführung hatten wir nicht.
Ich bleibe dabei: In der Schule werden Programmiersprachen über das algorithmische nicht hinauskommen und gehören damit in den naturwissenschaftlich, mathematischen Bereich und nicht zu den Sprachen. Sie können eine zweite Fremdsprache nicht ersetzen.
jhermes
Ich finde es schön, dass du aus der mathematisch-naturwissenschaftlichen Ecke für eine breite Ausbildung plädierst. Und ich teile im Grunde auch deine Befürchtung, Schulen seinen nicht genug darauf vorbereitet, Programmierung, so wie ich sie beschreibe, vernünftig zu lehren. Das System Schule ist auch gar nicht darauf angelegt, kurzfristig auf neuere Entwicklungen zu reagieren – wie soll das auch gehen, wenn die Ausbildung der Lehrenden mehrere Jahre dauert, Weiterbildung nicht im Zentrum des Interesses steht und Lehrpläne nicht alle drei Jahre umgeworfen werden können? Tatsächlich kann die Universität da mit der Kopplung von Forschung und Lehre viel Passenderes leisten (auch wenn wir inzwischen gezwungen werden, Studieninhalte haarklein in Modulhandbüchern zu fixieren).
Allerdings ist die Kommunikation mit Computern über vernetzte Systeme ein zu zentrales Element unseres täglichen Lebens geworden, als dass ihre Grundlagen nur Spezialisten (die sich für ein entsprechendes Fach an der Uni einschreiben) zugänglich sein sollten. Auch wenn ich nicht genau weiß, was alles zu diesen Grundlagen zählen sollte und in welchem Rahmen sie vermittelt werden sollen, sagt mir ein Bauchgefühl, dass sie einen Platz an der Schule brauchen.
Joachim
Ja, ich glaube wir sind nicht weit voneinander entfernt. Natürlich ist verhandelbar, welche modernen Inhalte ins Schulcurriculum aufgenommen werden sollten und zulasten welches Faches das geschehen soll. Ich wollte in dem Tweet nur meinen Ärger darüber ausdrücken, dass hier eine Verschiebung des Schwerpunktes vom Sprachlichen ins Technische nicht offen kommuniziert wird. Gabriel hat das auf einem IT-Gipfel vorgeschlagen. Ich bin sicher, auf einer Linguistiktagung hätte er was anderes gesagt.
jhermes
D’accord (endlich mal meine Schulfranzösisch-Kenntnisse angewendet)
Im Informatikstudium habe ich einiges über formale Sprachen gelernt, zu denen das Programmieren auch gehört. Prof. Noam Chomsky hat in diesem Bereich sehr viel Arbeit geleistet und den Versuch unternommen auch natürliche Sprache formal und mathematisch zu beschreiben, was aber noch nicht ganz gelungen ist (siehe Chomsky-Hierarchie). Es gibt hier auch andere Ansätze der mathematischen Beschreibung.
Den natürlichen Sprachen sowie den formalen Computersprachen dienen viele Dinge gemeinsam als Grundlage, wie Token / Wörter, Syntaxregeln und Kontextinformationen.
Ich persönlich würde Programmieren nicht als Fremdsprache deklarieren, da sie einen anderen Zweck erfüllt als die natürlichen Sprachen, die wir lernen.
Danke für die anregenden Kommentare, die sicher wieder neue Anstöße zum Weiterdiskutieren liefern. Bzgl. @droi möchte ich kurz einwenden, dass alle Begriffe selbstverständlich und ohne Strafandrohung immer metaphorisch gebraucht werden dürfen. Er erinnere sich an die “Sprache der Gewehre” oder die “Zahlen, die eine deutliche Sprache sprechen”.
Ein Programm ist ein (komplexer/einfacher) (virtueller) Automat(enplan).
Mich hat die Metapher “genetischer Code=Sprache” geärgert. Oder “Mathe = Sprache der Natur”. Klingt alles schön, und irgendwie auch richtig, nur ist dann letzlich alles “Sprache”.
Zwei Erfahrungen habe ich in langen Jahren in der IT-Branche gemacht:
1. Auch wenn Programmiersprachen und natürliche Sprachen viele signifikante Unterschiede haben, weist das Erlernen einer Programmiersprache eine Menge Parallelem zum Erlernen einer natürlichen Sprache auf, insbesondere in den Stufen des Lernens und des Erkenntnisgewinns: Zunächst das Erlernen des eigentlichen Alphabets, seien es nun Winkelklammern oder kyrillische Buchstaben, dann Vokabular und Grammatik, wie oben schon erwähnt. Aber es geht weiter: Man lernt, in einer Programmiersprache zu so formulieren, dass der/die/das Gegenüber einen versteht, auch wenn es noch nicht viel mit dem zu tun hat, wie ein/e Muttersprachler/in formuliert. Dann lernt man zu verstehen wie Muttersprachler sich ausdrücken. Und im Lauf der Jahre oder gar Jahrzehnte lernt man, die Idiomatik der Sprache selbst Schritt für Schritt anzuwenden, zunehmend komplexere Werke zu durchdringen und vieles mehr.
2. Auch auf die Gefahr hin, hierfür – gelinde gesagt – Stirnrunzeln ernten: Die Beherrschung einer Programmiersprache (oder auch das Talent bzw. der Willen dafür) steht (vor dem Hintergrund des Punkts 1 für mich erstaunlicherweise) sehr, sehr, sehr oft im Kontrast zur Beherrschung einer natürlichen Sprache (zumindest in Schriftform). Anders formuliert: Ich habe bei keiner anderen (zumindest mehr oder weniger akademischen) Berufsgruppe jemals so enorme Schwierigkeiten erlebt, sich klar und halbwegs korrekt schriftlich auszudrücken. Würde mich interessieren, ob es dazu wissenschaftliche Untersuchungen gibt oder ob da jemand ähnliche Erfahrungswerte hat.
Außerdem: Ein klares Ja dafür, Jugendlichen in der Schule ein Angebot zu unterbreiten, sich mit Programmierung zu konfrontieren. Die meisten werden das im zukünftigen Berufsalltag ebenso wenig benötigen wie den Zitronensäurezyklus aus dem Biologieunterricht oder die Klimadiagrammanalyse aus dem Gemeinschaftskundeunterricht oder das Partiturmitlesen aus dem Musikunterricht. Aber für alles sollte es einen (zwanglosen!) Impuls geben, der vielleicht bei dem einen oder der anderen auf fruchtbaren Boden fällt.
Programmiersprachen sind Sprachen, das steht für mich außerhalb jeden Zweifels. Zum einen haben Programmiersprachen eine Grammatik (teilweise rigoros definiert, also sehr schematisch und eindeutig interpretierbar, teilweise mit nicht unerheblichem Interpretationsspielraum der dann Programmierern dieselben Kopfschmerzen bereitet, die ein Gesetzgeber beim formulieren von Richtliniene hat). Zum anderen haben Programmiersprachen ein Vokabular, formuliert man Code bildet man Einheiten wie Sätze, Absätze, etc. Das sind so die etwas härteren Fakten, dass es sich um Sprachen handelt.
Ein paar Indizien unterstützen diese Sicht finde ich: Quelltext ist stark Abhängig von einer individuellen Formulierung. Zwei Programmierer die dieselbe Passage schreiben, werden unterschiedliche Texte formulieren. Sind die Texte in der selben Programmiersprache formuliert sind sie in der Regel dem anderen Programmierer verständlich. Schreiben beide Programmierer in unterschiedlichen Sprachen ist dies nicht unbedingt der Fall.
Natürlich sind die oben genannten Aspekte sicher auch richtig, ein Programmierkurs unterscheidet sich von einem Spanischunterricht wesentlich mehr, als der sich vom Französischunterricht. Zeitgleich ist in der Softwareentwicklung durchaus vieles Thema, was mit Sprache wenig zu tun hat (und dann allerdings wieder: Ich kenne kaum ein Gebiet auf dem Kommunikation so entscheidend ist wie bei der Softwareentwicklung).
Ich finde Programmierunterricht an Schulen notwendig aus berufsperspektivischer Sicht. Wir stehen erst am Anfang einer Software-Revolution die unsere Welt so grundlegend verändert wie die Industrialisierung, wer Code schreiben kann wird potentiell jemand sein der als Handelnder zumindest über Wasser bleiben wird, andere laufen Gefahr abgehängt zu werden.
Den Programmieren-statt-zweite-Fremdsprache Ansatz finde ich allerdings wieder schade. Das sollte nicht auf kosten einer zweiten Fremdsprache gehen. Am schönsten fände ich es in den höheren Klassen Fächer wie Erdkunde auf Englisch zu halten, es bliebe dann mehr Zeit für eine weitere Fremdsprache und den Programmierkurs.
PS: Ich lerne gerade Türkisch und dabei fällt mir immer wieder auf, wie mir meine Programmiersprachenkenntnisse dabei helfen die Grammatik zu verstehen und anzuwenden.
Pingback: Blogspektrogramm 43/2014 – Sprachlog
Pingback: Programm und Sprache | TEXperimenTales