Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Journals>A Programmers Paradise>A Programmers Paradise 1 – Grundlagen

A Programmers Paradise 1 – Grundlagen

Den zu diesem Journal gehörigen Podcast gibt es hier:


Bücher und Begriffe

Ich habe mir drei Bücher ausgesucht, mit denen ich die ersten Episoden bestreiten will. Danach können dann fortgeschritteneren Themen an die Reihe kommen. Dazu suche ich dann auch passendes Material heraus.

Als erstes möchte ich vergleichen, wie man so gemeinhin in die Materie einführt. Dazu beginne ich mit einem Buch, das wir im ersten Semester lesen sollten: Manfred Broys „Informatik 1 - Eine Einführung“.
Hier wird am Anfang den Begriff der „maschinellen Informationsverarbeitung“ definiert. Dieser gliedert sich bei Broy in die Darstellung und die Verarbeitung der Information. Bei der Darstellung handelt es sich um eine symbolische Repräsentation, die maschinell lesbar ist und die Verarbeitung erfolgt nach eindeutigen fixierten Regeln.

Donald E. Knuth (der Schöpfer des Schriftsatzsystems TeX) beginnt den ersten Band seines Buches „The Art of Computer Programming“ anders. Er konzentriert sich auf den Begriff des Algorithmus. Zunächst beschreibt er die Wandlung der Bedeutung des Begriffes und stellt dann kurzerhand den Euklidschen Algorithmus vor.


Der Euklidsche Algorithmus

Für alle die sich nicht erinnern:

Die natürlichen Zahlen n und m seien die, deren größten gemeinsamen Teiler wir suchen. Nehmen wir an n ist die größere Zahl.

1. r:=n-m
2. Ist r=0? Dann fertig. Ergebnis ist n (=m).
3. Ist r>=m? Dann n:=r. Sonst m:=r.
4. Zurück zu 1.

(Danke an Sebi, der hier den Fehler gefunden hat.)

Zu der Erläuterung der Programms zeichnet Knuth noch einen Programm-Ablauf-Plan (PAP). Da sich meine Version des Algorithmus leicht von seiner unterscheidet, habe ich auch ein eigenes Flussdiagramm:



Kriterien für einen Algorithmus

Knuth und Wikipedia sind sich darin einig, fünf Eigenschaften als für Algorithmen charakteristisch zu benennen: Endlichkeit der Beschreibung, Bestimmtheit der Schrittfolge, Eingabe von Daten, Ausgabe von Daten und Effektivität der Schritte. Letzteres kann man etwa so umschreiben, dass die Beschreibung ausschließlich klare, durchführbare Schritte enthält.

Da diese Definition für den mathematisch orientierten Geist vielleicht ein wenig zu prosaisch und unscharf ist, hat Knuth am Ende des einleitenden Abschnitts etwas vorgestellt, das er Berechnungsmethode nennt.

Berechnungsmehtode/Berechnungsprozess

Knuths Berechnugsmethode ist ein 4-Tupel (die genaue Definition erspare ich mir hier erstmal). Dh. es ist ein Verbundobjekt aus mehreren Teilen: Symbolen für die Eingaben, Ausgaben und Zwischenschritte und einer mathematischen Funktion, die die Abbildung von einem Schritt in den nächsten definiert.
Einerseits kann man hier eine gewisse Ähnlichkeit zu Broys Begriff der Informationsverarbeitung finden, andererseits ist die Definition sehr formal und steht im starken Kontrast zu der in „Structure and Interpretation of Computer Programms“ zu findenden Definition eines Berechnungsprozesses:
Wir sind im Begriff die Idee eines Berechnungsprozesses zu studieren. Berechnungsprozesse sind abstrakte Geschöpfe, die Computer bewohnen. [...] Wir beschwören die Geister der Maschine mit unseren Zaubersprüchen.
Wie man erkennt ist das Buch, das sich viel mit funktionaler Programmierung in Scheme beschäftigt, ein humorvolles und recht lebenslustiges Werk. Es ist für ein Technik-Buch ungewöhnlich kurzweilig, ohne dabei oberflächlich zu sein. Tatsächlich werden dort sehr effektive und fortschrittliche Techniken behandelt, die sich sonst in Grundlagenliteratur nicht finden.

