Alan Kay: So wĂŒrde ich Computer Science 101 unterrichten

Eine der GrĂŒnde, warum man tatsĂ€chlich eine UniversitĂ€t besuchen sollte, ist, ĂŒber die bloße berufliche Ausbildung hinauszugehen und sich stattdessen mit tiefergehenden Ideen zu beschĂ€ftigen.

Alan Kay: So wĂŒrde ich Computer Science 101 unterrichten

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

Eine weitere Frage war: "Wer ist Douglas Engelbart?". Einige Menschen 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 um sicherzustellen, dass Engelbart tatsĂ€chlich irgendwie mit der Computermaus verbunden war).

Teilweise lag das Problem in einem Mangel an Neugier, teilweise in engen persönlichen Zielen, die nicht mit Lernen verbunden waren, und teilweise in einem fehlenden VerstĂ€ndnis darĂŒber, was diese Disziplin wirklich ist, und so weiter.

Ich arbeite seit mehreren Jahren Teilzeit an der FakultĂ€t fĂŒr Informatik der University of California (im Grunde bin ich Professor, brauche aber nicht an FakultĂ€tssitzungen teilzunehmen). Gelegentlich halte ich Vorlesungen, manchmal fĂŒr Erstsemester. In den Jahren ist das ohnehin schon geringe Maß an Neugier fĂŒr Informatik deutlich gesunken (aber gleichzeitig ist das Interesse gestiegen, da Informatik als Weg zu gut bezahlten Jobs angesehen wird, wenn man programmieren kann und ein Zertifikat von einer der besten 10 Schulen hat). Entsprechend hat sich kein Student darĂŒber beschwert, dass die erste Programmiersprache an der University of California C++ ist!

Ich denke, wir stehen vor einer Situation, in der sowohl die Begriffe „Computer“ als auch „Wissenschaft“ durch schwache, ĂŒbermĂ€ĂŸige Konzepte entwertet wurden, um einen neuen Terminus zu schaffen – eine Art Etikett auf Jeans – das gut klingt, aber letztlich leer ist. Ein verwandter Begriff, der ebenfalls abgewertet wurde, ist „Software-Engineering“, der wiederum nicht die genialsten Ideen von „Programmierung“ und „Ingenieurwesen“ genutzt hat, sondern sie einfach kombiniert hat (dies wurde bewusst in den Sechzigerjahren getan, als der Begriff erfunden wurde).

Ein Grund, tatsĂ€chlich an die UniversitĂ€t zu gehen, besteht darin, ĂŒber einfache berufliche Ausbildung hinauszugehen und sich stattdessen mit tiefergehenden Ideen auseinanderzusetzen. Es erscheint mir durchaus sinnvoll, zu Beginn eines Studiums zu versuchen – wenn möglich, anhand von Beispielen –, dass die Lernenden sich mit realen Problemen auseinandersetzen und beginnen, zu verstehen, was in diesem Bereich tatsĂ€chlich interessant, wichtig und zentral ist.

GrundschĂŒler sind begeistert, wenn ihnen gezeigt wird, wie ein Lineal ĂŒber ein anderes gelegt wird und so zu einem Recheninstrument wird, mit dem sie die FĂŒnftklĂ€ssler beim Addieren von BrĂŒchen ĂŒbertreffen können. Anschließend freuen sie sich darauf, an der Entwicklung verbesserter Recheninstrumente teilzunehmen. Sie hatten die Gelegenheit, einen echten Computer zu erleben – ein physisches und mentales Werkzeug, das uns beim Denken hilft. Sie haben eine wirklich effektive Methode zur Darstellung von Zahlen gelernt – viel wirkungsvoller als das, was in Schulen gelehrt wird!

Sie konnten ihre gesunde Idee des „Addierens“ als „Ansammeln“ mit etwas Neuem und MĂ€chtigen verbinden. Sie haben es so programmiert, dass es in der Lage ist, vielfĂ€ltige Probleme zu lösen.

Sie haben es auch erweitert. Und so weiter. Es handelt sich nicht um einen digitalen Computer. Und es ist kein Computer mit speicherbarem Programm. Aber das ist die Essenz des Computers. Genau wie der Antikythera-Mechanismus – dies ist im Grunde genommen die Essenz des Computers und der Berechnungen.

Alan Kay: So wĂŒrde ich Computer Science 101 unterrichten

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 war schon immer von der Definition Alan Perlis — dem ersten Turing-PreistrĂ€ger, der möglicherweise den Begriff „Informatik“ geprĂ€gt hat — der in den 60er Jahren sagte: „Informatik ist die Wissenschaft von Prozessen“. Allen Prozessen.

FĂŒr das Unternehmen Quora sollten wir versuchen, dies nicht weiter zu verkomplizieren oder in eine religiöse Doktrin zu verwandeln. Lassen Sie uns einfach die Idee glĂŒcklich nutzen, Alan Perlis, um besser ĂŒber unser Gebiet nachzudenken. Und insbesondere darĂŒber, wie wir es unterrichten können. Jetzt mĂŒssen wir das moderne VerstĂ€ndnis von „Wissenschaft“ betrachten, und Perlis war sich ziemlich sicher, dass es nicht mit alten Bedeutungen (zum Beispiel „Wissen sammeln“) und Verwendungen (wie „Bibliothekswesen“ oder sogar „Gesellschaftswissenschaften“) verwĂ€ssert werden sollte. Mit „Wissenschaft“ wollte er das PhĂ€nomen verstehen, indem er Modelle/Karten erstellt, die versuchen, PhĂ€nomene zu „verfolgen“ und vorherzusagen.

Alan Kay: So wĂŒrde ich Computer Science 101 unterrichten

Ich habe einige Interviews darĂŒber gegeben, wie die besten Karten und Modelle oft fĂŒr T-Shirts geeignet sein können, Ă€hnlich wie Gleichungen von Maxwell und andere. Die Analogie ist, dass es eine "Wissenschaft der BrĂŒcken" gibt, obwohl die meisten BrĂŒcken vom Menschen gebaut werden. Aber sobald eine BrĂŒcke gebaut ist, spiegelt sie PhĂ€nomene wider, die von Wissenschaftlern untersucht werden können. Aus BrĂŒcken lassen sich viele Arten von Modellen machen und umfassende sowie nĂŒtzliche "BrĂŒckentheorien" entwickeln. Das Interessante ist, dass man dann neue BrĂŒcken entwerfen und bauen kann (ich habe bereits erwĂ€hnt, dass es kaum etwas Spannenderes gibt, als wenn Wissenschaftler und Ingenieure zusammenarbeiten, um große und wichtige Probleme zu lösen!)

Alan Kay: So wĂŒrde ich Computer Science 101 unterrichten

Herbert Simon, Turing-PreistrĂ€ger und NobelpreistrĂ€ger, nannte all dies "Wissenschaften des KĂŒnstlichen" (und schrieb ein hervorragendes Buch mit demselben Titel).

Alan Kay: So wĂŒrde ich Computer Science 101 unterrichten

Lassen Sie mich ein Beispiel geben. In den 50er Jahren begannen Unternehmen und UniversitĂ€ten, Computer mit speicherprogrammierbaren Merkmalen zu bauen und zu programmieren – und es gab einen besonderen Moment, als 1956 Fortran erschien. Es war nicht die erste Hochsprache, aber vielleicht die erste, die so gut umgesetzt wurde, dass sie in vielen verschiedenen Bereichen eingesetzt wurde, einschließlich solcher, die zuvor nur in Maschinensprache bearbeitet wurden.

All dies fĂŒhrte zu "PhĂ€nomenen".

Alan Kay: So wĂŒrde ich Computer Science 101 unterrichten

John McCarthy

Die Geschichte von Lisp ist komplexer, aber John McCarthy interessierte sich fĂŒr den Versuch, eine "mathematische Theorie der Berechnungen" zu finden, und war entschlossen, alles optimal zu gestalten. Die Funktion eval, die Lisp interpretiert, gehört auf ein T-Shirt! Im Vergleich zu einer "Programmierungssystem" ist das unerheblich. Was wichtiger ist, diese "Theorie der Berechnungen" hatte ein mĂ€chtigeres Konzept als Fortran! Es war die beste BrĂŒckenidee!

