Frage

SICP - "Struktur und Interpretation von Computerprogrammen"

Erklärung für das gleiche wäre schön

Kann jemand erklären, über Metasprachliches Abstraktion

War es hilfreich?

Lösung

SICP wirklich fuhr nach Hause den Punkt, dass es möglich ist, Code und Daten als die gleiche Sache zu suchen.

verstand ich dies vor, wenn es um universelle Turing-Maschinen denken (die Eingabe in eine UTM ist nur eine Darstellung eines Programms) oder die von-Neumann-Architektur (wo eine einzelne Speicherstruktur sowohl Code und Daten enthält), aber SICP machte die Idee viel klarer. Scheme (Lisp) half hier, wie die Syntax für ein Programm ist genau das gleiche wie die Syntax für Listen im Allgemeinen, nämlich S-Ausdrücke.

Sobald Sie die „Gleichwertigkeit“ von Code und Daten haben, plötzlich eine Menge Dinge werden einfach. Zum Beispiel können Sie Programme schreiben, die unterschiedlichen Auswertungsmethoden haben (faul, nicht deterministisch, etc ). Früher hätte ich gedacht, dass dies eine Erweiterung der Programmiersprache erfordern; in Wirklichkeit, kann ich es nur auf die Sprache selbst hinzufügen, auf, so dass die Kernsprache minimal sein ermöglicht. Als weiteres Beispiel können Sie ein objektorientiertes Framework ähnlich umzusetzen; Auch dies ist etwas, das ich naiv vielleicht gedacht würde erfordern, die Sprache zu ändern.

Im übrigen eine Sache, die ich SICP wünschen hatte mehr erwähnt: Typen. Typprüfung in compilation Es ist eine erstaunliche Sache. Die SICP Implementierung der objektorientierten Programmierung nicht diesen Vorteil hat.

Andere Tipps

ich nicht das Buch gelesen hat bisher habe ich schaute nur auf den Video-Kurse, aber es hat mich viel gelehrt. Funktionen als Bürger erster Klasse war Sinn für mich weht. Ausführen einer „Variable“ war etwas ganz Neues für mich. Nachdem die Videos, die Art und Weise beobachten ich jetzt sehe JavaScript und Programmierung im Allgemeinen hat sich stark verändert.

Oh, ich glaube, ich habe gelogen, das Ding, das wirklich mir auffiel, war, dass + war eine Funktion.

Ich denke, die überraschendste Sache über SICP zu sehen, wie einige Grundelemente tatsächlich benötigt, um eine Turing komplette Sprache zu machen -. Fast alles kann von fast nichts gebaut werden

Da wir SICP diskutieren, werde ich in meinen Standard-Steckern für die Video-Vorlesungen unter http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ , die die beste Einführung in die Informatik sind Sie hoffen könnten zu bekommen in 20 Stunden.

Die eine, die ich dachte, war wirklich cool war Ströme mit verzögerter Auswertung. Die eine über Erzeugung Primzahlen war etwas, was ich dachte, war wirklich ordentlich. Wie ein „PEZ“ Spender, die auf magische Weise die nächste Primzahl in der Folge verzichtet.

Ein Beispiel für „die Daten und der Code sind die gleiche Sache“ von A. Rex Antwort hat mich in eine sehr tiefe Weise.

Als ich Lisp zurück in Russland unterrichtet wurde, unsere Lehrer sagten uns, dass die Sprache über Listen war: auto, cdr, Nachteile. Was war erstaunt mich wirklich die Tatsache, dass man sich all diese Funktionen nicht benötigen - Sie Ihre eigenen, da Verschlüsse schreiben kann. So ist Lisp nicht über Listen, nachdem alle! Das war eine große Überraschung.

Ein Konzept, das ich mit völlig fremd war, war die Idee von Koroutinen , das heißt mit zwei Funktionen tut ergänzende Arbeit und mit der Programmablaufkontrolle wechselt zwischen ihnen.

Ich war noch in der High School, wenn ich SICP gelesen, und ich hatte auf den ersten und zweiten Kapitel konzentriert. Für mich zu der Zeit, ich mochte, dass Sie alle diese mathematischen Ideen in Code ausdrücken könnte, und haben den Computer tun die meisten der schmutzigen Arbeit.

Als ich SICP wurde Nachhilfe, wurde ich von verschiedenen Aspekten beeindruckt. Zum einen das Rätsel, das Daten und Code wirklich die gleiche Sache sind, weil Code ausführbare Daten. Das Kapitel über metasprachlichen Abstraktionen ist irrsinnig zu viele und viele Take-Home-Nachrichten hat. Die erste ist, dass alle Regeln willkürlich sind. Das stört einige Studenten, speziell diejenigen, die Physiker am Herzen sind. Ich denke, die Schönheit nicht in den Regeln ist selbst, sondern die Folge der Regeln zu studieren. Eine einzeilige Änderung im Code, den Unterschied zwischen lexikalischen Scoping und dynamischen Scoping bedeuten kann.

Heute, obwohl SICP immer noch Spaß und aufschlussreich für viele ist, ich verstehe, dass es veraltet ist immer. Zum einen lehrt es nicht Debug-Fähigkeiten und Werkzeuge (I umfassen Systeme vom Typ da drin), die für die Arbeit in der heutigen gigantischen Systemen wesentlich ist.

Ich war sehr überrascht, wie einfach es ist, Sprachen zu implementieren. Dass man könnte Dolmetscher für Schema auf eine Tafel schreiben.

Ich fühlte mich Rekursion in anderem Sinne nach einigen Kapiteln von SICP Lesen

Ich bin jetzt auf Abschnitt „Sequenzen als konventionelle Schnittstellen“ und haben das Konzept der Verfahren als Bürger erster Klasse ziemlich faszinierend gefunden. Auch ist die Anwendung von Rekursion etwas habe ich noch nie in irgendeiner Sprache gesehen.

Verschlüsse.

Ich stamme aus einem in erster Linie zwingend notwendig, Hintergrund (Java, # C, usw. - ich lese nur SICP ein Jahr oder so vor zum ersten Mal, und bin es jetzt wieder zu lesen), in funktioneller Hinsicht zu denken war eine große Offenbarung für mich; es völlig verändert die Art, wie ich über meine Arbeit denken heute.

Ich las den meisten Teil des Buches (ohne Bewegung). Was ich gelernt habe ist, wie die reale Welt auf einem bestimmten Niveau zu abstrahieren, und wie man eine Sprache implementieren.

Jedes Kapitel hat Ideen überrascht mich:

Die ersten beiden Kapitel zeigen Sie mir zwei Möglichkeiten, die reale Welt zu abstrahieren. Abstraktion mit dem Verfahren und Abstraktion mit Daten

Kapitel 3 führt Zeit in der realen Welt. Das ergibt Staaten. Wir versuchen, Zuordnung, die Probleme aufwirft. Dann versuchen wir Ströme.

Kapitel 4 etwa metasprachlichen Abstraktion, mit anderen Worten, wir eine neue Sprache implementieren durch einen Auswerter konstruieren, die die Bedeutung von Ausdrücken bestimmt.

Da der Auswerter in Kapitel 4 selbst ein Lisp-Programm ist, erbt sie die Kontrollstruktur des zugrunde liegenden Lisp-Systems. So in Kapitel 5, tauchen wir in den Schritt-für-Schritt-Betrieb eines echten Computers mit Hilfe eines abstrakten Modell, registriert Maschine.

Danke.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top