Pythons and Witchcraft? Programmieren ist (k)ein Hexenwerk
Die Kunst des Codens
Beim Arbeiten mit (Forschungs-)daten ist heutzutage das Programmieren, oder zumindest das Skripten, eigentlich schon eine Grundvoraussetzung. Historikerinnen, die OCR-Pipelines bauen und Literaturwissenschaftler, die Sprachmodelle mit neuronalen Netzen entwickeln; man wird zum Jongleur mehrerer Disziplinen, zur Trapezkünstlerin und zur Hochseiltänzerin im Lianen-Dschungel der Technologie.
Die damit verbundenen Gefühle können jedoch (verständlicherweise) schnell Programmier-Willige abschrecken. Wer möchte schon, ohne Sicherung wohlgemerkt, auf einer Liane im Dschungel Hochseiltänzerin sein? Womöglich begegnet man auch noch einer Python.
Das riesige Angebot an Tools ähnelt nun doch recht passend einem Dschungel, so findet man sich vor allem als blutiger Anfänger nicht darin zurecht. Ausgestattet mit Links zur „Codecademy“, dem „Learn How To Code in 24 Hours“, dem „Programming Historian“ und einer Machete macht man sich also auf den Weg ins Abenteuer Programmieren: Das wäre wirklich schön, nicht?
Als Person, die immer wieder im Nebel der Interdisziplinarität wandelt, weiß ich, dass vor allem der Einstieg in die Welt des Programmierens, in die Welt des „computational thinkings“, schwierig sein kann. Obwohl es bereits ein Thema ist, das von anderen Forschenden ausgeschöpft wurde, bemerke ich im Gespräch mit anderen Humanists immer wieder dieselben Fragen und Unsicherheiten.
Aus eigener Erfahrung vermute ich, dass der erste Schritt in den Dschungel zunächst der Schwierigste ist. Dieser beginnt jedoch nicht damit, ein Programm zu implementieren. Unsicherheiten und Imposter-Syndrom beiseite: Meistens ist schon der Denkansatz die erste Hürde, die man überwinden muss.
Leider kann man nicht jede Person einzeln an die Hand nehmen und ihr Programmieren beibringen. So geht es wahrscheinlich auch den Dozierenden, die jedes Jahr aufs Neue ihre Studis an Java verlieren.
Jedoch bin ich mir sicher, dass es mit der richtigen Hilfestellung jeder interessierten Person möglich ist, die Kunst des Codens zu lernen. Niemand muss im Klammergriff der Python dahinschwinden.
Mit diesem kleinen Blogbeitrag möchte ich Menschen, die nun an der Schwelle des Dschungels stehen, oder bereits mittendrin sind, eine (imaginäre!) Machete zur Hand geben, mit der sie sich ihren Weg durch das Dickicht kämpfen können[1].
Wo fange ich an? Muss ich wirklich programmieren?
Die letzte Frage aus dem Titel, „Muss ich wirklich programmieren?“, ist eine Frage, die ich mir immer noch stelle, sobald ich eine kleine Projektidee habe. Es gibt für viele Aufgaben bereits Tools, die es einem erlauben, auch ohne Programmierkenntnisse Arbeitsschritte auszuführen.
Somit sollte man sich zunächst genau überlegen, welche Dinge man überhaupt mit seinen Daten anstellen will und welche Arbeitsschritte dazugehören würden.
Dazu gehören zum Beispiel:
- OpenRefine oder Excel (letzteres leider nicht Free Open Source (FOS), alternativ: OpenOffice Calc) bei Analyse- oder Bereinigungsaufgaben in tabellarischen Daten
- Protégé oder GraphDB bei Ontologien und Wissensgraphen
- Gephi oder Cytoscape bei Netzwerken
- AntConc oder TXM bei Korpusanalysen, z.B. Fragen bzgl. Stilometrie
- QGIS bei kartografischen Daten
- Webcrawling, um Daten in größeren Mengen runterzuladen
… TBC.
Diese Tools sind, wie beispielsweise OpenRefine oder GraphDB, bereits ziemlich mächtig und erlauben oft eine benutzerfreundliche Bedienung. Etliche Tutorials im World Wide Web können außerdem den Einstieg erleichtern.
Python als Alternativ-Lösung
Nun bieten sich aber nicht für alle Datengrundlagen bereits bestehende Tools an. Besonders bei großen Datenmengen ist es außerdem oft mühselig, unnötig oder gar unmöglich, Daten manuell zu bearbeiten. In solchen Fällen kann es sich lohnen, eine eigene Lösung in einer Programmiersprache wie Python zu basteln. Es gibt bereits viele Module bzw. „Bibliotheken“, wie es in der Programmiersprache heißt, die einem dabei helfen können.
Eine Bibliothek ist eine Sammlung von Funktionen oder Klassen, die eine Programmiersprache um weitere Befehle erweitert.
(Was ist eine Bibliothek?)
Python kann auch dann eine Lösung sein, wenn man ganz persönliche, spezialisierte Funktionalitäten braucht.
Python, one of the most popular programming languages in the world, has created everything from Netflix’s recommendation algorithm to the software that controls self-driving cars. Python is a general-purpose language, which means it’s designed to be used in a range of applications, including data science, software and web development, automation, and generally getting stuff done.
(Wieso Python?)
Natürlich ist Python nicht die einzige Programmiersprache, die man lernen kann. Jedoch bietet sich Python vor allem durch die Vielfalt an Bibliotheken (die sich für DH-Anwendungen eignen) und die geringere Einstiegshürde an.
The Blog Before the Storm
Es kann sich lohnen, vor dem ersten Programmier-Projekt ein paar Blogs oder Bücher zu durchforsten. Das Stichwort „computational thinking“ spielt hier wieder eine wichtige Rolle.
Computational thinking involves taking that complex problem and breaking it down into a series of small, more manageable problems (decomposition). Each of these smaller problems can then be looked at individually, considering how similar problems have been solved previously (pattern recognition) and focusing only on the important details, while ignoring irrelevant information (abstraction). Next, simple steps or rules to solve each of the smaller problems can be designed (algorithms).
(Was ist Computational Thinking?)
Besonders am Anfang kann es schwierig sein, Aufgabenstellungen aus den geisteswissenschaftlichen Bereichen in mathematisch-logische Einzelschritte aufzubrechen. Hier empfehle ich also die Lektüre von Berichten anderer, die schon mal in einer ähnlichen Position waren und diese Erfahrung in Texten zusammengefasst haben bzw. Anleitungen geben, wie man dennoch weitermachen kann.
Dazu gehören – speziell mit Blick auf Geschichte/Geisteswissenschaften – unter anderem:
- Programming Historian
- Python für Historiker:innen
- HELP! I’M A HUMANIST! — HUMANITIES PROGRAMMING WITH PYTHON
- Introduction to computational thinking
Aber auch Bücher wie die aus der folgenden Liste können helfen:
Einen globalen Einstieg bieten auch die folgenden Seiten:
Warum brauche ich Software zum Programmieren? Was ist eine Entwicklungsumgebung? Wieso brauche ich die?
Beim Wort Programmieren denken die meisten zunächst an bunten Text in einem schwarzen Fenster. An Hacker, die mit Befehlen den Computer manipulieren. Das kann so sein – muss es aber nicht unbedingt. Für viele ist der Umgang mit dem Terminal, der „Konsole“ der Maschine, nämlich ziemlich kompliziert.
A terminal is a text input and output environment. It is a program that acts as a wrapper and allows us to enter commands that the computer processes.
(Was ist ein Terminal?)
Das bedeutet, man muss die verschiedenen Abkürzungen und Befehle genau kennen, um zum Beispiel Skripte über den Terminal laufen zu lassen.
Due to a higher degree of memorization and familiarity needed for operation and navigation, new users find operating a command line interface more difficult than a GUI [(Graphical User Interface)].
(Unterschied Terminal und Graphische Benutzeroberfläche)
Entwicklungsumgebungen fassen kompakt mehrere Funktionalitäten zusammen, die man beim Programmieren gebrauchen kann. Oft reichen auch einfachere Texteditoren wie Thonny oder Geany aus. Jedoch bieten sich bereits zur Verwaltung von Dokumentordnern und Skriptordnern Entwicklungsumgebungen an (IDEs – Integrated Development Environments). Auch hier gibt es eine große Auswahl. In meinem ersten Java-Kurs wurden wir in die Welt von JetBrains eingeführt und seitdem sind für mich ihre Tools das Non-Plus-Ultra. Für Python empfehle ich PyCharm, für Java IntelliJ. JetBrains selbst haben eine umfangreiche Dokumentation mit Tutorials zur Benutzung.
Eine weitere Alternative, und auch nutzbar in PyCharm, ist Jupyter Notebook für Python.
Mein Code funktioniert nicht – Was kann ich tun?
Google is your friend! Wirklich, Google is the best friend of any coder. Also: Bei einem Fehlercode, bei Fragen oder Unsicherheiten, sollte man unbedingt die Suchmaschine nach Antworten befragen. Oftmals (oder eigentlich fast immer) ist man nicht die erste Person, die ein bestimmtes Problem hat.
Sehr ratsam ist es bei Coding-Fragen auch, bei Stack Overflow nachzuschauen. Dies ist eine Frage-Antwort-Internetplattform für alles rund um die Entwicklung von Software.
Coding is Art – Treat it as such: For you and others. Especially others.
Programmieren ist schon schwierig genug, dann wollen Leute auch noch von einem, dass man seinen Code kommentiert und ihn verständlich macht – puh!
Eigentlich ist das aber ziemlich sinnvoll. Sobald man mal mit fremdem Code gearbeitet hat, stellt man fest, dass es gar nicht so einfach ist herauszufinden, welche Zeile im Code nun genau was macht.
Es gibt den Python PEP 8-Standard, der für Anfänger*innen möglicherweise ein bisschen kryptisch aussieht, aber der einem zeigt, wie man nachvollziehbaren und gut lesbaren Code schreiben kann.
Und nochmal im Schnelldurchlauf: In Retrospektive, was hat mir am meisten geholfen?
- Bleibt dran! Hört nicht auf zu programmieren und lasst euch nicht unterkriegen!
- Jeden Tag programmieren – Der beste Tipp, den ich je bekommen habe -> Es ist eine ProgrammierSPRACHE und wie bei jedem Spracherwerb muss man üben, üben, üben.
- Eigentlich ist Programmieren kein Hexenwerk und absolut gar nicht gruselig!
- Ein Fehlercode ist kein Zeichen von Scheitern, sondern eine Möglichkeit, noch mehr zu lernen.
- Programmieren ist super frustrierend… und ja, das wird auch nicht besser.
- Google, Google, Google!
- Wie bereits angemerkt, es gibt wirklich viele, unglaublich viele Tutorials, die man sich anschauen kann. Ich präsentiere hier nur eine kleine Auswahl, die ich mir über den Verlauf meines Studiums der Computerlinguistik und der Digital Humanities in Trier angeeignet habe. Ich bin mir sicher, dass es einige noch viel bessere Plattformen gibt und rege zum Austausch in den Kommentaren unten an! [↩]
OpenEdition schlägt Ihnen vor, diesen Beitrag wie folgt zu zitieren:
Sarah Rebecca Ondraszek (21. Oktober 2022). Pythons and Witchcraft? Programmieren ist (k)ein Hexenwerk. Digital Humanities am DHIP. Abgerufen am 4. Oktober 2024 von https://doi.org/10.58079/nkro
Liebe Frau Ondraszek,
diesem spannenden Artikel wollten wir eine noch größere Reichweite verschaffen und haben ihn deshalb in den Slider auf unserer Startseite de.hypotheses.org aufgenommen.
Viele Grüße,
Ulrike Stockhausen (Community Management)