Alan Kay: Wie ich Informatik 101 unterrichten wĂŒrde

„Ein Grund, tatsĂ€chlich an die UniversitĂ€t zu gehen, ist, ĂŒber die bloße berufliche Ausbildung hinauszugehen und sich stattdessen mit tiefergehenden Ideen auseinanderzusetzen.“

Alan Kay: Wie ich Informatik 101 unterrichten wĂŒrde

Lassen Sie uns einen Moment ĂŒber diese Frage nachdenken. Vor einigen Jahren luden mich die Fachbereiche fĂŒr Informatik zu Vorlesungen an mehreren UniversitĂ€ten ein. Fast zufĂ€llig fragte ich mein erstes Publikum, bestehend aus Studenten im letzten Jahr, Doktoranden und Professoren, nach ihrer Definition von „Informatik“. Alle konnten nur eine ingenieurtechnische Definition geben. Ich stellte diese Frage an jedem neuen Ort, und ĂŒberall waren die Ergebnisse Ă€hnlich.

Eine weitere Frage war: „Wer ist Douglas Engelbart?“. Mehrere Personen sagten: „War er nicht irgendwie mit der Computermaus verbunden?“ (und das hat mich sehr enttĂ€uscht, da meine wissenschaftliche Gemeinschaft viel MĂŒhe darauf verwendet hat, dass diese Frage nach zwei oder drei Mausklicks beantwortet werden kann, und sicherzustellen, dass Engelbart tatsĂ€chlich irgendwie mit der Computermaus verbunden war).

Teilweise lag das Problem im Mangel an Neugier, teilweise in der Enge persönlicher Ziele, die nicht mit Lernen verbunden waren, und teilweise im fehlenden VerstĂ€ndnis dafĂŒr, was diese Wissenschaft ausmacht, und so weiter.

Ich arbeite seit einigen Jahren halbtags am Fachbereich fĂŒr Computertechnik der UniversitĂ€t Kalifornien (im Wesentlichen bin ich Professor, aber ich muss nicht zu Fachbereichssitzungen gehen). Gelegentlich halte ich Vorlesungen, manchmal fĂŒr Erstsemester. In diesen Jahren ist das ohnehin schon niedrige Interesse an Informatik erheblich gesunken (aber das Interesse an den Berufen ist gestiegen, da die Computertechnik als Weg zu einem gut bezahlten Job betrachtet wird, wenn man Programmieren kann und ein Zertifikat von einer der besten 10 Hochschulen hat). Infolgedessen hat sich noch kein Student darĂŒber beschwert, dass C++ die erste Programmiersprache an der UniversitĂ€t Kalifornien ist!

Ich glaube, wir sind auf eine Situation gestoßen, in der sowohl die Begriffe „Computer“ als auch „Wissenschaft“ durch schwache, massive Konzepte entwertet wurden, um einen neuen Begriff zu schaffen – eine Art Etikett auf Jeans – der gut klingt, aber ziemlich leer ist. Ein damit verbundener Begriff, der auf Ă€hnliche Weise entwertet wurde, ist „Softwaretechnik“, der wiederum nicht die genialsten Ideen von „Programmierung“ und „Ingenieurwesen“ verwendet hat, sondern sie einfach kombiniert hat (das war absichtlich in den sechziger Jahren so, als der Begriff geprĂ€gt wurde).

Ein Grund, tatsĂ€chlich an die UniversitĂ€t zu gehen, besteht darin, ĂŒber die einfache Berufsausbildung hinauszugehen und sich stattdessen an tiefergehenden Ideen festzuhalten. Ich halte es fĂŒr sinnvoll, als EinfĂŒhrung in das Fachgebiet zu versuchen – wenn möglich mit Hilfe von Beispielen – die Lernenden dazu zu bringen, sich mit realen Problemen auseinanderzusetzen und zu verstehen, was in diesem Bereich tatsĂ€chlich interessant, wichtig und zentral ist.

Die ErstklĂ€ssler freuen sich, wenn sie sehen, wie ein Lineal ĂŒber ein anderes Lineal gelegt wird und sich so in einen Rechenautomaten verwandelt, mit dem sie die SchĂŒler der 5. Klasse beim HinzufĂŒgen von Bruchzahlen ĂŒbertreffen können. Und dann sind sie glĂŒcklich, an der Entwicklung verbesserter Rechenmaschinen mitzuwirken. Sie haben einen echten Computer berĂŒhrt – ein physisches und mentales Werkzeug, das uns beim Denken hilft. Sie haben wirklich effiziente Möglichkeiten zur Darstellung von Zahlen erlernt – effektiver, als es in Schulen gelehrt wird!

Sie konnten ihre gesunde Idee des „HinzufĂŒgens“ als „Ansammlung“ mit etwas Ähnlichem mit neuen mĂ€chtigen Eigenschaften verbinden. Sie programmierten es so, dass es in der Lage war, verschiedene Probleme zu lösen.

