Was haben Programmiersprachen mit natürlichen Sprachen gemeinsam?
Es gibt eine Menge Gemeinsamkeiten. Beide haben Vokabular, Syntax eine Grammatik. Beide Sprachen beschreiben Umstände ihrer Umgebung, ihrer Welt und der Dinge die wichtig sind. Aber natürlich ist die Welt der Computersprache eine andere als die der Menschen. Die Welt der Computersprachen läßt keine Ungenauigkeiten zu, obwohl es Konstruktionen gibt, mit denen man sich lax ausdrücken kann, auch in Programmiersprachen.
Die meisten sehen Programmiersprachen als das, was man im typischen Wikipedia-Artikel findet oder im Anfängerhandbuch. Man hat 21 (Lua) oder 33 (ISO-C) oder so Vokabeln und eine Grammatik, die man benutzen kann, um korrekte Sätze zu bilden, mit denen dann Algorithmen abgebildet werden oder Daten gespeichert und so weiter.
Aber das ist nicht wahr. Die Grundbausteine der Programmiersprachen entsprechen eigentlich weniger dem, was wir in natürlichen Sprachen als Vokabeln verstehen, sondern sind mehr sowas wie grammatikalische Konstruktionsmöglichkeiten. Sowas wie Zeiten, wie grammatikalische Formulierungen, “for” zum Beispiel ist keine Vokabel und steht für sich für nichts, aber drückt aus, wie man eine Schleife anlegt.
Das Vokabular einer Programmiersprache ist vielmehr der Kontext in dem sie eingesetzt wird, die Bibliotheken, das System, all die Funktionen, die Funktionalität die sie hat. Wenn man jedes dieser Funktionen als Verb betrachtet, die etwas zu tun ausdrücken, die Daten als Subjekte oder Objekte, dann wird da schon mehr ein sinnvoller Vergleich daraus.
Es gibt viele, die behaupten, dass die menschliche Sprache sehr viel vielschichtiger ist und mehr Vokabeln hat. Das ist in diesem Sinne gesehen jedenfalls nicht richtig. Wir haben einen aktiven Wortschatz von vielleicht 30.000 oder 40.000 Worten, wenn wir gut gebildet sind als Menschen, die besten Schriftsteller schaffen es vielleicht auf ein paar hunderttausend.
Die Systemfunktionen eines Betriebssystems wie Linux mit all seinen Applikationen gehen allerdings in die Millionen. Allein auf der Shell habe ich etwa 10.000 Befehle gespeichert, also einzelne Programme, ohne auch nur eine Stufe tiefer zu gehen auf die dahinter liegenden Algorithmen, Funktionen oder Bibliotheken.
Die Befehle, das wären nur die Verben, dazu kommen die Konfigurationen, die Daten die gespeichert sind, das sind hunderttausende. Und immer noch nicht bin ich bei dem Wahnsinn, der hinter jeder Bibliothek auf dich wartet; Computersprachen haben ein Vokabularschatz von mehreren Millionen Worten, Begriffen, komplexen Formulierungen, philosophischen Konzepten, Religionen (ja, es gibt Ideologie und irrationale Bewegungen in unserer Welt und die sind größtenteils schädlich, eben weil nicht rational), die Welt der Computersprachen ist linguistisch gesehen das größte Babel der Menschheit.
Ich habe bei den Sprachen, die ich gelernt habe, bei 200 aufgehört zu zählen, aber allein das eine “Quine” Programm (ein Programm, das sich selbst ausdruckt), das ich mal durch gegangen bin und das aus 500 Sprachen bestand gibt vielleicht einen Eindruck wie viele Computersprachen sich in meinem Kopf angesammelt haben.
Polyglot nennen sich die meisten von uns und es ist keinesfalls unüblich für Programmierer mindestens dreißig Sprachen zu kennen und lesen und schreiben und anwenden zu können.
Viele der Sprachen sind Dialekte und unterscheiden sich nicht großartig, viele der Sprachen greifen auf die selben oder ähnlichen Bibliotheken oder Konzepte zurück, aber wenn wir in der gegenständlichen Welt von Schnee reden in ein paar hundert Sprachen, dann ist das auch das selbe Konzept, nur unterschiedliche Laute dafür.
Und weil die Realität dieser Welt so komplex ist, gibt es nur so wenige von uns, schätze ich. Jeder kann ein Programm schreiben, jeder der auch nur ein bisschen Gehirn hat kann eine kleine Aufgabe in einer übersichtlichen Programmiersprache lösen. Aber um die Sprache des Computers, die Komplexität eines Systems wie Linux und den Umfang und die Masse des darin gespeicherten Wissens, der Erfahrung, der Konzepte und Inhalte zu erfassen, braucht es ein Leben.
Und von den Menschen, die du so kennst ist meiner Schätzung nach und ich bin hier schwer optimistisch, etwa einer von 30.000 im Stande das durch zu halten und das zu tun. Es gibt weltweit nicht mehr als ein paar Millionen von uns. Vielleicht zwei, manche schätzen bis zu 18, aber ich bezweifel das stark.
Der Computer vor dir ist vermutlich ein Linux-System. Etwa 550 Menschen waren im All bislang. 3300 Menschen waren im Linux Kernel und haben daran gearbeitet. Nur sehr wenige Menschen auf dieser Welt haben das Wissen, sind so tief drin. Und viele von diesen 3300 Menschen haben nichts besonderes getan. Immerhin, sie sind drin, sie sind dabei gewesen!
Das ist der Fußabdruck auf dem Mond.
> grep -ir 'behrens' /usr/share/X11 
Die Sache ist die, der durchschnittliche Professor an der Universität wird dir vermutlich das erzählen, was hier Wort für Wort wiedergekäut zu lesen sein wird: Computersprachen sind primitiver, sind klarer definiert sind viel beschränkter als natürliche Sprache.
Falsch.
Die Sprachen sind so präzis, weil sie ein Fundament bilden müssen, eine Stahlbeton-harte Grundlage um ein solche komplexes System aufbauen zu können. Die Welt eines Computers ist unerbittlich, eine kleine Missformulierung, ein winziger Gedankenfehler und dein Programm läuft nicht, die CPU oder der Compiler versteht nicht, was du meinst oder noch schlimmer versteht dich falsch und fängt an etwas zu tun, was nicht beabsichtigt war von dir.
Und möglicherweise zerstört das die Arbeit von Wochen oder Jahren in wenigen Mikrosekunden, schneller als die Explosion von Nitroglycerin sich ausbreiten würde, als dies reagieren kann.
Und wir sind alle Poeten. Ein Programmierer ist ein Dichter, ein Sprach-Verdichter, der diese Probleme formuliert in diesen komplexen Sprachen. Es gibt dabei lallende, besoffene Zeitgenossen, die die Probleme hinausgrölen, in falscher Syntax, unelegant und schwankend. Und dann gibt es die Künstler, die es in wenigen Worten auszudrücken schaffen, wofür andere Seiten um Seiten unlesbaren Dreck brauchen, den niemand Lust zu lesen hat, nicht mal die CPU.
Ich zumindest habe immer das Gefühl gehabt, dass meine Fähigkeiten als Poet, genauso wie als Musiker direkt etwas mit meinen Fähigkeiten als Programmierer zu tun haben. Ich bin einer von dreißigtausend, einer von 3300, aber anders als der gitarrenwichsende Rockstar gibt es keine kreischenden Teenager vor meiner Tür, die Welt sieht nicht, was wir tun, wir werden weder gesehen noch geschätzt und nur widerwillig angemessen bezahlt.
Wir sind Mönche, die für die Sache leben, etwas zurück gezogen von der Welt, wir sind Krieger, die einen Krieg kämpfen von dem keiner etwas weiß, doch wir stehen auf Berggipfeln, die so hoch sind, dass noch nie ein Mensch sie erklommen hat und nach uns vielleicht auch nie wieder einer. Wir sitzen dort oben und schreiben Gedichte in Sprachen, die nur eine Maschine verstehen kann und deren Art uns zu sagen, dass es gut ist, was wir schrieben, indem sie genau tut, was wir meinen, indem sie es schnell tut und effizient.
Wir aber sind die Philosophen, die die Welt lenken, unsere Programme und Konzepte haben das Leben verändert wie keine Generation vor uns es vermocht hat. Das Smartfon, das du in der Tasche hast ist erst 2006 erfunden worden, vor nur 11 Jahren.
Das Internet existiert, so wie du es kennst, erst seit 1994 oder so, seit 27 Jahren. Seit 1997 haben wir keinen menschlichen Schachweltmeister mehr, seit 2017 keinen menschlichen Go-Weltmeister. Jeopardy wurde von Watson, einer AI gewonnen und gerade erst hat eine AI einen Haufen Profi-Pokerspieler um 1,7 Millionen Dollar gebracht.
In einer Weise, dass diese das Gefühl hatten, als wenn sie gegen jemanden spielen, der schummelt, so viel besser war diese AI. Eine AI hatte gerade mal 8 Stunden Zeit, mit nichts als dem Wissen wie Schachfiguren gezogen werden und nur gegen sich selbst spielend, um danach in einem hunderte Partien währenden Wettkampf gegen die besten Schachprogramme der Welt (menschliche Weltmeister gibt es nicht mehr) die meisten dieser Spiele zu gewinnen.
Das heißt 1400 Jahre menschliche Schachgeschichte, menschliche Schachwissenschaft und Erfahrung und Leidenschaft, in acht Stunden stillem Spiel erlernt und niemand weiß in welchem Jahrtausend diese Maschine wirklich spielt. Die Schachgelehrten sagen, dass die Gemeinschaft umdenken muss. Die AI spielt wie die alten Meister, elegant und intuitiv und brilliant.
Acht Stunden waren das.
Eine andere AI hat jetzt eine neue AI gebaut, die ein paar hundertmal effizienter sind als alle AI die von Menschen gebaut wurden vorher.
Ich erzähle das, um ein Gefühl zu geben wo wir stehen. “Computersprachen sind primitiv”, sagen sie. Ich sage: nein. Computersprachen sind hoch komplex und sehr viel weiter entwickelt als jede menschliche Sprache. Mit einem unendlich feineren Vokabular, einer präzisen und eindeutigen Ausdrucksweise, die aber in höheren Konstruktionen dieser Sprache es zulässt Dinge wie Intuition und Brillianz zu erzeugen, die Schönheit und Häßlichkeit ausdrücken kann.
Sie sagen, die Computerwissenschaft sei nur ein Teilgebiet der Mathematik. Ich sage, dass die Mathematik zu einem Wurmfortsatz der Computerwissenschaft geworden ist. Alle Fortschritte und Durchbrüche in der Psychologie, in der Medizin, der Physik, der Soziologie, ja selbst in der Philosophie sind in der Computerwissenschaft gemacht worden in den letzten Jahrzehnten. Es ist das schlagende, pochende Herz der Wissenschaft. Ohne sie geht gar nichts mehr.
Und so wie die Computer-Sprachen die Welt der Wissenschaft übernommen hat, durchzieht sie jetzt die Welt in der wir leben. Nicht mit eisiger Kälte, wie in den Dystopien, sondern man kann die Hingabe dahinter fühlen, die Philosophie der Freiheit und den klaren Blick der Rationalität, für eine bessere Zukunft, eine bessere Welt für alle.
Die Politik, auch das liegt im Herzen unserer CPU. Auch das können wir nur verändern, wenn wir die Sprache der Maschine sprechen. Es ist die Sprache der Zukunft für jeden von uns. Wir können mit den Maschinen reden, dann gehört uns die Zukunft, dann sind wir ein Teil davon oder wir werden von denen gelenkt werden, die dies können.
Lerne eine Computersprache, fang’ gleich heute damit an. Mach das auch zu deiner Zukunft. Es ist deine Entscheidung. Es ist einfach Tatsache, dass diese Zukunft statt findet.
Lerne Lua Tutorial
Lua IDE/editor/debugger for Windows, Mac OSX, and Linux
Du hast damit eine sehr leistungsfähige zukunftsträchtige erste Sprache, die dich unterstützen wird von den ersten Schritten bis in das Leben als Computerprofi oder AI Dog-Brain-Trainer. Es ist die schnellste und effizienteste Hochsprache und es gibt keine Limits. Du kannst über sie hinabsteigen in den Keller, wo die großen Bibliotheken stehen von Linux und all den Projekten und kannst alles nutzen, was da ist. Es gibt kein Limit, daher empfehle ich diese Sprache und nicht sowas wie Python, die mindesten dreißig mal langsamer ist (eher dreihundert mal, ich empfehle LuaJIT), keine Kellertür hat und keinen Zugang zu dem Bibliotheken des Systems.
Lerne mit dem Maschinen sprechen. Es ist die wichtigste Sprache deiner Zukunft, egal was du ansonsten tust. Egal was du tust. Es wird ein integraler Bestandteil deines Lebens sein. Du schaffst es auch als Computer-Analphabet, aber du wirst nicht weit kommen damit.
Hoffe, ich konnte helfen.