Programmieren in der Schule

Heute ist es in der Schule üblich im Informatikunterricht in der Oberstufe den Schülern eine Programmiersprache beizubringen. Ich selbst durfte Delphi lernen, an anderen Schulen wird Java oder Python gelehrt. Aber welche Programmiersprache ist am besten dafür geeignet in der Schule gelehrt zu werden?

Delphi

Die Programmiersprache Delphi basiert im Ursprung auf Pascal, einer in den frühen Siebzigern entwickelte Programmiersprache. Pascal wurde zu seiner Zeit extra mit dem Fokus entwickelt eine Lehrsprache zu sein: Pascal war einfach zu erlernen.
Das heutige Delphi (auch Object Pascal) erweitert das prozedurale Pascal um Objektorientierung und andere Features.
Auch Delphi ist für einen Anfänger leicht zu erlernen. Der große Nachteil: Delphi ist auf Windows beschränkt. Mit Kylix gibt es zwar auch die Möglichkeit Delphi unter Linux zu verwenden, allerdings nicht nativ sondern nur über eine Virtuelle Maschine.
Die Bedeutung von Delphi außerhalb des Lehrumfeldes ist eher gering (derzeit Platz 15 im Tiobe Index mit Tendenz nach unten) und das moderne Delphi konzentriert sich auf das .NET Framework von Microsoft und ist damit wieder nur unter Windows Betriebssystemen sinnvoll einsetzbar.
Insgesamt halte ich Delphi auf Grund dieser Einschränkungen nicht mehr für eine zeitgemäße Programmiersprache zur Lehre in Schulen.

Python

Die dynamische Programmiersprache Python hat in den letzten Jahren große Verbreitung erfahren. Python hat keine statischen Variablen, für den Programmieranfänger sicherlich eine Erleichterung. Andererseits kommt man schnell in die Versuchung Variablen unterschiedlicher Typen durcheinander zu werfen.
Python unterstützt sowohl die prozedurale als auch die objektorientierte Programmierung, sogar funktionale Programmierung wird unterstützt.
Auf Grund der Syntax wird der Schüler von Anfang an dazu gezwungen saubere Einrückungen im Code zu machen und nicht wie Kraut und Rüben zu programmieren. Python bietet dazu eine große Anzahl an Bibliotheken für sehr viele Bereiche.
Der Python Interpreter gibt dem Programmierer detailierte Informationen für das Debugging. Besonders für Programmieranfänger ist das Wünschenswert.
Zugute kommt noch, dass Python Plattformunabhängig und freie Software ist.

PHP

PHP, Sünde oder Segen? Die Sprache PHP ist eine besonders im Bereich der Webentwicklung weit verbreitet. Auch PHP ist ähnlich wie Python dynamisch typisiert. PHP ist freie Software und unter allen Plattformen verfügbar und sehr einfach einzurichten.
Auch in PHP bleibt es dem Programmierer überlassen, ob er einen strukturierten oder objektorientierten Ansatz wählt.
Ein besonders großer Vorteil für Anfänger: PHP verzeiht dem Programmierer sehr viel. Man kann einige Fehler machen und dennoch tut das Programm am Ende wie es soll. Aber genau hier liegt auch das Problem: Man wird als Anfänger nur mit sehr viel Disziplin lernen sauber zu programmieren. Genau das macht es für den Anfänger wieder ungeeignet.

Java

Die Sprache Java ist besonders im Business Bereich und bei der App Entwicklung unter Android sehr weit verbreitet (Tiobe Index Platz 1). Ein großer Vorteil von Java ist die Plattformunabhängigkeit. Nicht nur die Entwicklungswerkzeuge sind für alle Plattformen kostenlos verfügbar, sondern ein Java Programm ist (zumindest in der Theorie) ohne Anpassung auf allen Plattformen für die es eine JVM gibt lauffähig.
Auch für Java gibt es eine ganze Reihe von Bibliotheken und Modulen für eine Vielzahl von Aufgaben.
Der Nachteil von Java als Lehrsprache ist die hohe Lernschwelle für Einsteiger. Java ist vollständig objektorientiert. Mit ein wenig Klempnerei ist es zwar auch möglich mehr oder minder strukturiert zu programmieren, aber Java ist klar für objektorientierte Programmierung designt. Für den Einsteiger mit keinerlei Programmiererfahrung ist das nicht der richtige Ansatz.

C++

 Die Eierlegende Wollmilchsau. C++ ist ebenfalls weit verbreitet (Tiobe Index Platz 4). Viele andere Programmiersprachen (darunter Java, C#, D, …) sind syntaktisch an C++ angelehnt. Kann man einmal C++ programmieren, so fällt es einem relativ einfach andere Sprachen die an C++ angelehnt sind zu lernen.
C++ ermöglicht es dem Programmierer sehr frei zu entscheiden, welches Programmiermodell er nutzt. Ein strukturierter Ansatz ist genauso möglich wie ein objektorienterter.
Für C++ gibt es eine große Reihe an Bibliotheken und der C++ Compiler g++ ist für alle Plattformen als freie Software erhältlich.
Aber auch C++ bietet für den Anfänger eine sehr große Hürde. Anders als die oben genannten Sprachen muss man sich in C++ per Hand um die Speicherverwaltung kümmern. Das ist besonders für Anfänger schwierig.
Hat man jedoch einmal verstanden wie C++ funktioniert, so wird man auch mit anderen Programmiersprachen oftmals ohne große Probleme zurechtkommen. Gleichzeitig lernt viel darüber wie ein Computer intern arbeitet.

Schlussfolgerung

Die perfekte Programmiersprache um sie in der Schule zu lehren gibt es nicht. Ein Kompromiss wäre die Differenzierung zwischen Anfängern und Fortgeschrittenen.

In der neunten und zehnten Klasse sollte für alle Schüler verpflichtend der Informatikunterricht stattfinden. In diesen beiden Jahren werden die Grundlagen der Programmierung mit der Sprache Python gelehrt. So ist die Einstiegshürde für alle Schüler möglichst niedrig gehalten.

In der Oberstufe können Schüler das Fach Informatik freiwillig weiterführen. Neben theoretischen und allgemeinen Aspekten der Informatik sollte hier in Q1 eine Vertiefung der bisherigen Programmierkenntnisse stattfinden. Als Sprachen stünden hier Java oder C++ zu Auswahl. Auch wenn mein persönlicher Favorit C++ ist würde ich dazu tendieren Java zu lehren. C++ in einem Halbjahr zu lehren würde nicht funktionieren, dafür ist die Sprache einfach zu komplex.