Sie haben es auch erweitert. Und so weiter. Das ist kein digitaler Computer. Und das ist kein Computer mit speicherprogrammierter Steuerung. Aber genau das ist der Kern eines Computers. Genau wie der Antikythera-Mechanismus – das ist im Grunde die Essenz von Computern und Berechnungen.

Alan Kay: Wie ich Informatik 101 unterrichten wĂŒrde

Der Antikythera-Mechanismus

Wie weit können wir gehen und wie viel können wir tun, bevor alles außer Kontrolle gerĂ€t und wir uns in Abstraktionen verlieren? Ich habe schon immer eine Vorliebe fĂŒr die Charakterisierung von Alan Perlis — der erste PreistrĂ€ger des Turing-Preises, der möglicherweise den Begriff „Informatik“ erfunden hat — der in den 60er Jahren sagte: „Informatik ist die Wissenschaft der Prozesse“. Über alle Prozesse.

FĂŒr das Unternehmen Quora lassen Sie uns nicht versuchen, dies weiter zu treiben oder in eine religiöse Dogmatik zu verwandeln. Lassen Sie uns einfach glĂŒcklich die Idee nutzen Alan Perlis, um besser ĂŒber unser Gebiet nachzudenken. Und besonders darĂŒber, wie man dazu unterrichten kann. Jetzt mĂŒssen wir auf die moderne Bedeutung von „Wissenschaft“ blicken, und Perlis war sich ziemlich sicher, dass sie nicht mit alten Bedeutungen (zum Beispiel wie „Wissen sammeln“) und Anwendungen (beispielsweise „Bibliothekswesen“ oder sogar „Geisteswissenschaften“) verwĂ€ssert werden sollte. Unter „Wissenschaft“ versuchte er, das PhĂ€nomen zu verstehen, indem er Modelle/Karten schuf, die versuchten, PhĂ€nomene „nachzuvollziehen“ und vorherzusagen.

Alan Kay: Wie ich Informatik 101 unterrichten wĂŒrde

Ich habe einige Interviews gegeben, wie die besten Karten und Modelle oft fĂŒr T-Shirts geeignet sind, so wie die Maxwell-Gleichungen und andere. Die Analogie ist, dass es eine „Wissenschaft der BrĂŒcken“ gibt, obwohl die meisten BrĂŒcken vom Menschen gemacht sind. Aber sobald eine BrĂŒcke gebaut ist, spiegelt sie PhĂ€nomene wider, Forscher können diese studieren, aus BrĂŒcken können viele Arten von Modellen erstellt und umfassende und nĂŒtzliche „BrĂŒckentheorien“ entwickelt werden. Das Lustige ist, dass man dann neue BrĂŒcken entwerfen und bauen kann (ich habe bereits erwĂ€hnt, dass es kaum etwas Lustigeres gibt, als die Zusammenarbeit von Wissenschaftlern und Ingenieuren zur Lösung großer und wichtiger Probleme!).

Alan Kay: Wie ich Informatik 101 unterrichten wĂŒrde

Herbert Simon — Turing-PreistrĂ€ger und NobelpreistrĂ€ger — nannte das alles „Wissenschaften des KĂŒnstlichen“ (und schrieb ein großartiges Buch mit demselben Titel).

Alan Kay: Wie ich Informatik 101 unterrichten wĂŒrde

Lassen Sie mich ein Beispiel geben. In den 50er Jahren bauten Unternehmen und UniversitĂ€ten Computer mit programmierbarem Speicher und begannen, sie zu programmieren — und es gab einen besonderen Moment, als 1956 Fortran erschien — das nicht die erste Hochsprache war, aber möglicherweise die erste, die so gut gemacht wurde, dass sie in vielen verschiedenen Bereichen verwendet wurde, einschließlich solcher, die zuvor nur in Maschinenprache durchgefĂŒhrt wurden.

Das alles fĂŒhrte zu „PhĂ€nomenen“.

Alan Kay: Wie ich Informatik 101 unterrichten wĂŒrde

John McCarthy

Die Geschichte von Lisp ist komplizierter, aber John McCarthy war an dem Versuch interessiert, eine „mathematische Theorie der Berechnungen“ zu finden und war fest entschlossen, sicherzustellen, dass alles hervorragend funktionierte. Die eval-Funktion, die Lisp interpretiert, könnte problemlos auf ein T-Shirt gedruckt werden! Im Vergleich zu einem „Programmierungssystem“ ist das lĂ€cherlich. Was noch wichtiger ist, diese „Theorie der Berechnungen“ hatte ein mĂ€chtigeres Konzept als Fortran! Es war die beste BrĂŒckenidee!

