Angeregt durch unsere Unterhaltung habe ich nun doch nochmal eine meiner älteren kleinen Programmierideen aufgenommen (keine Linux-Distro). Aufgrund früherer, bereits gescheiterter Versuche bin ich die Sache dieses Mal anders angegangen.
Bei meinen früheren Versuchen habe ich mit einer (sehr) ungenauen Vorstellung einfach losgelegt und dann nach kurzer Zeit einen derart chaotischen Code, dass ich keine Lust mehr hatte weiterzumachen, weil ich wusste, dass jede kleine Veränderung neue Fehler mitbringt und ich überhaupt längst jegliche Übersicht über mein Werk verloren hatte.
Diesmal hatte ich mir einiges mehr vorgenommen - es sollte endlich mal klappen!
Also einen Tick mehr Planung (mehr als ein Tick ist es letztlich auch nicht geworden). Ich habe eine Anleitung für mein Programm bereits im Vorfeld geschrieben. Ich weiß zwar nicht, ob ich es im Falle einer tatsächlichen Fertigstellung überhaupt in irgendeiner Form veröffentlichen würde, aber mir ging es mehr darum, selbst erstmal einen Überblick darüber zu bekommen, was das Programm eigentlich tun soll. Und für mich besteht der beste Weg, meine Gedanken zu ordnen, eben darin, sie auszuformulieren.
Nun war ich schon mal überrascht und auch recht erfreut - ich bin dadurch nämlich auf zahllose Stellen gestolpert, die ich mir gar nicht überlegt hatte, und die ich so schon vorher in Ruhe durchdenken und einplanen konnte. Ich habe also gemerkt, dass das 'kleine' Projekt eben doch um einiges komplexer war, als ich ursprünglich annahm.
Als Programmiersprache habe ich Python gewählt, weil ich diese vor einiger Zeit in Grundzügen gelernt habe und nun ein bisschen Erfahrung damit sammeln will. Und Python macht die allermeisten Dinge deutlich einfacher und mit weniger Codezeilen als C (die einzige andere Sprache, in der ich nennenswerte Kenntnisse besitze). So weit, so gut.
Nun ging es im ersten Schritt darum, bestimmte selbstgeschriebene Datendateien (Textdateien) einzulesen und die einzelnen Elemente dieser Dateien auf bestimmte Weise in Variablen abzulegen. Da diese Daten eine, wie ich fand, recht einfache Struktur besitzen, dachte ich, das einfachste wäre, die Dateien mit eigenem handgeschriebenen Code 'eben schnell' zu parsen und zu verarbeiten.
Ich fing also an, einen Mini-Parser zu schreiben. Das in meiner Vorstellung kleine Programmstückchen entwickelte sich natürlich zu einem Monster. Es wurde größer und komplexer, ich brauchte mehr und mehr Flags, um zu wissen, wo im 'Syntax-Baum' ich mich gerade befand, ich baute Fehlerbehandlungsroutinen ein (man will ja nicht irgendein halbgares Zeugs entwickeln) und ich kam endlich zu dem eigentlichen Code, der die eingelesenen Daten nun tatsächlich in den entsprechenden Variablen ablegen sollte.
Oder nein, eigentlich dauerte es noch. Ich habe an dieser Stelle nämlich gemerkt, dass das Schreiben von Parsern keine triviale Angelegenheit ist. Mir wurde klar, dass ich große Teile des Codes nochmal völlig umbauen müsste. Mit der Folge, vollkommen den Überblick zu verlieren, neue Fehler einzubauen, und dann vielleicht zu merken, dass ich meinem Ziel trotzdem nicht viel näher gekommen bin.
Mit anderen Worten, ich war vollkommen frustriert. Kurz gesagt, hatte ich den Programmieraufwand gravierend unterschätzt. Das ist mir in der Vergangenheit ständig passiert. Und wie man sieht, habe ich nichts daraus gelernt.
Ich nahm an, einen eigenen Parser zu schreiben sei einfacher, als z.B. einen XML-Parser zu verwenden, den Python ja schon standardmäßig mitbringt. Warum habe ich meine Zeit nicht darauf verwendet, mich damit zu beschäftigen?
Nun ja:
- Ich kenne mich mit XML nicht sonderlich aus.
- Ich kenne mich mit den zugehörigen Python-Modulen gar nicht aus.
- Ich weiß nicht, ob XML und die Art, wie ich mit Python darauf zugreifen könnte, für mich Vorteile brächte.
Nun sitze ich auf meinem angefangenen 13-Kilobyte-Mini-Spezial-Nischen-Parser, der nicht funktionsfähig ist, weiß immer noch nicht viel mehr über Python und XML, und weiß nicht recht, auf welchem Weg ich dieses Projekt zu Ende bringen soll. Zumal der Parser ja eigentlich nur ein kleiner Teil meines 'kleinen' Projekts sein sollte.
Wie auch immer, wollte nur mal meinen Frust irgendwo abladen... Danke fürs Lesen!
Viele Grüße
Def