3 Punkte von GN⁺ 2024-06-17 | 1 Kommentare | Auf WhatsApp teilen

Warum „Structure and Interpretation of Computer Programs“ wichtig ist

Die Innovation von SICP

  • Anhebung des intellektuellen Niveaus: SICP hat das intellektuelle Niveau der Einführungsausbildung in der Informatik deutlich angehoben. Während sich frühere erste CS-Kurse darauf konzentrierten, die Details einer bestimmten Programmiersprache zu lernen, legte SICP den Schwerpunkt darauf, das große Ganze des Programmierens zu verstehen.
  • Betonung von Abstraktion: Es betonte die Bedeutung von Abstraktion – also darin, in konkreten Problemen allgemeine Muster zu erkennen und Softwarewerkzeuge zu schaffen, die diese Muster umsetzen.
  • Funktionen als Daten: Im Mittelpunkt stand die Idee, dass Funktionen als Daten verwendet werden können. Das ist schwer zu lernen, aber, einmal verstanden, ein sehr mächtiges Konzept.
  • Verschiedene Programmierparadigmen: Drei Programmierparadigmen – funktional, objektorientiert und deklarativ – wurden in den ersten CS-Kurs integriert.

Die Wahl der Sprache Scheme

  • Einfache und konsistente Notation: Scheme hat für alles eine sehr einfache und konsistente Notation. Andere Sprachen verwenden unterschiedliche Schreibweisen für Variablenzuweisung, bedingte Ausführung, Schleifen und Funktionsaufrufe, während Scheme alles mit einer einzigen Notation behandelt.
  • Verschiedene Paradigmen leicht erlernbar: Dank der Einfachheit von Scheme lassen sich verschiedene Programmierparadigmen leicht erlernen. Insbesondere hilft es zu verstehen, wie objektorientierte Programmierung implementiert wird.
  • Vorbereitung auf die Zukunft: SICP vermittelt Studierenden die Fähigkeit, neue Programmiersprachen zu lernen. Dahinter steht die Philosophie: „Die Sprache, die ihr in Zukunft verwenden werdet, ist noch nicht erfunden.“

Der optimistische Ansatz von SICP

  • Hohe Erwartungen: SICP hat optimistische Erwartungen daran, was Studienanfänger leisten können. Studierende schreiben dabei oft Interpreter für Programmiersprachen – etwas, das sonst eher höheren Semestern zugetraut wird.
  • Tiefgehendes Lernen: Der Text selbst ist nicht leicht zu lesen, aber jeder Satz ist wichtig, und jede Übungsaufgabe vermittelt eine bedeutende neue Idee.

Der Einfluss von SICP

  • Anhaltender Einfluss: Es gab zwar nur wenige SICP-basierte Kurse, ihr Einfluss war jedoch sehr groß. Viele spätere Lehrbücher versuchten, dem von SICP gesetzten Maßstab zu folgen.
  • Ausweitung von Scheme: Der Einsatz von Scheme als Lehrsprache weitete sich von der Mittelstufe bis zur Graduiertenausbildung aus.
  • Ideenorientierte Informatik: Die Vorstellung, dass Informatik ideenorientiert sein sollte, setzte sich weithin durch.

Die Beständigkeit von SICP

  • Lange Lebensdauer: SICP besteht seit mehr als 25 Jahren und ist noch immer im Druck. Obwohl sich die Computing-Umgebung stark verändert hat, sind die großen Ideen dahinter gleich geblieben.
  • Veränderungen der Kurse: SICP-basierte Kurse ergänzten im Lauf der Zeit Themen wie Parallelität, Synchronisationskontrolle, User-Interface-Design und das Client/Server-Paradigma.

Veränderungen im MIT-Curriculum

  • Anwendungsorientiertes Curriculum: MIT wechselte von einem themenorientierten zu einem anwendungsorientierten Curriculum. Die Wahl der Programmiersprache war dabei der kleinste Teil dieser Entscheidung.
  • Herausforderungen des neuen Ansatzes: Der neue Ansatz ist schwerer zu unterrichten und erfordert in jedem Kurs die Zusammenarbeit der Fakultäten für Elektrotechnik und Informatik.