Mathematische Grundlagen

Die einzelnen Themen des entsprechenden Abschnitts bei Knuth will ich hier nicht beschreiben. Im ersten Teil erklärt er die vollständige Induktion und wendet sie gleich zu einem Terminations- und Programmbeweis an. Das ist im Normalfall eher ein fortgeschritteneres Thema, auf das wir bei Gelegenheit bestimmt noch genauer eingehen werden.

Literatur

Abelson, Sussman 1985. Structure and Interpretation of Computer Programs, New York: MacGraw-Hill

Broy, 1992, Informatik - Eine grundlegende Einführung, Berlin Heidelberg: Springer-Verlag

Knuth, 1997, The Art Of Computer Programming, Boston: Addison-Wesley

Kommentare

cocoa moe23.02.08 10:32
Ach ja: Den Podcast findet man unter http://web.mac.com/smertens/bitnacht/ProgParaPod/ProgParaPod.html
macbeutling
macbeutling23.02.08 10:55
Ey Du hast ja voll den Schuß,oder?
Glück auf🍀
Schildie
Schildie23.02.08 11:58
warum denn?

ist doch sehr interessant. nur schade, dass ich das alles schon in der 10. klasse gelernt habe und das ist schon ein weilchen her.
Stefan S.
Stefan S.23.02.08 15:44
Da bin ich mal gespannt.

Sehe ich richtig, dass ist/wird eine Abhandlung über das Programmieren an sich? Oder Ist das jetzt nur die Hinleitung zu einer konkreten Programmiersprache?
(Lies den Artikel evtl nochmal, sind ein paar Fehlerchen drin: das-dass uns-und Formal/formal
cocoa moe23.02.08 17:55
Stefan S.: Danke für den Hinweis – ich mache die Korrekturen dann morgen oder so.
Ja, ich wollte mich mit Programmieren im Allgemeinen beschäftigen und vermutlich ab und an Beispiele in verschiedenen Programmiersprachen dabei haben. (Ada, Icon, Oberon, Objective C, Scheme, Smalltalk ... je nachdem, womit sich das behandelte am leichtesten darstellen lässt.)
Aargh
Aargh23.02.08 18:19
Hach, da kommen Erinnerungen vom (abgebrochenen) Informatik-Studium hoch.
hrk23
hrk2324.02.08 18:14
und mich hat die Realität wieder eingeholt, war wohl zu langsam. zzz
*** Software is like sex; it's better when it's free. *** Linus Torvalds
RetroAndy
RetroAndy26.02.08 02:16
An wen soll sich der Artikel richten? Diejenigen, die dies im Studium hatten, sollten es beherrschen und die anderen verstehen bestimmt nur Bahnhof, denn der Text wirkt (zumindest auf mich) als wäre er wahllos aus einem Buch herausgenommen. Damit kann ein Leihe nicht viel anfangen.
Die Idee an sich finde ich aber gut.

Schildie
Schildie29.02.08 15:37
ein Leihe

Ah danke, ich hab echt was zum Lachen gebraucht. Super!
HiandreasW
HiandreasW03.03.08 23:38
was soll der Käse? GGT bei MTN?
Es gibt viele Wege zum ziel beim GGT, aber ganz bestimmt werde ich mir die auch merken, oder lesen. Wer es bracht, denkt sich selber ne schleife aus, oder google, fertig!
Was gibt es denn im zweiten teil? ISO-OSI? Oder HW in OOP?
Mann man, schreibe bitte was über MACs oder was lustiges von zuhause, das mit Kino ist cool, aber bitte nicht so was.

Hab mal nen Vortrag über AES DES und so halten müssen, kommt noch son ding, fange ich auch mal an lustiges auf meiner Platte zu suchen :sick: grüße und viel erfolg Andreas, weitermachen
Malus domestica ;-)
HiandreasW
HiandreasW03.03.08 23:47
PS Sorra, war nicht so gemeint, hab nur grade ein 4 Wochen Projekt Oracle SQL, PHP Ajax hinter mir, und hab etwas die Nase voll von dem Sc.. Jedem das seine, hier so was zu finden hat mich grade gestört, sorry
Malus domestica ;-)

Kommentieren

Sie müssen sich einloggen, um diese Funktion nutzen zu können.