Einleitung
Contents
Einleitung¶
Einführungen in die Programmierung mit Python gibt es sowohl in Print als auch digital in großer Zahl. Diese richten sich allerdings zumeist an Anwender:innen aus den Computer- beziehungsweise Informationswissenschaften und warten dementsprechend mit Beispielen und Anwendungsszenarien auf, die eher technisch-mathematischer Natur sind.1 In jüngerer Zeit sind nunmehr auch einige Einführungen speziell für digital arbeitende Geistes- und Kulturwissenschaftler:innen in englischer Sprache erschienen.2 Was bislang allerdings fehlte, ist der spezifische Fokus auf geschichtswissenschaftliche Anwendungsfälle. Angebote wie The Programming Historian3 bieten zwar nützliche Tutorials in verschiedenen Sprachen, darunter Englisch, Französisch und Spanisch, zur Anwendung digitaler Tools oder der Lösung konkreter Aufgaben wie Web Scraping, eine grundlegende Einführung für Historiker:innen in einsteigerfreundlicher, deutscher Sprache mit praxisnahen Beispielen aus dem historischen Forschungsalltag fehlt allerdings.
Mit diesem Jupyter Book wollen wir ein sich dynamisch entwickelndes Angebot bereitstellen, das diese Lücke schließt, indem konkrete historische Fragestellungen und Quellen die Vermittlung der Programmierkenntnisse motivieren. Denn auch für Historiker:innen ist es in der heutigen Zeit vielversprechend, Programmieren zu lernen. Ob in der modernen Arbeitswelt oder in der Forschung – grundlegende Programmierkenntnisse sind zu zentralen Kompetenzen geworden. Computationelle Werkzeuge sind im Beruflichen wie im Privaten selbstverständliche Begleiter geworden und Daten als der „Rohstoff“ des 21. Jahrhunderts sind auch in den Geschichtswissenschaften zunehmend als Forschungsressource relevant. Nicht nur die Zahl der öffentlich verfügbaren digitalisierten historischen Quellenbestände nimmt stetig zu, sondern auch die Produktion der genuin digitalen Daten in Sozialen Medien, Wissenschaftsblogs, Foren, Webseiten, Datenbanken oder Fachportalen. Gleich ob die geschichtswissenschaftlichen Fragestellungen sich auf die mittelalterliche oder jüngste Zeitgeschichte beziehen, Programmierkenntnisse können auf vielfältige Weise das historische Arbeiten ergänzen, um sich die digital verfügbaren Informationen zunutze zu machen. Sie bieten zum einen das Handwerkszeug, um effizient Daten zu sammeln, organisieren, verarbeiten und analysieren. Zum anderen sensibilisiert der Umgang mit Programmiersprachen für die Funktionsweise der Algorithmen und Werkzeuge die wir in den digitalen Geschichts- bzw. Geisteswissenschaften verwenden, aber auch im privaten Alltag.
Wir laden Sie daher herzlich ein, mit uns gemeinsam in das weite Feld der Programmierung mit Python einzutauchen.
Warum ausgerechnet Python?¶
Python ist dank einer simpel strukturierten Syntax und einer lebhaften Community eine weit verbreitete und vergleichsweise einfach zu lernende und lesende Programmiersprache. Sie kommt sowohl in den Data Science als auch der Softwareentwicklung in (außer-)universitären Forschungseinrichtungen ebenso wie in der Industrie zum Einsatz. Vor allem aber ist sie in den digitalen Geistes- und Geschichtswissenschaften etabliert und gebräuchlich, insbesondere was die Modellierung, Aufbereitung, Analyse und Visualisierung mittlerer bis größerer Datensätze betrifft. Unserer Ansicht nach bietet sie daher den idealen Einstiegspunkt.
2021 feierte sie ihren inzwischen 30. Geburtstag. Python wurde 1991 vom Niederländer Guido van Rossum erstmals veröffentlicht, die konzeptionelle Entwicklung fand aber bereits Ender der 1980er Jahre statt. Seitdem hat sie so manche Entwicklungssprünge durchlaufen, zu erkennen etwa an den unterschiedlichen Versionsnummern. Vor etwa einem Jahrzehnt fand ein Wechsel von Python 2 zu 3 statt. Es kann daher sein, dass Sie im Laufe Ihrer Beschäftigung mit Python auf Einführungen oder Artikel stoßen, die sich auf Python 2 oder die Unterschiede zwischen 2.X und 3.X fokussieren. Unsere Empfehlung: Vernachlässigen Sie 2.X! Seit Anfang 2020 ist der Support für Python 2 eingestellt und es wird keine weiteren Versionen und Sicherheitsupdates mehr geben, dementsprechend basiert auch dieses Jupyter Book allein auf Python 3.
Wenn Sie mehr über Python erfahren möchten, haben wir hier noch ein paar zusätzliche Informationen und ergänzende Informationen für Sie zusammengetragen.
An wen richtet sich das Jupyter Book?¶
Das Jupyter Book ist aus Übungsmaterialien heraus entstanden, die für Lehrveranstaltungen des Lehrangebots des Digital-History-Schwerpunkts an der Humboldt-Universität zu Berlin zwischen 2020 und 2022 konzipiert wurden. Mit der Überarbeitung und Bereitstellung dieser Materialien, sollen im Sinne von Open Educational Resources über den engeren Kreis der HU-Angehörigen hinaus Interessierte mit einem für geschichtswissenschaftliche Bedarfe zugeschnittenen Einführungswerk angesprochen werden.
Diesem Hintergrund ist es geschuldet, dass sich diese Programmiereinführung vorrangig an Historiker:innen richtet, die an digitalen Arbeitsweisen interessiert und motiviert sind, zu ergründen, wie Coding die historische Forschungsarbeit bereichern kann. Angesprochen sind damit Studierende gleichermaßen wie Doktorand:innen, wissenschaftliche Mitarbeiter:innen oder Professor:innen. Sie müssen aber kein Mitglied einer Universität sein, um dieses Jupyter Book zu nutzen. Ein Interesse an Programmieren und Geschichtswissenschaften reicht völlig aus. Die Ressourcen eignen sich sowohl für Lehrveranstaltungen und Workshops als auch für das Selbststudium in Eigenregie.
Im ersten Teil des Jupyter Books werden zunächst die Grundkenntnisse der Python-Syntax, zentraler Datentypen und -strukturen sowie im algorithmischen Denken vermittelt. Der zweite Teil stellt mit verschiedenen kleinen Anwendungsszenarien etwa aus den Bereichen Data und Text Mining konkrete Methoden anhand spezifischer kleinerer Fragestellungen in den Fokus. Dieser praxisbezogene Teil wird sukzessive erweitert und um weitere Kapitel ergänzt. Die Auswahl der Lehrinhalte orientiert sich dabei an den Bedarfen historisch arbeitender Forscher:innen, d.h., dass manche Themen, die in allgemeineren Einführungen recht früh und ausführlich behandelt werden, hier erst zu einem späteren Zeitpunkt und optional eingeführt werden, weil sie etwa erst für fortgeschrittenere Projektszenarien relevant werden. Ziel des Buches ist es damit, die Bearbeiter:innen niedrigschwellig dazu zu befähigen, geschichtswissenschaftliche Anwendungsszenarien zu identifizieren und diese selbstständig und problemorientiert codebasiert zu lösen. Es richtet sich insofern gleichermaßen an Anfänger:innen wie Fortgeschrittene und ermöglicht, die einzelnen Kapitel ganz nach eigenen Bedarfen durchzuarbeiten.
Zur Nutzung dieses Jupyter Books¶
Gerne möchten wir Ihnen noch ein paar einführende Worte zur Nutzung dieses Jupyter Books mitgeben, um Ihnen den Einstieg so einfach wie möglich zu gestalten.
Dieses Jupyter Book setzt sich aus einer Reihe von Textseiten (Markdown-Dateien) und Jupyter Notebooks zusammen, die Sie über das Kapitelmenü auf der linken Seite jeweils ansteuern können. Bei Jupyter Notebooks handelt es sich um ein Dateiformat (zu erkennen an der Endung .ipynb), das Text, Bilder, Programmcode und dessen Ausführung inklusive der Anzeige von Ergebnissen in einem einzelnen Dokument integriert. Das macht es zu einem hervorragenden Instrument zur Vermittlung von Programmierkenntnissen.
Die einzelnen Kapitel folgen in der Regel einem einheitlichen Aufbau: Zu Beginn werden die Lernziele festgelegt, so dass Sie am Ende für sich noch einmal prüfen können, ob Sie die aufgeworfenen Fragen für sich beantworten können. Einführend werden auch stets ergänzende zusätzliche Ressourcen vorgeschlagen, die Sie ergänzend zu den Erläuterungen und Programmierbeispielen für die Bearbeitung der Aufgaben heranziehen können, dabei haben wir einen Mix aus text- und videobasierten Materialien zusammengetragen. Den umfangreichsten Teil der Notebooks nimmt die Vermittlung der Lehrinhalte ein. Neben erläuternden Passagen finden Sie hier immer auch Codebeispiele zur Illustration. Jedes Kapitel enthält zudem größere und kleinere Programmierprobleme, die Sie selbstständig lösen können und sollen. Hier haben wir einige Musterlösungen gesammelt, mit denen Sie Ihren eigenen Code vergleichen können. Wichtig ist: Es gibt nicht den einen richtigen Weg, ein Programmierproblem zu lösen. Wenn Sie mögen, können Sie uns also Ihre Lösung als weiteres Codebeispiel zur Verfügung stellen, von dem wiederum andere lernen können. Für einige Kapitel und Aufgaben werden zusätzliche Materialien wie konkrete Quellen benötigt. Hier finden Sie die entsprechenden Datensätze hinterlegt.
Üblicherweise benötigen Sie auf Ihren Heimrechnern spezielle Software, um die Notebooks zu öffnen und zu bearbeiten, zum Beispiel eine lokale Installation von Jupyter Notebook oder eine Erweiterung für Editoren wie Visual Studio Code. Demgegenüber ermöglichen Onlinedienste wie Google Colab die Bearbeitung und Ausführung der Notebooks vollständig webbasiert. Auch dieses Jupyter Book stellt eine Möglichkeit dar, Jupyter Notebooks online zu bearbeiten, ohne dass Sie sich um die Installation von Python und entsprechender Zusatzsoftware kümmern müssen (falls Sie das trotzdem gerne machen möchten und noch nicht so genau wissen, worauf zu achten ist, schauen Sie einmal hier [LINK zu Installationsempfehlungen]). Dazu haben wir Binder integriert, das Sie auf zwei unterschiedliche Arten nutzen können, die Sie über das Raketensymbol im Navigationsmenü des jeweiligen Notebooks auswählen können:
Zum einen können Sie die Notebooks durch Klicken auf “Binder” in einer externen Umgebung interaktiv bearbeiten, dann haben Sie auch die Möglichkeit, weitere Text- oder Codeblöcke in die Notebooks einzufügen (etwa um eigene Notizen und Beobachtungen zu dokumentieren oder weiteren Code zu produzieren), zum anderen können Sie über “Live Code” das vorliegende Notebook-Kapitel direkt ausführbar und bearbeitbar machen. Wofür Sie sich auch entscheiden, Sie benötigen zur Bearbeitung des Jupyter Books lediglich einen Browser sowie eine stehende Internetverbindung. Wenn Sie lieber lokal mit ihrer persönlichen Programmierumgebung auf Ihrem Rechner arbeiten mögen, dann können Sie über den Downloadbutton die Notebooks auch einfach als .ipynb herunterladen.
Ganz egal, auf welche Art und Weise Sie das Buch durcharbeiten - ob online oder lokal auf Ihrem Rechner, bitte beachten Sie stets, dass die jeweiligen Kapitel mit ihren Codeblöcken sequenziell aufgebaut sind. Das heißt, Sie sollten bei der Bearbeitung der einzelnen Kapitel stets die Codeblöcke nacheinander ausführen, da ein späterer Codeabschnitt sich auf einen früheren beziehen kann. Das ist insbesondere dann relevant, wenn in einem ersten Codeblock A Werte zu Variablen zugewiesen werden, die in einem späteren Codeblock B verarbeitet werden sollen. Codeblock B kann diese Verarbeitung erst vornehmen, wenn Codeblock A zuvor ausgeführt und die Wertzuschreibung damit erfolgt ist.
Wenn Sie mit diesem Jupyter Book gearbeitet haben, freuen wir uns über Ihr Feedback. Schreiben Sie uns gerne eine E-Mail an digitalhistory@hu-berlin.de oder hinterlassen Sie einfach Ihr Feedback über die Issue-Funktion direkt in den jeweiligen Kapiteln des Jupyter Books.
Anmerkungen:
- 1
Um aus der großen Fülle von Ressourcen nur einige wenige zu nennen: VanderPlas, Jake, Data Science mit Python. Das Handbuch für den Einsatz von IPython, Jupyter, NumPy, Pandas, Matplotlib, Scikit-Learn, Frechen 2018 oder Hunt, John, A Beginners Guide to Python 3 Programming, Cham: Springer 2019.
- 2
Siehe etwa: Walsh, Melanie, Introduction to Cultural Analytics & Python, Version 1 (2021), https://doi.org/10.5281/zenodo.4411250; Karsdorp, Folgert, Python Programming for the Humanities, Stand 2021, https://www.karsdorp.io/python-course/; und für Fortgeschrittene: Karsdorp, Folgert/Kestemont, Mike/Riddell, Allen, Humanities Data Analysis. Case Studies with Python, Princeton, NJ: Princeton University Press 2021, online: https://www.humanitiesdataanalysis.org/.
- 3
The Programming Historian, https://programminghistorian.org/.