Empfohlene Unterrichtsinhalte als Vorbereitung für dieses Thema: 06-01/2 (Fehlermeldungen & Fehlertypen, Debugging)
Nicht immer ist es so leicht, in der Dokumentation nachzuschlagen, welche Befehle man benutzen muss, um bestimmte Dinge zu erreichen. Hier ein Beispiel:
Wir wollen einen String umdrehen. Wir verwenden die Doku, um herauszufinden, ob bzw. wie das geht. Egal, welche Suchbegriffe wir eingeben (reverse, string reverse, reverse string, revert string, …), bekommen wir keinen offensichtlich richtigen Treffer.
In so einem Fall können wir Google bemühen. Idealerweise googeln wir solche Fragen in etwa in der folgenden Form:
Die Suchanfrage beginnt mit dem Stichwort python
. Nichts ist frustrierender, als Zeit mit einer Erklärung zu verschwenden und erst nach einigen Minuten zu merken, dass die Erklärung sich auf die falsche Programmiersprache bezieht…
Danach folgt das Thema, das uns interessiert. Wir haben das Problem auf Englisch mit reverse string
beschrieben.
Zuletzt folgt die Angabe des Stichworts stackoverflow
.
StackOverflow ist eine Q&A-Seite für Programmierthemen, die seit 2008 existiert. Meist sind die Fragen sehr spezifisch und klar formuliert, oft enthalten sie kleine Codebeispiele, und dank dem Bewertungssystem für die Antworten sind richtige/empfehlenswerte Antworten leicht zu finden.
Wenn wir die Antwort auf Frage auf anderen Seiten als SO finden, besteht immer die Gefahr, dass die Informationen veraltet sind oder sich auf eine andere Pythonversion beziehen! Auf SO wird die Pythonversion entweder direkt angegeben, oder in den Antworten wird darauf hingewiesen, falls es Unterschiede zwischen den Versionen gibt.
Schauen wir uns mal den ersten Treffer auf StackOverflow an:
Die bestbewertete Antwort steht als erstes unter der Frage. Der Beispielcode und die dazugehörige Ausgabe zeigen uns, dass die Lösung tatsächlich das macht, was wir erwarten. In der Erklärung ist eine Seite aus der Python-Dokumentation verlinkt, auf der wir mehr erfahren können.
Einige Kommentare der besten Antwort erwähnen, dass es einen Unterschied macht, ob man Python 2 oder Python 3 benutzt. Weiter unten folgen weitere ausführliche Antworten, in denen verschiedene Lösungen verglichen werden und wir lernen können, dass Slicing die beste Lösung für unseren Anwendungsfall ist.
Wir sollten immer das Datum der Fragen und Antworten beachten, die wir bei der Recherche finden! Bei grundlegenden Fragen (im Erstsemesterkurs wahrscheinlich der häufigere Fall) ist es zwar zweitrangig, ob eine Antwort dieses Jahr oder vor drei Jahren gepostet wurde. Aber wenn wir z.B. Probleme mit der Installation eines Programms haben und eine Antwort auf SO finden, die mehrere Jahre alt ist, ist es sehr wahrscheinlich, dass die angegebene Lösung uns heute nicht weiterhilft.
Beim Recherchieren finden wir häufig Antworten, die wir gar nicht verstehen (weil wir erst seit wenigen Monaten programmieren). Das ist aber nicht schlimm! Wenn wir weitersuchen oder im Thread etwas weiter nach unten scrollen, werden wir (fast) immer verständlichere Posts zum Thema finden. So wird auch unser Verständnis der Programmiersprache nach und nach geschult.
Die Erfahrung zeigt, dass die Fragen-und-Antworten-Sammlung von StackOverflow für fast alle unsere Programmierprobleme ausreichend ist. Python ist so verbreitet, dass die allermeisten Probleme, die uns begegnen, auch schon jemand anderem als uns passiert sind. Das bedeutet, dass man viele Jahre lang darauf verzichten kann, selbst eine Frage auf SO zu posten - man muss ja nur die Frage finden, die die letzte Person gestellt hat, die das gleiche Problem hatte.
Sonderfälle treten dann auf, wenn wir z.B. mit besonderen Modulen arbeiten, die nicht so verbreitet sind. Dann kann es Sinn machen, eine eigene Frage zu stellen. StackOverflow hat eine Anleitung zum Stellen von Fragen, die sehr viel Wert darauf legt, dass keine Duplikate erzeugt werden.
Während die Python-Dokumentation schnell weiterhilft, wenn es darum geht, wie bestimmte Methoden verwendet werden, ist StackOverflow pragmatischer orientiert und hilft uns vor allem in Fällen, wo wir nicht wissen, welche Methode wir anwenden sollen.
Die Pythondokumentation sollte unsere erste Anlaufstelle sein, wenn Sie spezielle Fragen zu einzelnen Datentypen, Methoden oder Modulen haben. Vor allem wenn wir einem neuen Datentyp oder einem neuen Modul begegnen, lohnt es sich, in der Dokumentation nachzuschauen, was man mit diesem Datentyp/diesem Modul alles machen kann.
Wenn wir Hilfe für einen konkreten, isolierbaren Anwendungsfall brauchen, ist manchmal StackOverflow die bessere Wahl. Die Python-Doku enthält zwar ausführliche Informationen zu einzelnen Themen, aber hilft nicht dabei, unterschiedliche Teile von Python miteinander zu kombinieren, um Aufgaben zu lösen.
Wir sollten immer darauf achten, dass wir alles verstehen, was wir in einer StackOverflow-Antwort finden. Falls wir die vorgeschlagene Lösung nicht verstehen und trotzdem in unser Programm einbauen, ist es sehr sehr sehr wahrscheinlich, dass es später Probleme gibt, weil die verwendete Lösung nicht hundertprozentig zum Kontext passt, in dem wir sie verwenden. Wir sollten so lange nach einer Lösung suchen, bis wir eine finden mit der wir auch gut arbeiten können. Das heißt nicht, dass wir über SO nicht auch neue Methoden und Konzepte kennenlernen können.