Orlok: An Programmieren Interessierter einführen

Beitrag lesen

Hallo Markk

Nun überlege ich, welche Technologie hier angebracht wäre.

Insofern noch keine thematische Präferenz vorliegt, wäre als allgemeine Empfehlung für einen Programmieranfänger Python sicher nicht die schlechteste Wahl.

Die Sprache ist high-level genug, um sich nicht mit Sachen wie Speichermanagement oder Pointerarithmetik beschäftigen zu müssen. Das heißt, es ist kein tieferes Wissen über die Funktionsweise eines Computers nötig, um Programme in Python zu schreiben. Insbesondere Anfänger sind genug damit beschäftigt, sich auf die Logik ihres Programms sowie die korrekte Verwendung der Syntax der Sprache zu konzentrieren.

Die Syntax von Python ist zudem vergleichsweise einfach. Gute Lesbarkeit war ja ein erklärtes Ziel bei der Entwicklung der Sprache. Die wichtigsten Regeln sind hier schnell erlernt. Auch das Typsystem von Python ist anfängerfreundlich. Python ist stark typisiert, das heißt, es gibt keine impliziten Typkonvertierungen, bei denen Informationen verloren gehen. – Nicht nur Programmieranfänger kommen mit stark typisierten Sprachen oft besser klar als mit schwach typisierten Sprachen, wie zum Beispiel JavaScript.

# Let Python infer the types

def mul(a, b):
    return a * b


# or give some hints

def concat(a: str, b: str) -> str:
    return a + b

Andererseits ist Python aber auch eine dynamische Sprache, das heißt, es muss dem Typsystem nicht bei jedem Schritt und Tritt der Typ jeder Variable und jedes Parameters bekanntgegeben werden, auch wenn Typannotationen wie in dem Beispiel oben mittlerweile möglich sind. Das macht es leichter, sich auf das Wesentliche zu konzentrieren.

Python ist außerdem nicht auf ein Paradigma beschränkt. Strukturierte, prozedurale Programmierung, objektorientierte Programmierung und auch funktionale Programmierung werden durch entsprechende Sprachkonstrukte unterstützt. Anders als bei einigen anderen Sprachen, gibt es hier keinen Zwang, sich gleich zu Beginn mit den Aspekten eines bestimmten Paradigmas zu befassen. Das sehe ich als großen Vorteil.

Ebenfalls von Vorteil ist die sehr umfangreiche Standardbibliothek von Python. Für die allermeisten Projekte, mit denen sich ein Programmieranfänger beschäftigt, wird die dort bereitgestellte Funktionalität völlig ausreichend sein. Wer doch über den Tellerrand hinausschauen möchte, wird ein sehr reichhaltiges Ökosystem vorfinden.

Was direkt zum nächsten Punkt führt, der für Python spricht, nämlich die praktische Relevanz. Python ist eine der am meisten verwendeten Programmiersprachen der Welt und nicht nur eine toy language für Anfänger. Das hat auch zur Folge, dass es enorm viele gute Artikel und Tutorials im Internet gibt, die beim Lernen der Sprache behilflich sind. Und es gibt sehr viele Menschen die Python beherrschen, dich ja wohl eingeschlossen, die hilfreiche Ratschläge geben können.

Unabhängig von der Wahl der Programmiersprache würde ich aber dringend davon abraten, einen Programmieranfänger wie deinen Freund mit irgendwelchen Konzepten zu behelligen, die nicht absolut nötig sind für den aktuellen Lernfortschritt. Vergiss nicht, wie lange du selbst gebraucht hast, um das Wissen zu erwerben, das du heute hast! Meine Erfahrung aus den entsprechenden Kursen an der Universität ist, dass diejenigen, die vor dem Besuch der Kurse nie programmiert haben, von der Fülle der Konzepte, die ihnen dort an den Kopf geworfen werden, schlicht erschlagen werden. Das führt dann sehr schnell zu Frust und Resignation, und keineswegs dazu, dass die Leute schneller gute Programmierer und Software‐Entwickler werden. Der Spaß bleibt da auf der Strecke.

Wichtiger als das Wissen um irgendwelche Programmierparadigmen oder abstrakte Modelle ist es für Anfänger, Problemlösungsstrategien an die Hand zu bekommen. Es ist frustrierend, wenn man sich eine Aufgabe gestellt hat, die nicht übermäßig anspruchsvoll erscheint, an der man als Anfänger aber dennoch scheitert, weil man an einen Punkt kommt, an dem man einfach nicht mehr weiter weiß.

Wie kann ich ein großes, schweres Problem in viele kleine, lösbare Probleme zerlegen? Wie kann ich überprüfen, ob mein Programm das tut, was es soll? Wie finde ich heraus, warum es nicht das tut, was es soll? Wo finde ich Informationen, die mir bei der Lösung meiner Probleme weiterhelfen? – Antworten auf diese Fragen zu finden, sollte absoluten Vorrang haben. Sonst wird sich schon bald ein Gefühl der Überforderung einstellen und der anfängliche Elan verflogen sein.

Viele Grüße,

Orlok