Der Martin: Zukunft des Programmierunterrichtes

Beitrag lesen

Hallo,

ich vertrete die Meinung, dass man im Unterricht als erstes einfache Assemblerprogrammierung auf einem Realmode-System lernen sollte. Das verschafft einem einerseits den technischen Einblick in die Funktionsweise und andererseits eine gewisse Achtung vor allen "vernünftigen" Hochsprachen, sowie ein gewisses Augenmaß für "unsinnige" Hochsprachen.

sehe ich auch so.

Auf gar keinen Fall! Bloß nicht!

Dieses heftige Veto kann ich nun überhaupt nicht nachvollziehen. Ich bin sicher, Tom hat nicht gemeint, dass der Einblick in die Elementarteilchen der EDV die Fähigkeiten zu abstraktem und algorithmischem Denken ersetzen soll, sondern ihr nur eine Basis und ein Gegengewicht geben soll.

In Assembler gibt es keinerlei (!) abstrakten Konstrukte, es gibt (vereinfacht gesagt) nur Sprünge und elementare Rechenoperationen. Da wird das Abstraktionsvermögen überhaupt nicht geschult, ...

Oh doch. Zum Beispiel das Abstraktionsvermögen in dem Sinn, dass man eine bestimmte Datenstruktur je nach Kontext ganz unterschiedlich interpretieren kann. Zum Beispiel das Abstraktionsvermögen, sich unter einer Sequenz von Bytes im Speicher eine bestimmte Zahl, einen String, einen Fließkommawert oder gar eine komplexe Struktur vorzustellen.

wenn man mit Assembler anfängt, schreibt man später garantiert nur Spaghetti-Code der übelsten Sorte.

Definitiv nicht - oder wenn doch, dann hat man auch in Assembler das Grundprinzip nicht wirklich verstanden.

Und auch der Real-Mode schlägt in die gleiche Kerbe: Kein Memory Management und damit kein virtueller Speicher und damit Speicheradressierung nur über feste Segmente, keine Trennung von Prozessen, etc. Wenn man Leuten erklärt, wie man für Real Mode programmiert, verhindert man auch hier wieder die Möglichkeit, Abstraktion zu lernen.

Nein. Radfahren lernt man auch am besten ohne Stützräder. Fehlende Sicherheitsvorkehrungen sind IMHO eine der besten Methoden, Disziplin zu lernen: Wenn ich etwas falsch gemacht habe, dann knallt's irgendwo. Wenn der Rechner oder das Betriebssystem komplett abstürzt, ist das für den angehenden Programmierer ein viel eindringlicheres Zeichen, als wenn einfach ein Fenster aufpoppt, in dem ihm das System lapidar mitteilt, dass sein Programm "aufgrund einer unzulässigen Operation beendet wurde". Jedenfalls dann, wenn das Übungssystem nicht gleichzeitig produktiv eingesetzt wird, was wiederum technischer Suizid wäre.

Und in meinen Augen ist Abstraktion VIEL VIEL wichtiger, als sich mit den Details irgend eines Prozessors rumschlagen zu müssen.

Ja, hier stimme ich unbedingt zu. Nur verstehe ich nicht, wie du der Programmierung in Assembler die Notwendigkeit der Abstraktion absprechen kannst. Ich sehe sie hier ebenso deutlich wie in objektorientierten Hochsprachen, sie äußert sich nur ein wenig anders.

Wenn ich prinzipiell weiß, wie ich einen Algorithmus in einer Programmiersprache umsetzen kann, dann kann ich auch eine beliebige andere Programmiersprache lernen und es dort genauso tun.

Genau. Notfalls sogar in Assembler. ;-)

Und ich habe kein Problem damit, dass Schüler nicht den effizientesten Code schreiben. Wozu auch? Effizienz ist zwar für das tatsächliche Arbeiten wichtig, aber beim ersten Erlernen der Programmierfertigkeit ist Effizienz erst einmal nicht relevant.

Das sehe ich auch so. Am Anfang muss erstmal ein solides Verständnis für die Zusammenhänge da sein, bevor ich an Effizienz denken kann.

Das ist in meinen Augen das gleiche Spiel wie mit dem unsäglichen "Office-Unterricht" in der Schule: Fast überall wird einem dort beigebracht, wie man Word und Excel konkret als Programm bedient - und wenn sich etwas ändert in einer neueren Version oder die Schüler späpter einmal ein anderes Programm verwenden sollen, sind sie aufgeschmissen.  Wenn man ihnen dagegen beibringen würde, wie man am besten die Fertigkeiten "Textverarbeitung" und "Tabellenkalkulation" erlernt - und dies eben an Hand von z.B. Word und Excel, dann kennen die Schüler die Features von Excel hinterher vielleicht weniger gut, als Schüler, die direkt "Excel gelernt" haben, allerdings kann man sich das noch eher selbst aneignen, wenn man das abstrakte Konzept "Tabellenkalkulation" mal verstanden hat.

Vollkommen richtig. Diese Art von Spezialkursen halte ich auch für blödsinnig.

So long,
 Martin

--
Lehrer:  Wieviel ist die Hälfte von 8?
Schüler: Kommt drauf an. Waagrecht 0 und senkrecht 3.