Willkommen bei der Programmier-Werkstatt!

In der Programmierwerkstatt kannst du zusammen mit anderen Studierenden in guter Atmosphäre eine Woche deine Programmierfähigkeiten auf- und ausbauen und dein eigenes Projekt umsetzen.

Alles Organisatorische findest du in unserem ISIS-Kurs. Bei weiteren Fragen spreche uns gerne vor Ort an oder schreibe ins Forum.

Wir freuen uns auch über alle Formen von Feedback!

Das Material

Wir haben zum einen “Kurse” zu C, Java, Python und Web-Programmierung fürs selbstständige Bearbeiten zusammengestellt. Außerdem haben wir noch ein paar “Lern-Nuggets” zu Sprachen-unabhängigen Kompetenzen und Inspirationen, was man so schönes bauen könnte.

Welche Sprache bzw. Was soll ich lernen?

Du bist hier frei und kannst ganz nach deinen Interessen gehen. Falls du unentschlossen bist, welche Sprache für dich am interessantesten ist, hier ein kleiner Versuch einer Einordnung. Die Materialien zu den Sprachen sind auch durchaus unterschiedlich, schau einfach mal, was dir gefällt.

Python vs. Java

(Hier eine zweite Meinung)

Python und Java sind beides moderne Allzweck-Programmiersprachen. Beide sind perfectly fine für das Programmieren von Anwendungen und Webseiten. Ein paar Unterschiede sind:

Statische vs. dynamische Typisierung

Java ist statisch typisiert, das heißt man muss i.d.R. den Typ einer Variable angeben1. Beim Kompilieren, also vor dem Ausführen, wird dann geprüft, dass der Code von den Typen her Sinn ergibt, was Fehler schnell finden kann.

int x = 1;
List<String> s = List.of("foo", "bar");

In Python hingegen muss man Typen nicht explizit angeben:

x = 1
s = ["foo", "bar"]

Man beachte, dass es Typen und damit auch Typfehler trotzdem gibt, die werden dann halt aber erst beim Ausführen des Programs “gefunden”. Wenn das zum Problem wird, kann man in Python Typ-Annotationen hinzufügen und mit einem Typchecker wie mypy prüfen.

Kurzum: Python gibt bei Typen mehr Freiheit und kann mit etwas Aufwand trotzdem ähnliche Sicherheit wie Java bieten.

Verbosity bzw. Ausdrucksstärke

Generell erfordert Java, dass du mehr tippst um das Gleiche zu sagen wie in Python. Das kann nerven, ist aber kein Beinbruch.

Effizienz

Python ist langsam. Es ist eigentlich nicht möglich, schnellen Python-Code zu schreiben. Data Science und KI-Code in Python nutzt den Trick, dass Python eigentlich nur als “Klebstoff” genutzt wird, um schnellen Code, der in anderen Sprachen geschrieben wurde, zusammenzukleben.

Java ist durchaus schnell. Zwar nicht ganz so schnell wie optimierter Code in einer kompilierten Sprache wie C, C++ oder Rust, aber gegeben der Nettigkeiten, die Java bietet, ist es sehr schnell.

Bibliotheken

Für Web- und Anwendungsentwicklung haben Java und Python beide super Bibliotheken und Frameworks.

Bei Data Science hat Python die Nase vorn, dafür gibt es aber mehr Big Data-Zeug in Java.

C?

Im Vergleich zu Python und Java hat C (und z.B. auch C++ und Rust) eine andere Nische: Statt für Anwendungen bietet sich C für Systemsoftware an, also Software die von Anwendungen konsumiert wird wie z.B. Datenbanken, Betriebssysteme oder auch Videospiel-Engines.

Eine simple Webapp in C zu bauen ist deutlich schwerer als in Python oder Java, dafür ist es in Python schlicht unmöglich und in Java schwer, z.B. eine effiziente Datenbank zu implementieren. Python ist in C und Java in C++ implementiert.

Falls man also Interesse an low-level, embedded oder Systemprogrammierung hat, kommt man bis zu einem gewissen Grad nicht um C herum. Und C ist durchaus eine “kleine” Sprache mit nicht allzu vielen Konzepten (wenn auch mit mehr als genug Footguns). Und wenn man erstmal Freude an Systemprogrammierung gefunden hat aber von C genervt ist, kann man schön motiviert mit Rust (oder halt C++) weitermachen.

Web bzw. Frontend bzw. Javascript?

Web ist toll. Wenn du eine Webseite bzw. Webapp bauen willst, go for it! Ab zum MDN Curriculum!

Fang ruhig im Frontend mit HTML und Javascript an, die Canvas API ist auch toll. Bleib auch ruhig erstmal “klein”, also HTML- und Javascript-Dateien ohne große Frameworks oder so, die viel Komplexität mit sich bringen.

JavaScript läuft auch nicht nur im Browser, mit node oder deno kannst du auch “normale” Allzweckprogramme wie in Python und Java schreiben.


Fußnoten

  1. Lokale Typinferenz mal außen vor…