Index of /~oj14ozun/sicp

[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[DIR]code/2023-03-01 22:30 -  
[   ]poster.pdf2023-08-07 12:43 2.9M 
[See]online-lesen.link2023-08-07 09:06 716 Redirection
[   ]sicp.epub2023-07-22 09:10 3.1MSICP Lesegruppe
[   ]sicp.pdf2023-03-02 10:31 8.5MSICP Lesegruppe

SICP Lesegruppe

Das Buch Structure and Interpretation of Computer Programs gilt als eines der klassischen Büchern der Informatik. Es benutzt die Programmiersprache Scheme um verschiedene Themen um und herum dem Themengebiet Programmieren zu diskutieren.

[SICP] is by far the best programming book I have ever laid my hands on [...]. Reading SICP will enlighten you as a programmer, and make you a better one. I can’t imagine one programmer who won’t gain something important by reading SICP. (Eli Bendersky)

↪ Siehe auch: Why Structure and Interpretation of Computer Programs matters

Ich würde gerne eine Lesegruppe starten, um mit Interessierten die zentralen Konzepte, Übungsaufgaben und verwandte Themen zu besprechen. Meine Idee wäre es sich mehr-oder-weniger regelmäßig zu treffen und Kapitel aus dem Buch nachzubesprechen, so wie Lösungen für verschiedene Aufgaben zu vergleichen.

Exemplare von dem Buch sind in der Uni-Bibliothek verfügbar, in dem Mathe/Informatik Zweigbibliothek (im Felix-Klein Gebäude).

Alternativ/zusätzlich könnte man auch die etwas fortgeschrittenere Nachfolgebucher Functional Differential Geometry oder Software Design for Flexibility lesen.

Scheme

Die Programmiersprache Scheme ist klein und einfach, aber mächtig mit viel Ausdruckskraft. Es ist ein Dialekt der Lisp-Familie hat aber einen stärker ausgeprägten funktionalen Beigeschmack.

Scheme ist eine standardisierte Sprache, und hat daher verschiedene Implementierungen die man für SICP benutzen kann:

Hier ein Beispiel wie Scheme aussieht (aus Kapitel 1):

(define (expmod base exp m)
  (cond ((= exp 0) 1)
        ((even? exp)
         (remainder (square (expmod base (/ exp 2) m))
                    m))
        (else
         (remainder (* base (expmod base (- exp 1) m))
                    m))))

(define (fermat-test n)
  (define (try-it a)
    (= (expmod a n n) a))
  (try-it (+ 1 (random (- n 1)))))

(define (fast-prime? n times)
  (cond ((= times 0) true)
        ((fermat-test n) (fast-prime? n (- times 1)))
        (else false)))

Da das Buch zum größten Teil keine exotischen Eigenschaften benutzt (Makros, Continuations (call/cc), Hash-Tabellen, Multiple-Value-Zeug, Numerical tower , ...), sollte es im wesentlichen egal sein für welche Implementierung man sich entscheidet.

Weitere Links sammele ich hier.

Καὶ Τὰ Ἕτερα

Je nach Interesse können auch Themen die nicht direkt mit SICP zusammenhängen auch diskutiert werden. Bspw. könnte die Lambda Papers oder das Paper An Incremental Approach to Compiler Construction interessant sein.

Ich hoffe diese Gruppe nur aus Eigeninteresse zu organisieren und hoffentlich dem Interesse anderer sich an der reichen Kultur vom Scheme und Lisp zu beschäftigen.

Ankündigungen & Neuigkeiten (Feed)

[] Planung für viertes Treffen

Im FSI Forum wurde ein Kommentar erstellt, zur Planung des vierten Treffens über Kapitel 4.

[] Drittes Treffen

Wir treffen uns fuer Kapitel 2 und 3 am 10.10. um 2 Uhr im Blauen Hochhaus.

[] Zweites Treffen

Das zweite Treffen findet am 2023-08-15 statt, um 13:00 Uhr. Es werden Übungsaufgaben aus dem Kapitel 1 diskutiert.

[] Erstes Treffen

Das erste Treffen findet am 2023-08-07 statt. Wir stellen die Programmiersprache Scheme vor und planen den weiteren Verlauf der Lesegruppe.

[] Semesterferien

Um Anfang August Triffst sich die Lesegruppe doch, Teilname ist Flexibel. Wir haben eine Signal Gruppe, bei Interesse melden.

[] Verlegt

Weil sich bisher noch niemand gemeldet hat, wird die Lesegruppe erstmal verlegt.

[] Im FSI Forum Angekündigt

Siehe Beitrag.

[] Initialer Stand

Es ist noch nichts konkretes geplant, also würde ich mich über Rückmeldungen interessieren sollte es Interesse geben. Ich hätte eine erste Sitzung am Anfang vom Sommer Semester 2023 angesetzt gehabt.