Archiv für den Monat Februar 2012

Hackers: Eine Love- und Sexstory

Als ich Montag letzter Woche aufwachte fühlte ich mich ein wenig wie Bart, als er im Zuckerschock den Pfadfindern beigetreten ist und das erst am nächsten Morgen  bemerkt. Ich hatte mir von Plom am Abend vorher mehrere Bücher für meinen Bücherstack (pushl!) aufschwatzen lassen. Der mittlerweile verdächtig unverändert neben meinem Bett verstaubt. Das liegt unter Anderem daran, dass wir AoM auf meinem Rechner zum Laufen bekommen haben aber das ist eine andere Geschichte. Genau genommen eine Geschichte von verschwendeter Zeit, griechischen Göttern und TK-Pizzen.
Aber mir kam es eigentlich ganz recht, dass ich mich zwischen einem dieser ansprechend gestalteten Büchern entscheiden konnte:

                

Und da “Hackers” natürlich oben auf meinem Stack lag (das hat mit der spezifischen Architektur meines Regals zu tun) tauschte ich es mit dem Buch von Christian Heller in meinem Rucksack aus und fing an, mich in die Welt der Massachusetts-Brillenträger entführen zu lassen. Und es dauerte eigentlich nichtmal 24 Stunden bis ich schon meinem halben Freundeskreis freundlich aber bestimmt dazu aufforderte das Buch ebenfalls zu lesen. Die Hälfte davon wiederum hatte das eh schon getan.

ES IST SO TOLL UND SIE REDEN VON ASSEMBLER WAS SONST NIE JEMAND TUT!
(immer geht es nur darum, wie scheiße Java ist)

Interessant dabei ist natürlich, dass ich viele der Begriffe und technischen Abhandlungen noch vor einem Monat nur mit Mühe verstanden- nein Moment, gar nicht ver- nein ich wäre nie auf die Idee gekommen dieses Buch zu lesen. Ich hätte Bourdieu unter einem anderen Buch versteckt. Oder unter der Bettdecke. Oder mich unter der Bettdecke. Irgendwie so.

Jedenfalls ist das Buch eine furchtbar nette Ehrung der vielen “awkward” Nerds vom MIT, die an Computern, in denen ich locker wohnen könnte, das erste “Spacewar!”-Spiel entwickelten. Menschen, für die Computer das interessanteste der Welt waren. Die auch mal auf Schlaf, Schule und Leben verzichteten, um ein Programm zu verbessern. Die im Nachbarzimmer lauerten, um zu sehen, ob nicht jemand seine Schicht am Computer vergessen hatte, damit sie für ein paar Stunden weiter programmieren konnten. Achja und hier sehen Sie Vint Cerf, der das Internet erfunden hat und hier ebenfalls Spacewar spielt:

 

Und das ist der PDP-1 Computer.  In meinem Kreuzberger Zimmer ist Platz
für den Schreibtisch und den Mülleimer.

Aber jetzt auch mal abgesehen von jeder Ironie, mit der ich mich als Nerdette schimpfe, ist es wirklich bemerkenswert, wie sehr sich mir ein komplett neues Interessenfeld öffnet. Ein bisschen so wie ich gehofft hatte. Zuletzt saß ich aus unbekannten Gründen auf dem Boden in der Ecke eines Freundes und guckte auf seinen Tower. Und sah, dass er eine durchsichtige Plexiglaswand hatte! Ich scherzte, dass ich ihn mal irgendwann auseinanderschrauben würde, wenn er ihn nicht mehr bräuchte, aber das durfte ich dann auch so. Das erinnerte mich ein bisschen daran, dass mir mein Vater vor vielen Jahren mal einen kaputten Toaster und einen Schraubenzieher in die Hand gab und ich ihn soweit zerlegen konnte wie möglich. Schon ein wenig absurd, aber zurückblickend ist das aus zwei Gründen lustig: Zum einen, weil das eigentlich ein toller Ansatz ist und ich es jederzeit genauso tun würde. Ich hatte den Toaster auch schon ganz vergessen. Zum Anderen ist das lustig, weil ich den Toaster einen Tag vorher selber kaputt gemacht hatte, weil ich versuchte, ein Toast mit einem Messer herauszufischen bis ein paar Funken aus dem Toaster kamen. Aber das wusste mein Vater ja nicht. Und ich hoffe ihm verrät das jetzt keiner.

In den Tower hineinzuschauen war jedenfalls unheimlich spannend. Das erinnert mich daran, wie mein Vater mir damals sehr oft das Innere von selbstgebauten Raketen zeigte und erklärte und es mich kein Stück interessierte. Aber in diesem Falle war es eine eigene Entdeckung. Ich konnte mir endlich mal ein Bild davon machen, wie eine CPU  aussieht, entdeckte den BIOS chip und fand heraus was das ist. Ich entdeckte ihn auch nur, weil da groß BIOS drauf stand. Ich sah die Arbeitsspeicher, die Festplatte, die Datenbusse und den verstaubten Lüfter, von dem ich Flusen abzupfte. Das machte mich irgendwie nervös und ich reinigte ihn später mit einer Pinzette um mich besser zu fühlen.
Aber abgesehen davon war es tatsächlich weniger ein Blick auf die Computerarchitektur sondern wie eine kleine Reise in das Wissen, das ich in letzter Zeit neu dazugewonnen hatte. Ein bisschen ähnelte das Motherboard einer schwarzen Landkarte, die sich langsam lichtet. So wie wenn ich mit Spähern bei Age of Mythol- na egal.

Es ist ein tolles Gefühl, diese Welt nach und nach zu erschließen. Das zu wollen und zu merken, dass ich dazu fähig bin. Ob mein Vater mir mit dem Toaster sagen wollte “Tochter! Auch du kannst Programmieren, Betten bauen, Autos reparieren und Holz hacken lernen und Spaß daran haben!” weiß ich nicht. Es hat mir sicher einen kleinen Schubs in die richtige Richtung gegeben. Wobei ich mir schon mehr Ermutigung in diese Richtung gewünscht hätte. Dass ich jetzt eine blumige Geisteswissenschaft studiere ist natürlich in Ordnung. Aber dass schon vorher durch Andere (sexistische Chemielehrer zB.) meine Auswahlmöglichkeiten eingeschränkt wurden lässt sich nicht wegdiskutieren.

Insofern ist es doppelt und dreifach toll, einen Zugang zu etwas so “Technischem” wie dem Programmieren zu finden. Und festzustellen: Geht ja doch! Auch ohne Dings.

Getaggt mit

Mein Stack, mein Stack, mein Stack

Geplanter Beginn: 20 Uhr
Tatsächlicher Beginn: 22 Uhr
Delay: 2 Stunden

Die letzten Wochen waren sehr hart. Nicht etwa weil ich jeden Tag von Morgens bis Abends für die Uni lernte und am Ende doch die Prüfung versemmelte, sondern weil die Option, das Studium zu schmeißen, Expertenprogrammierin zu werden und ein Buch zu schreiben so viel naheliegender war. So wie alle meine Freunde. Aber ich will ja gar nicht Programmieren, sondern Programmieren lernen. Und meine Freunde sind sie eigentlich auch nicht.
Jedenfalls sei damit die lange Programmierpause erklärt um Spekulationen über Fersagen, Gender und Assembler vorzubeugen.

Es gab wie immer ein recht langes Vorher, während dessen ich Spaghetti für erlehmann kochte die Plom  nichteinmal angucken wollte (wahrscheinlich mischen sich zuviele verschiedenfarbige Bestandteile!). Zwischendurch erzählte Plom uns von seiner Rejection Therapy und wie er jemanden darum bat, 27*111 auszurechnen. Ich tat das zwar unheimlich schnell aber auch unheimlich falsch. Ich sollte mich mehr auf Maschinen verlassen. Und wir versuchten, Spiele auf meinem Linux zu installieren. Dank Wine muss ich nicht mehr Spiele wie OpenTTD spielen, die einen an Kotze erinnern, wenn man die Augen etwas zusammenkneift. Stattdessen hab ich jetzt eine Demoversion von AOE2, die mich bereits in eine mittlere Sinnkrise stürzte, weil ich zum einen nach vier Wochen non-stop-lernen zwei Tage lang das Unproduktivste der Welt tat: AOE spielen- und weil ich die Demo-Kampagne nicht mal mit Level “Medium” schaffte. Erlehmann war schon vor dem Programmieren aus irgendeinem Grund in meiner Wohnung und versuchte mir OpenTTD zu erklären. Er ließ mehrmals das Wort “Autistenspiel” fallen und ich sagte irgendwann, er solle ruhig sein, ging ins Bett und schlief auf den Schreck, dass Erlehmann in meiner Küche sitzt erstmal ein paar Stunden.
Jedenfalls wird Wine hoffentlich mein Leben zerstören und jedes einzelne Buch auf meinem Stapel für die Semesterferien mit einem Spiel aus meiner Jugend ersetzen.

Speaking of Stapel – in Kapitel 4 wird ziemlich lange erklärt was es mit dem Stack und der Subtraktion und Addition von Bytes auf den Stapel auf sich hat. Denn wenn der Stapel wächst, schrumpft der Speicher aufgrund der spezifischen Architektur. Irgendwie so halt. Das muss man verstehen um ein Assemblerprogramm zu schreiben, das Parameter einer Gleichung bspw. “auf” den Stack schiebt. Das fand ich ausnahmsweise sehr leicht verständlich und das liegt vielleicht daran, dass man dieses Denken auch für bestimmte Photoshopoperationen braucht. Allerdings werde ich ja Photoshop nie wieder sehen und mich stattdessen mit der hässlichen kleinen Schwester mit Brille und Zahnspange – Gimp- rumärgern.

Wir beschäftigten uns danach mit dem Aquaplaning des Assemblerprogrammierens: Stack Overflow und Segmentation Fault. Der Stack ist ein Bereich auf meinem Speicher mit dem ich während des Ausführens des Programms arbeite. Ich lege darauf bspw. die Parameter von 111*27 ab. Also 111 und 27. Um diese zu adressieren muss ich dann von der Basis des Stacks so und so viele Bytes herumwandern bis ich bei den Parametern angekommen bin. Wenn ich allerdings zu viele Parameter auf dem Stack ablege kann es sein, dass ich auf den Programmcode stoße, der dann überschrieben wird. Oder ich stoße auf den flüssigen Kern aus Eisen und Nickel. Oder auf einen alten Mann in einer gläsernen Sänfte. Oder auf nen Haufen Socken. Trotzdessen führt das zu einem Abstürzen des Programms und ich werde es bestimmt nie ausprobieren, auch wenn ich noch nicht weiß wie ich das verhindere.

Der Segmentation Fault tritt auf, wenn ich außerhalb des Stacks operiere oder Parameter dort ablege. Folgendes Szenario erklärt das vielleicht ein bisschen besser:
Programm: Wow, ich leg mal ein paar Parameter hier ab.
Kernel: Wir können hier keine Parameter ablegen, das ist Fledermausland!

Das inspirierte uns dazu das schlechteste Programm der Welt zu schreiben. Es heißt
schlecht.s und wir sind sehr stolz darauf. Das Ausführen wirft ein
“Segmentation Fault” ins Terminal und das wars dann.
Danach schrieben wir aber viel kompliziertere Programme mit
Funktionen und sowas.

Als erstes schrieben wir power.s aus dem Buch ab. Damit kann ich bspw. “(2 to the power of 3) + (4 to the power of 2)” berechnen. Das sieht erstmal so aus:
Das ist genauso langweilig wie es aussieht, interessant ist die 5. Zeile “call power” mit welcher die Funktion “power” weiter unten im Text aufgerufen wird :

Die Funktion arbeitet mit den Argumenten, die vorher mit “pushl” auf den Stack geschoben worden sind. Der letzte Befehl “ret” lässt das Programm dann dort weiter machen, wo vorher zur Funktion gesprungen wurde.
So weit so unnötig kompliziert geschrieben. Die nächsten Stunden verbrachten wir damit, power.s zu kürzen. Das Ergebnis kann sich sehen lassen:

So einfach ist das! Anstatt sich schlechten Code anzuschauen, schreiben wir ihn lieber um. Und jetzt muss ich nie wieder selber rechnen.
Übrigens hab ich bei der letzten Session erfahren, dass Plom richtig schlecht in Mathe war und dieselben schwammigen Leistungskurse (Deutsch und Englisch) hatte wie ich. Und später genauso schwammige Wissenschaften studierte. Das fand ich irgendwie gut.  Demnach müsste ich nämlich nur noch 3 Semester studieren, bis ich ebenfalls aussteige und ein Buch schreiben kann. Über das Programmieren oder so.

Getaggt mit
Follow

Erhalte jeden neuen Beitrag in deinen Posteingang.

Schließe dich 99 Followern an