Reaktionen der Studierenden

  • Spätere Beliebtheit: Während des Kurses merken Studierende oft nicht, wie viel sie lernen, bewerten ihn später aber als einen der beliebtesten Kurse. Es gibt Rückmeldungen von Absolventen, dass sie das Gelernte auch im Berufsalltag einsetzen.

Meinung von GN⁺

  • Die Bildungsphilosophie von SICP: SICP legt den Schwerpunkt darauf, große Ideen statt Sprachdetails zu lernen, und vermittelt Studierenden dadurch die Fähigkeit, neue Sprachen leicht zu lernen.
  • Die Stärken von Scheme: Die Einfachheit und konsistente Notation von Scheme sind für Einsteiger sehr nützlich. Sie erleichtern das Verständnis verschiedener Programmierparadigmen.
  • Die Veränderungen bei MIT: Die Änderungen im Curriculum von MIT betonen anwendungsorientiertes Lernen und können dadurch Erfahrungen näher an der Praxis ermöglichen.
  • Die Beständigkeit der Bildung: Die lange Lebensdauer von SICP zeigt, dass seine Bildungsphilosophie und Inhalte weiterhin gültig sind. Das unterstreicht den grundlegenden Wert von Bildung.
  • Die Verbindung zur Praxis: Eine SICP-basierte Ausbildung fördert Fähigkeiten, die sich direkt in der Praxis anwenden lassen, und hilft daher auch nach dem Abschluss erheblich.

1 Kommentare

 
GN⁺ 2024-06-17
Hacker-News-Kommentare
  • Die Vorlesungen von Prof. Abelson sind auf YouTube verfügbar und die investierte Zeit wert: Sie vermitteln ein tiefgehendes Verständnis der Informatik und können helfen, den jüngsten Hype etwas einzuordnen.

  • Die erste Hälfte des Buches war eine leichte und interessante Lektüre: Mit dem objektorientierten Teil hatte ich Schwierigkeiten, und persönlich lag mir funktionales Denken mehr.

  • Auf YouTube kann man Vorlesungen aus den frühen 80ern ansehen: Sie enthalten Humor, frühe Grafikexperimente und Mode aus den 70ern und sind lehrreich.

  • Ich frage mich, ob dieses Buch selbst für Programmierer mit viel Erfahrung noch lesenswert ist.

  • Ich dachte, das Ziel von SICP sei es, Menschen abzuschrecken, die Informatik nicht mögen: Tatsächlich war es ein sehr wertvoller Grundkurs, aber bei manchen führte er dazu, dass sie in andere Fachrichtungen wechselten.

  • Ich kam nie über die ersten paar Seiten hinaus: Wäre es ein Pflichtfach gewesen, würde ich heute wohl etwas anderes machen.

  • Ich war an der Berkeley als Tutor für den Kurs CS 61A tätig: Es wird behauptet, die einfache und einheitliche Notation der Sprache Scheme helfe beim Lernen, aber in der Praxis waren die Studierenden eher verwirrt. Ich halte es für einen Fehler, dass in Scheme alles gleich aussieht.

  • Die beste Lektion, die ich aus SICP gelernt habe, ist, dass man in dem Moment, in dem man die erste Funktion schreibt, eine DSL zur Lösung eines Domänenproblems erschafft: Diese Einsicht hat mich als Programmierer auf ein neues Niveau gehoben.

  • Jedes Mal, wenn ich über SICP lese, verspüre ich Frustration über Javascript: Wäre Javascript Scheme gewesen, wäre Webentwicklung besser geworden.

  • Bitte vergleicht SICP und PAIP: SICP scheint funktionale Programmierung und die Grundlagen der Informatik zu behandeln, während PAIP stärker auf allgemeine Programmierpraxis fokussiert ist.