Die Kompaktheit von Lisp ermöglicht es, das gesamte Konzept der Programmierung mit nur wenigen TastenanschlĂ€gen auf einer tieferen Ebene zu erfassen und zu durchdenken – eine Ebene, die schier unmöglich erscheint, wenn man die riesigen Artefakte betrachtet (was auch einer der GrĂŒnde ist, warum Wissenschaftler es bevorzugen, dass Mathematik kompakt und mĂ€chtig ist). Die hier verwendete Mathematik ist neu, da sie Konzepte wie "vor" und "nach" zulĂ€sst und somit zu einer "Logik variabler GrĂ¶ĂŸen" fĂŒhrt, die sowohl funktionale AbhĂ€ngigkeiten als auch logische DenkablĂ€ufe bewahrt, wĂ€hrend sie gleichzeitig Position und Zeitverlauf berĂŒcksichtigt. (Dies ist in der gegenwĂ€rtigen harten Welt des situationalen Programmierens weiterhin unverstĂ€ndlich.)

Lisp, als leistungsstarke Programmiersprache und Metasprache, die in der Lage ist, ihre eigene Theorie darzustellen, ist ein Beispiel fĂŒr wahre Informatik. Wenn Sie es lernen und sich mit Ă€hnlichen Themen beschĂ€ftigen, werden Sie in der Lage sein, tiefer zu denken und mehr Verantwortung fĂŒr Ihr eigenes Schicksal zu ĂŒbernehmen, als wenn Sie einfach nur Fortran oder seine modernen Äquivalente programmieren lernen wĂŒrden (
 so können Sie sich Programmierern nĂ€hern!).

Sie werden viel mehr ĂŒber spezielle Designarten erfahren, die in der Berechnung erforderlich sind (zum Beispiel wird es normalerweise nicht geschĂ€tzt, wenn Berechnungen oft außerhalb der Rechenumgebung durchgefĂŒhrt werden mĂŒssen: Eine der besonderen Eigenschaften von gespeicherten Programmberechnungen besteht darin, dass sie nicht nur Material fĂŒr ein Programm sind, sondern Material fĂŒr einen völlig neuen Computer).

Ein weiterer Grund fĂŒr die Wahl der Perl-Definition liegt darin, dass Berechnungen im Allgemeinen viel mehr mit der Schaffung von Systemen verschiedener Art zu tun haben als mit Algorithmen, "Datenstrukturen" oder sogar Programmierung an sich. Zum Beispiel ist ein Computer ein System, Berechnungen sind Systeme, lokale Netzwerke und das Internet sind Systeme, und die meisten Programme sollten bessere Systeme darstellen als die, die sie tatsĂ€chlich sind (der alte Programmierstil aus den 50er Jahren hat so lange ĂŒberdauert, 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 – eher durch unsere Absichten, als das, was die meisten Menschen fĂŒr ein rechnergestĂŒtztes System halten. Und es ist viel skalierbarer und zuverlĂ€ssiger als fast alle heutigen Softwaresysteme. Das ist wirklich etwas, das man bedenken sollte, bevor man AnfĂ€ngern in der Programmierung weniger leistungsstarke Konzepte beibringt!

Was wir also im ersten Kurs der Informatik tun mĂŒssen, ist, zu berĂŒcksichtigen, was die Studierenden zu Beginn konkret tun können, und dann zu versuchen, innerhalb ihrer 'kognitiven Belastung' zu bleiben, um ihnen zu helfen, das zu erreichen, was wirklich wichtig ist. Es ist sehr wichtig, 'echt' zu bleiben und Wege zu finden, die intellektuell ehrlich sind und die fĂŒr diejenigen geeignet sind, die gerade erst mit dem Lernen beginnen. (Bitte lehren Sie keine schlechten Ideen nur, weil sie etwas einfacher erscheinen – viele schlechte Ideen sind tatsĂ€chlich einfacher!).

Studierende sollten mit der Erstellung von etwas beginnen, das zahlreiche wichtige Merkmale aufweist, die ich hier besprochen habe. Es sollte sich um ein System aus mehreren dynamisch interagierenden Teilen handeln usw. Ein guter Ansatz zur Entscheidung, welche Programmiersprache verwendet werden soll, ist, einfach etwas zu schaffen, das Tausende von interagierenden Komponenten hat! Wenn nicht, sollten Sie danach suchen. Das Schlimmste, was man tun kann, ist, die Studierenden auf einen Weg zu fĂŒhren, der zu schwach ist und großartige Ideen stark einschrĂ€nkt. Das bringt sie einfach um – und wir wollen sie fördern, nicht einengen.

Über die GoTo-Schule

Alan Kay: So wĂŒrde ich Computer Science 101 unterrichten

Quelle: habr.com

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster