high 31!

So belastend, nervenzehrend, zeitraubend und desozialisierend das Programmieren mit Bernd auch sein mag- es ist schon ein tolles Gefühl, jedem, der es nicht hören will und mit dem man sich gerade über etwas ganz Anderes unterhalten hat solche Sätze wie „Ich kann jetzt mit zwei Händen bis 1023 zählen!“ entgegenzuschmettern. Und sich damit ins nerdige Abseits zu katapultieren.

Aber in diesem Abseits lauere ich ja nicht alleine. Im Gegenteil, ich habe seit dem Start des Projektes „Ich lerne etwas Nutzloses (Assembler) weil ich es kann“ schon etliche Unterhaltungen mit Freunden geführt, die von Themen handeln, deren Namen ich vor einer Woche nicht einmal aussprechen konnte. Und das mit einer unheimlichen Begeisterung. Hier meine ich mit „unheimlich“ wirklich „unheimlich“.

Meine gefühlte Feuertaufe fand aber statt, als ich schniefend und keuchend den kompletten Namen eines Programms im Terminal eingab, um es zu starten. Aber anstatt mich auszulachen, zeigten mir erlehmann und Plom, dass ich im Terminal ja Tab Completion benutzen kann! Ich muss wohl irgendein Geräusch gemacht haben, weswegen Plom meinte, dass dies mein erster Nerdgasm gewesen ist.

Ich war hin und weg! Und dann erst Irssi. Ein IRC-Client ohne wenn und aber. Schlicht, Radikal, so schön! Völlig nutzlos, aber die pure Emanzipation von Buttons und Cursor. Nicht dass ich ein Interesse daran hätte, ihn weiter zu benutzen, aber wenn mal jemand auf meinen Monitor guckt, weiß ich wie ich schnell Eindruck schinden kann.

Aber Schluss mit den Befindlichkeiten. Nachdem wir ein paar Kinderkrankheiten meines Linux zu kurieren versuchten und wenn ich mich richtig erinnere scheiterten, wandten wir uns den harten Fakten von „Programming from the Ground up“ zu. Äh ich meinte harte Daten. Nein, Informationen, nein Bytes, äh Bits, nee Moment, NULLEN UND EINSEN!

Genau. Ich kann jetzt in Binärcode zählen dabei weiß ich nichtmal, ob dieser Satz so hinhaut und man das so sagen kann. Aber dieses „NullenundEinsen“ von dem immer alle reden ist jetzt endlich Teil meiner kongenialen Identitätsressourcen.
In wirklich sehr zäher Kleinstarbeit versuchten Plom und Erlehmann mir beizubringen, endlich mal vernünftig zu zählen. Es ist ganz einfach.  Ein Finger stellt immer eine Potenz zur Basis 2 dar. Aber selbst diese Formulierung musste ich gerade googlen. Ich konnte das alles zwar schon mehrmals besoffen in unserer Küche irgendwelchen Gästen erklären (an die, die es betrifft, es tut mir leid!), aber so schriftlich und mit lauter ComputerSpezialExperten und meiner Mutter, die mitlesen, fällt es mir doch schwer, eine lückenlose Definition vom Gelernten aufzuschreiben. Ist ja auch egal.

Viel interessanter ist der Fetch-Execute-Cycle, der beschreibt, wie die CPU funktioniert (ohgottwardasjetztschonwiederfalsch?!). Wir haben sogar ein Bild davon gemalt. Links die CPU mit ihren Registern, die über einen Datenbus ein Datum aus Memory Land (rechts, da mit den Bergen) holt. Der Program Counter hält die Adresse bereit und sagt, wo die Information liegt, wenn sie nicht in einem Register direkt bei der CPU gespeichert ist. Diese Information „xxxx“ -einmal gefunden- wandert in Richtung CPU. Allerdings passiert sie vorher zB den Instruction Pointer, der als Indikator für Daten, die eine Instruction sind, fungiert. Zurück bei der CPU wird die Information von der ALU (Arithmetic and Logic Unit) verarbeitet und zurück nach Memory Land geschickt. Auf dem Rückweg passiert „xxxx“ aber noch einmal den Program Counter, der irgendwas +1 macht, damit „xxxx“ nicht auf ein Neues durch den Cycle läuft sondern ein neuer Prozess stattfinden kann. So weit so dilettantisch. Hier, falls überhaupt noch jemand mitliest, die Visualisierung des Ganzen:

Das heißt im Endeffekt, dass ich immer noch nicht weiß, was Assembler ist, und immer noch keine iOS-App gebaut habe. Aber ich habe wirklich, wirklich, wirklich den Eindruck, ein um Längen besseres Verständnis dafür zu haben, wie ein Computer funktioniert. jaja, auch wenn ihr da jetzt sicher anderer Meinung seid.
Ich hab sogar verstanden, wie die Informationen gespeichert sind und was ein Offset ist. Am nächsten Tag sagte jemand -und ich kann leider nicht rekonstruieren, weswegen dieser Jemand das sagte- 7+x und ich dachte sofort an Indexe und Memory Storage und an die Adresse von einem Byte in einem Datenset. Das war schon nicht schlecht.

Den Tag darauf und den heutigen und den morgigen muss ich dann leider damit verbringen, die Scherben von fionalerntprogrammieren zu beseitigen und mich endlich mal wieder um meine Uni zu kümmern. Aber wenn Programmierenlernen zu meiner Prokrastinations-Agenda gehört, kann ich damit leben…Studieren sollte mich schließlich nicht vom Lernen abhalten😉

Achja.

Unter uns – ich glaube, ich habe die Nacht darauf irgendwas mit Code geträumt.

 

 

 Nachtrag: Oh mist. http://en.wikipedia.org/wiki/Instruction_pointer
The program counter (PC), commonly called the instruction pointer (IP)

Also gut, Bernadettes und Bernds, rangiert was das Zeug hält!

Getaggt mit
%d Bloggern gefällt das: