Alle Beiträge

Becoming an Apprentice

Am für die Kategorie «Misc» von Florian Cygus geschrieben
Getaggt mit: , ,

Nun schreibe ich also einen Blog über's programmieren. Und ich gedenke nicht in den ersten Posts irgendeinen Quellcode zu posten. Statt dessen möchte ich ein wenig von mir berichten, denn dies ist nicht einer der vielen Blogs, in dem es darum geht, intelligenten und hoch-funktionalen Code zu präsentieren [1]. Mein Code wird delitant und umständlich sein, denn ich bin wirklich blutiger Anfänger. Darüber hinaus haben ich niemanden für Code Review, um an der Kritik lernen zu können. Ich habe immer noch die Hoffnung, auf diesem Wege Menschen zu finden, die mir dabei helfen wollen.

Aber selbst die Suche nach Kritikern ist nicht das Hauptmotiv des Blogs. Denn (teils harsche) Kritik kann man schneller in Foren zum Thema Informatik einholen. So lange man freundlich fragt wird man immer zeitnah viele freundliche Antworten bekommen und den ein oder anderen Troll wecken. Nein, die Intention dieses Blogs hat viel mehr mit meiner eigenen Hintergrundgeschichte zu tun, die man vielleicht in Anbetracht meines Hobbies durchaus als ungewöhnlich beschreiben kann.

Geisteswissenschaftler to the bone

Ich habe mich schon immer für Geisteswissenschaften interessiert und ein gewisses Talent dafür gezeigt. Zeitgleich konnte ich der Mathematik immer gut folgen und auch Physik hat mich bis zu einem gewissen Punkt gefesselt [2]. Dennoch habe ich mein Abitur mit Sprachen als Hauptfächer gemacht und Mathe ins Nebenfach verbannt. Dieser Trend setzte sich schließlich auch im Studium fort als ich einen Bachelor in Geschichte und Germanistik begann.

Schnell wurde mir klar, dass mich die alten Griechen eher weniger interessierten -- es sei denn, ich durfte mich mit technischen Innovationen beschäftigen. Dank einem ausgezeichneten Mentor entdeckte ich meine Leidenschaft für Technikgeschichte, der ich bis zum Ende meines Studiums treu bleiben sollte.

Nach dem Bachelor gab es für mich nur die Option einen Master zu machen, da ich jeden anderen Abschluss persönlich als Studienabbruch gewertet hätte. Glücklicher Weise gab es an meiner Universität einen geisteswissenschaftlichen Masterstudiengang, der sich in der Schnittmenge zwischen Geistes- und Technikwissenschaften bewegte und der mich faszinierte, seit dem ich das erste Mal von ihm gehört hatte. Auch dieses Studium absolvierte ich mit historischem Schwerpunkt, wobei ich mich vollends auf Neuere Geschichte und Technikgeschichte konzentrieren konnte.

Das Studium war rückblickend eine tolle Zeit gewesen, die meinen Horizont an vielen Punkten entscheidend erweitert hat. Auf Grund meiner fachlichen Ausrichtung und meinem Engagement in der Verfassten Studierendenschaft konnte ich Freundschaften knüpfen, die über den Kreis meiner fachlichen Kommilitonen hinaus gingen. Ich habe viele Informatiker kennen und schätzen gelernt und mit ihrer Hilfe könnte ich das erste große IT-Thema meines Lebens in Angriff nehmen konnte: Die Abkehr von MS Windows.

Neues OS, neue Leidenschaft

Den Absprung habe ich irgendwann in den frühen Nuller Jahren mit Apples OSX [3] geschaffte. Damals galt Apple noch als Underdog. Dies zeigte sich u.a. an den PowerPC Prozessoren, die Apple damals einsetzte. Mit der Umstellung auf Intelprozessoren, dem iPhone sowie der immer stärker werdenden "walled garden" Mentalität von iOS wurde ich zunehmend unzufriedener mit dem Gesamtpaket. So unzufrieden sogar, dass ich auf die GNU/Linux Distribution Debian migrierte, obwohl ich zuvor nur schlechte Erfahrungen mit Suse und OpenSuse gesammelt hatte.

Mit leichter Unterstützung meiner Informatiker-Freunde, die selbst alle Debian oder Ubuntu [4] betrieben, und mit exorbitanter Unterstützung vieler unbekannter Personen, die mir in abertausenden Foren Antworten auf meine Fragen gaben, lange bevor ich selbst wusste, dass ich diese Fragen haben würde, erforschte ich das unbekannte OS. Ich tauchte dabei so tief in die Strukturen des Systems ein, dass ich es heute als Hauptbetriebssystem einsetze. Während dieser Umstellung entdeckte ich meine Leidenschaft für Software. Ich begann mich in die Materie einzuarbeiten, lernte den Unterschied zwischen Open Source Software und Freier Software kennen und schrieb schließlich eine Masterarbeit zu dem Thema.

Mit der Zeit las ich mich in immer mehr Aspekte von Debian ein, versuchte sie zu reproduzieren und zu verstehen. Unbemerkt und parallel zu diesen aktiven Bestrebungen entmystifizierte ich für mich meine Computer: Die einstigen "Black Box Zauberkästen", die ich anmachen konnte und die dann auf magische, mir unverständliche Weise Dinge auf meinem Bildschirm projizierten, wurden zu Maschinen, deren Funktionsweisen ich nach und nach verstand. Und je mehr ich von ihnen zu verstehen begann, desto stärker faszinierten mich diese erstaunlichen Geräte.

Freie Software im Allgemeinen und Debian, GNU und Linux im speziellen halfen mir enorm bei meinem Versuch, Computer besser zu verstehen. Dies liegt in der rechtlichen und wie Richard Stallman [5] vielleicht sagen würde moralischen Architektur der Freien Software: Im Gegensatz zu kommerziellen Betriebssystemen, die ihren Programmcode als Firmengeheimnis sehen und die ihr OS auf diese Art tatsächlich zu einer "Black Box" machen, in deren innere Abläufe man keinen Einblick bekommt, liegt bei der Freien Software der Quellcode und damit die Funktionsweise offen. Programmierer können diesen Code lesen und verstehen, was das Programm auf welche Art macht.

Für den programmierunkundigen Menschen erscheint dies augenscheinlich keine Vorteile zu bringen, aber das stimmt nicht. Der Schlüssel zum Verständnis liegt in der Dokumentation, einer Art Benutzerhandbuch, die jeder Freien Software digital beiliegt und im Idealfall [6] vollständig ist. Erster Anlaufpunkt zum Verständnis eines Programms (und zum Nachschlagen der programmspezifischen Parameter) sind immer die sogenannten man-pages [7]. Man-pages sind in einer bestimmten Weise verfasst, die auf Neulinge anfangs verwirrend wirkt, aber an die man sich schnell gewöhnt. Zudem sind sie standardisiert verfasst, so dass wichtige Informationen schnell zu finden sind, sobald das Prinzip verstanden wurde.

Dank der Freien Softwarebewegung, den vielen Hilfestellungen im Internet, durch Freunde und durch den häufigen Genuss ungezählter man-pages vertiefte ich mein Verständnis über die Funktionsweise (m)eines Computers. Ich kenne immer noch nicht alle Funktionen, Programme und Einstellungsmöglichkeiten, aber für den alltäglichen Betrieb ist mein Wissen mehr als tauglich und ich bin froh, vor langer Zeit den ersten Schritt in diese Richtung getan zu haben.

Jetzt, da die Universität hinter mir liegt, versuche ich ein wenig Luft in der Wirtschaft zu schnuppern und suche -- immer noch als Historiker -- einen Job im IT-Bereich. Es ist nicht einfach, als Geisteswissenschaftler einen Job zu finden, aber ich bin zuversichtlich, irgendwann einen vernünftigen an Land zu ziehen. Auch wenn ich mehr in meinem studierenden Metier suchen würde, wären die Aussichten auf einen vernünftigen Job nicht merklich besser und so verlasse ich mich ausnahmsweise nicht auf mein Talent, sondern folge meiner Leidenschaft. Abseits von beruflichen Perspektiven sagte mir diese, endlich Programmieren zu lernen.

Und so sind wir hier. Was euch hier genau erwartet und wem ich eigentlich ansprechen auf welche Weise ansprechen möchte, dazu werde ich im Laufe der Woche Antwort stehen

[1]Wer sowas sucht ist hier vollkommen falsch
[2]Das wachsende Desinteresse zum Ende meiner Schullaufbahn hin begründete sich nicht im Stoff sondern wie so häufig in einer tiefen Antipathie zum Lehrkörper.
[3]damals war 10.4 erst neu erschienen und das Ende der PowerPC-Ära war noch nicht abzusehen
[4]Ubuntu ist eine weitere GNU/Linux Distribution, die auf Debian aufbaut, allerdings neuere Softwareversionen einsetzt
[5]Stallman ist Begründer des GNU Projektes und erste Vertreter jener Bewegung, die bis heute als "Libre/Free Open Source Software" (FLOSS) bekannt ist. Mehr zu Stallman und zu den Belangen freier Software wird es sicherlich später im Blog noch geben.
[6]Programmierer sind auch nur Menschen. Und viele von ihnen dokumentieren äußerst ungern. Auch wenn der Vergleich hinken mag, aber stell dir einfach vor, du bist Automechaniker und musst jeden einzelnen Handgriff niederschreiben, damit ein dir unbekannter Automechaniker im Zweifelsfall deinen speziellen Motor reparieren kann. Im Gegensatz zu den standardisierten Automotor ist Software hochgradig individualisiert, so das jede komplexere Operation erklärt werden müsste, damit ein fremder Programmierer den Code sicher versteht. Es gibt noch weitere Unterschiede, die Software so speziell machen, aber eine vollständige Diskussion würde den Rahmen dieser Fußnote sprengen.
[7]das "man" in man-pages ist die Kurzform des englischen Begriffes "Manual" (Handbuch)

Hello World

Am für die Kategorie «Misc» von Florian Cygus geschrieben
Getaggt mit:

Hamburg im Dezember 2013. Während draußen alles dunkel und kalt ist und der Orkan "Xaver" noch vor uns liegt, beginnt für mich ein spannender und neuer Lebensabschnitt. Die Veränderung geschieht im kleinen, ist nicht offensichtlich oder von äußeren Faktoren bestimmt. Nein, sie findet in mir statt. Denn ich lerne Programmieren. Genauer gesagt: Ich lerne die Programmiersprache Python und erstelle damit hoffentlich bald die ersten lauffähigen Programme.

Nicht erst seid gestern ist es ein Wunsch von mir, eigene Programme zu erstellen. Ich möchte mit und an den Herausforderungen, die sich mir stellen werden, wachsen. Nach Tagen, Wochen und Monaten harter Denkarbeit möchte ich auf das Blicken können, was aus meiner eigenen Hände Arbeit geschaffen wurde. Zwar ließe sich dies auch mit anderen Hobbys als der Informatik erreichen, aber ich habe ein Faible für Computer und für alles, was in ihrem Dunstkreis liegt.

Programmieren lernen war für mich der nächste logische Schritt einer Entwicklung, die vor vielen Jahren mit den ersten eigenhändigen Hardwareein- und Umbauten begonnen hat. Ich kann mich nicht mehr entsinnen, warum es so lange dauerte, bis ich schließlich tatsächlich mit dem Programmieren begonnen habe [1]. Aber ich bin froh, jetzt an diesem Punkt zu sein.

Obwohl ich in einer Großstadt wohne musste ich zu meinem Leidwesen feststellen, dass es keine (aktive oder öffentlich sichtbare) Python User Group in Hamburg gibt, an die ich mich zwecks Austausch hätte wenden konnte. Programmieren ist zwar eine Disziplin, die man im Zweifelsfall gut alleine bewältigen kann, aber die eigenen Fähigkeiten verbessert man nur durch Kritik. Und um diese Kritik einzuholen habe ich dieses Blog gestartet.

Aber CPA will mehr sein als nur ein Fortschrittstagebuch meiner stümperhaft präsentierten Programmierfähigkeiten. Vielleicht mag es an meiner Ausbildung liegen [2] aber ich habe oft jene im Auge, die mit diesen neuen Techniken nur wenig anfangen können. Neben der Vorstellung meines Codes möchte ich auch näher in die Geschichte der IT abtauchen, Anekdoten erzählen, auf coole Spiele hinweisen und diese rezensieren [3]. Darüber wird sich hier alles finden lassen, was mich aktuell bewegt und für den Blog relevant sein könnte. CPA wird mit der Zeit ein buntes Sammelsorium an IT-Themen werden, wobei immer Python und mit Python erzeugter Code einen prominenten Platz haben wird.

Apropos Code: Unter Programmierern gibt es eine Tradition. Wann immer sie eine neue Programmiersprache zu lernen beginnen, erzeugen sie als erstes die Ausgabe der Zeichen "Hallo World" auf dem Bildschirm ihrer Computer. In Python3 sieht der dazugehörige Code so aus:

1
print("Hallo World")

Derzeit bin ich noch in einer frühen Phase der Website und einige Entscheidungen, die das finale Blog maßgeblich determinieren werden, sind noch nicht getroffen. Wie so oft ist dieses Experiment "Work in Progress", weswegen die kommenden Post auch vorläufig Python-Code ausklammern werden. Statt dessen möchte ich ein wenig über mich berichten und meine Entscheidungen erläutern, die schließlich zur Realisierung dieses Projektes führten.

Ich hoffe, dass Dir CPA und die von mir publizierten Inhalte gefallen und freue mich auf Feedback.

[1]wobei ich mir gut vorstellen kann, dass es einfach an zeitlichen Gründen gescheitert ist, weil ich schon immer viele Themengebiete spannend fand.
[2]Ich bin studierter Geisteswissenschaftler mit Schwerpunkt Geschichte
[3]denn wie sie viele Programmierer habe ich eine Leidenschaft für Computerspiele