Nginda wunydjangum!
Was mich persöndlich an Java für den Unterricht stört ist folgendes:
- public void main.....
Direkt vom Anfang recht komplexAlso wenn dir das schon komplex erscheint ... wow, wie deklariert man denn in anderen Sprachen Funktionen bzw. Methoden mit und ohne Rückgabewerte?
In den meisten Sprachen fängt eine Datei (Script / Ressource / ...) mit etwas schwarzer Magie an, die Anfänger nicht verstehen. Z.B. gehört ja auch der Doctype in HTML zu den Dingen, die man mit als letztes kapiert. Wenn ich einem Anfänger Tips gebe, gebe ich ihm einfach einen Doctype vor, den er in jede neue Datei als erstes reinkopieren soll. Dazu gibt's eine Billig-Erklärung (sinngemäß: Der Browser hat mehrere Darstellungsmodi, und ohne diese Zeile geht er in den falschen); die richtige Erklärung kommt, wenn die Grundlagen geklärt sind.
Analog würde ich es bei Java u.ä. machen: Eine Musterdatei mit einer Klasse und einer main() vorgeben und dazusagen, an welcher Stelle der eigene Code eingefügt werden muß. Schlüsselwörter wie public kann man sowieso nicht erklären, solange die Grundlagen der Objektorientierung noch unbekannt sind, und die kommen ja normalerweise erst nach den Übungen zu Schleifen etc.
- Klammerung
Die Fehlersuche bei Schülern ist sehr mühsam, da nich eingerückt wird und
völlig beliebig geklammert und gelöscht wird. Das würde bei Python
wegfallen.
Unser Lehrer ist auch immer ausgerastet, wenn nicht ordentlich eingerückt wurde. Damals dachten wir, der übertreibt, inzwischen verstehe ich ihn vollkommen. ;-)
- Erzeugen von exe'n für verschiedenen Betriebssysteme
Das ist für die Schüler sehr wichtig, da so ein eigenes Programm einfach
sehr befriedigend sein kann.
Ja, "exe" muß sein! Andere Sachen, die nur in einer bestimmten Umgebung laufen, fühlen sich für Anfänger einfach nicht wie richtige Programme an.
Dennoch habe ich immer wieder Schüler, die mit so etwas
for (int i = 0;i<10;i++)völlig überfordert sind.
Wie machst du es in Python, wie in VB, wie in **** ? Ist gibt immer eine Grammatik die man lernen muss, scheissegal, welche Sprache.
Das stimmt schon, aber z.B. die Visual-Basic-Variante
For i = 0 To 9
...
Next i
ist für Anfänger viel einfacher zu verstehen und zu merken als der Zeichenbandwurm aus der C-Welt.
Ansonsten ist das reine Gewöhnungssache, man lernt es genauso wie im Französischen die Satzstellung ... oder die Formel für den Radius eines Kreises.
Das stimmt, und jede neue Programmiersprache ist leichter zu lernen als die erste, weil man immer irgendwelche Konzepte wiedererkennt. Aber die spannende Frage ist eben, mit welcher man am besten anfängt. Ich bin da selbst unschlüssig. Ich habe autodidaktisch mit Visual Basic angefangen.
Vorteile:
- leicht zu lesen
- wenig schwarze Magie in den Code-Dateien
- einfache englische Funktionsnamen in den Standardbibliotheken, die man auch mal erraten kann (nicht stristr und so'n Zeug)
- macht eine "richtige exe" (auch wenn man inzwischen das .NET-Framework braucht)
Nachteile:
- keine Unterscheidung zwischen Zuweisungs- und Vergleichsoperator (beides =, Mehrfachzuweisungen sind nicht möglich), das sorgt beim Umstieg auf andere Sprachen für Verwirrung
- Befehle werden nur durch Zeilenumbruch beendet, das führt beim Umstieg auf z.B. Java zum notorischen Vergessen des Semikolons
- keine Zeiger (von denen Anfänger zwar sowieso die Finger lassen sollten, die man aber später mal lernen sollte, auch dann, wenn man sie kaum benutzt)
- case-insensitiv, auch dadurch entstehen böse Überraschungen beim Umstieg
Diese Vor- und Nachteile beziehen sich jetzt natürlich nur auf den Einsatz zum Lernen. Bei der Frage, ob VB für ein bestimmtes Projekt geeignet ist, können sie ganz anders liegen.
Viele Grüße vom Længlich
Mein aktueller Gruß ist:
Dyirbal (gesprochen in Queensland, Australien)