Die Miniaturisierung von Lisp ermöglicht es, die gesamte Idee des Programmierens mit nur wenigen Klicks auf einem tieferen Niveau zu erfassen und auf einem Niveau ĂŒberdacht zu werden, das einfach unmöglich erscheint, wenn man auf die riesigen Artefakte blickt (das ist einer der GrĂŒnde, warum Wissenschaftler es lieben, wenn Mathematik kompakt und mĂ€chtig ist). Die hier verwendete Mathematik ist neue Mathematik, da sie Konzepte wie „vorher“ und „nachher“ zulĂ€sst, und das fĂŒhrt zur „Logik variabler GrĂ¶ĂŸen“, die sowohl funktionale AbhĂ€ngigkeiten als auch logische Denkprozesse beibehalten kann, wĂ€hrend sie gleichzeitig Raum fĂŒr Position und Zeitverlauf lĂ€sst. (Das ist in unserer Zeit in der rauen Welt des situativen Programmierens immer noch nicht verstanden.)

Lisp, das als mĂ€chtige Programmiersprache und Metasprache fungiert und seine eigene Theorie darstellen kann, ist ein Beispiel fĂŒr echte Informatik. Wenn Sie es und Ă€hnliche Dinge lernen, können Sie tiefer denken und mehr Verantwortung fĂŒr Ihr eigenes Schicksal ĂŒbernehmen, als wenn Sie einfach gelernt haben, in Fortran oder seinen modernen Äquivalenten zu programmieren (
 so können Sie sich den Programmierern nĂ€hern!).

Sie werden viel mehr ĂŒber spezielle Arten des Designs erfahren, die in der Berechnung erforderlich sind (zum Beispiel wird es nicht geschĂ€tzt, wenn Berechnungen oft ĂŒber die Grenzen der Rechenumgebung hinausgehen mĂŒssen: eine der besonderen Eigenschaften von gespeicherten programmierbaren Berechnungen besteht darin, dass es sich nicht nur um Material fĂŒr ein Programm handelt, sondern um Material fĂŒr einen völlig neuen Computer).

Ein weiterer Grund fĂŒr die Wahl der Definition von Perliss liegt darin, dass Berechnungen insgesamt viel mehr mit der Schaffung von Systemen vieler Arten verbunden sind als mit Algorithmen, "Datenstrukturen" oder sogar Programmierung im eigentlichen Sinne. Zum Beispiel ist ein Computer ein System, Berechnungen sind Systeme, ein lokales Netzwerk und das Internet sind Systeme, und die meisten Programme sollten bessere Systeme darstellen, als sie es tatsĂ€chlich sind (der alte Programmierstil aus den 50er Jahren hat bis zu dem Punkt ĂŒberlebt, dass es scheint, als sollte Programmierung so sein — nichts könnte weiter von der Wahrheit entfernt sein).

Das Internet ist ein gutes Beispiel — im Gegensatz zu den meisten Programmen heutzutage muss das Internet nicht gestoppt werden, um etwas zu reparieren oder zu verbessern — es Ă€hnelt mehr einem biologischen System — nach unserer Absicht, als dem, was die meisten Menschen als ein Rechensystem betrachten. Und es ist viel skalierbarer und zuverlĂ€ssiger als fast alle aktuellen Softwaresysteme. Es ist wirklich wert, darĂŒber nachzudenken, bevor man AnfĂ€ngern in der Programmierung nicht so mĂ€chtigen Konzepten beibringt!

Also, was wir im ersten Kurs der Informatik tun mĂŒssen, ist zu berĂŒcksichtigen, was die Studierenden zu Beginn tatsĂ€chlich tun können, und dann versuchen, innerhalb ihrer "kognitiven Belastung" zu bleiben, um ihnen zu helfen, zu dem zu gelangen, was wirklich wichtig ist. Es ist sehr wichtig, "echt zu bleiben" und Wege zu finden, die intellektuell ehrlich sind und die denen passen, die gerade erst mit dem Lernen beginnen. (Bitte lehre keine schlechten Ideen nur, weil sie etwas einfacher erscheinen — viele schlechte Ideen sind tatsĂ€chlich einfacher!).

Studierende sollten beginnen, etwas zu schaffen, das viele wichtige Eigenschaften hat, die ich hier besprochen habe. Es sollte ein System aus mehreren dynamisch interagierenden Teilen sein und so weiter. Ein guter Weg, um zu entscheiden, welche Programmiersprache dabei verwendet werden sollte, besteht darin, einfach etwas zu machen, das Tausende von interagierenden Teilen hat! Wenn nicht, sollten Sie so etwas finden. Das Schlimmste, was man tun kann, ist, die Studierenden auf einen Weg von zu schwacher Beherrschung zu bringen, der groß angelegte Ideen stark einschrĂ€nken wĂŒrde. Das zerstört sie einfach—und wir wollen sie fördern, nicht zerstören.

Über die GoTo-Schule

Alan Kay: Wie ich Informatik 101 unterrichten wĂŒrde

Quelle: habr.com

60GB SSD 8Gb DDR4