hallo
die frage ist: was genau sollen die teenager lernen?
wenn es um das verstehen von ablauflogik an sich geht - also die tatsächliche sprache unerheblich ist - bietet sich z.b. was in der art von lego mindstorms an: dort kann man sich aus speziellen bauteilen kleine roboter basteln und diese programmieren - dank verschiedener sensoren kann so ein roboter tatsächlich auf verschiedene ereignisse reagieren.
vorteil: man hat einen viel unmittelbareren zugang zur programmierung - immerhin sieht man sofort, ob der roboter das tut, was er soll. und man kann es „mit den fingern angreifen“ - das ganze ist also weniger abstrakt als die üblichen programmierbeispiele.
allerdings hat die „programmiersprache“ wenig bis nichts mit an sonsten am markt üblichen programmiersprachen zu tun. wer also erfolgreich einen roboter durch einen hindernis-parcour geschickt hat, kann deshalb noch lange nicht ein simples rechenprogramm schreiben. aber zumindest die grundkonstrukte einer programmiersprache (entscheidungen, schleifen, statusabfragen etc.) sollten vermittelt werden.
generell würde ich sagen, dass man eine programmiersprache nur dann lernen kann, wenn man sie tatsächlich anwendet. ich kann zwar die java-syntax auswendig lernen - wenn ich aber keinen wirklichen bedarf an java-programmen habe, werde ich nie ein guter java-programmierer.
es hängt also davon ab, was die teenager sonst noch so am computer treiben - was sie also dazu motiviert, etwas zu automatisieren.
wird z.b. viel mit textverarbeitung gearbeitet, bietet es sich an, mit der makro-programmiersprache zu beginnen. sofern ms office eingesetzt wird wird als makro-sprache visual basic for applications genutzt - mit dem zusatznutzen, dass man dann auch leicht auf „echtes“ visual basic umsteigen kann. auch hier gilt: man hat sofort den praktischen anwendungsnutzen und daher mehr motivation, in die tiefe zu gehen. allerdings sind die möglichen ausbaustufen von office-makros zugegebenermassen sehr eingeschränkt.
java an sich ist nicht so schlecht. man kann mit java wunderbar prozedural programmieren, ohne auch nur ansatzweise mit objektorientierung in kontakt zu kommen. einfach vor jedes feld und vor jede methode ein „static“ und schon schauts fast so aus wie c-code…
v.a. hat man extrem mächtige entwicklungswerkzeuge, die gratis zu haben (eclipse, netbeans, etc.), gleichzeitig aber auch recht komfortabel sind. und wenn man später in die echte programmierung umsteigen will, hat man gleich die häufigst verwendete sprache intus. nebenbei wäre es auch ein einstieg in die app-entwicklung für android - auch gerade kein kleiner bereich.
lg
erwin