Der Martin: Zukunft des Programmierunterrichtes

Beitrag lesen

Hallo,

* Wie funktioniert eine CPU (Prinzip)
* Wie funktioniert das Zusammenspiel von CPU, Speicher, I/O
* Welche Arten von Instruktionen gibt es (Beispiele verschiedener CPUs)
* Wie kann man den Programmfluss strukturieren (Subroutines, Sprünge, Bedingungen)

Die ersten beiden Punkte zu erklären, halte ich noch für sinnvoll, die anderen beiden wiederum nicht. Programmflusssteuerung auf Assembler-Ebene ist nichts, was ich Anfängern beibringen will, weil man da außer Funktionsaufrufen wirklich nur Sprünge und nichts weiteres hat.

und schon allein diese Erkenntnis ist doch interessant. Aber auch das Wissen, dass es einfache CPUs gibt, die wirklich nur addieren, subtrahieren und Werte hin- und hertransferieren können, und andererseits solche, die mit einem einzigen Befehl eine ganze Matrixmultiplikation machen (z.B. spezielle DSPs), finde ich bemerkenswert. Es zeigt dem Lernenden, dass die Prozessoren extrem unterschiedlich sind und daher Verallgemeinerungen auf dieser Ebene selten richtig.

Es sei denn, ich mache etwas sehr hardwarenahes oder muss meinen Algorithmus auf das letzte Quäntchen Performance / Speicherverbrauch optimieren, interessiert es mich ehrlich gesagt nicht die Bohne, wie das intern im Speicher organisiert ist.

Das, unter anderem, unterscheidet uns. ;-)

Und wenn ich Datentypen umwandele, will ich eher logische Umwandlungen als Uminterpretationen.

Je nachdem. Ich kann mich des Eindrucks nicht erwehren, dass du viel zu sehr auf hochkomplexe, leistungsfähige Systeme und entsprechend entwickelte Programmierkonzepte fixiert bist. Unterschätze nicht die Bedeutung und Verbreitung von kleinen und kleinsten Controllern!

Was soll ich mit einem Float als Integer interpretiert?

Nichts sinnvolles. Aber einen Integerwert, der einmal vorzeichenlos deklariert wurde, an einer anderen Stelle vorzeichenbehaftet zu interpretieren, kann oft lästige Fallunterscheidungen und Offset-Jonglage ersparen.

Und auch bei einzelnen Zeichen wird es in Zeiten von Unicode immer sinnloser, da irgend etwas direkt uminterpretieren zu wollen, denn nicht mal UTF-16 kann alle Unicode-Zeichen mit einer Einheit (2 Byte) darstellen, ...

Das ist einer der Gründe, warum ich Unicode nicht mag.

Ich glaube, hier kommt einfach ein anderes Paradigma durch: Du willst, wenn Du programmierst, möglichst genau beeinflussen können, was bei der Hardware ankommt.

Richtig. Ich bin sozusagen eher der Embedded-Programmierer, der diese Philosophie aber gern auch auf größeren Systemen fortsetzt.

mir ist es viel wichtiger, in einer Programmiersprache einen Algorithmus ausdrücken zu können ...

Das eine schließt doch das andere nicht aus!
Ich finde es unheimlich spannend, für einen PIC eine Divisionsroutine zu schreiben, wenn man weiß, dass man wegen des begrenzten Programmspeichers gerade noch 38 Byte dafür zur Verfügung hat.

Ich finde es zum Beispiel bei Haskell extrem geil, dass man beliebig große Zahlen als Integer-Werte nutzen kann. Wie das intern umgesetzt wird, weiß ich nicht, ist mir auch vollkommen egal, ...

Siehste, das finde ich unbefriedigend - ich "muss" wissen, wie es gemacht ist, will das Prinzip durchschauen, nicht nur anwenden.

Umso mehr wundert mich bei dieser Einstellung ("der daraus resultierende Code ist mir egal"), warum die gleichen Leute dann bei der Erstellung von Webseiten den Code möglichst komplett von Hand schreiben, anstatt auf die ach so bequemen Tools zurückzugreifen.

Weil sie Grundlagenwissen schaffen, das der angehende Programmierer eben in vielen Bereichen *doch* wieder braucht.
Real Mode und Segmentierung?

Nu' klammer dich doch nicht an dieser komischen Real-Mode-Segmentierung als Besonderheit der x86-Architektur fest. Es geht ums Prinzip. Ebenso wie ich bedaure, dass in der Fahrschule heutzutage kaum noch auf die Technik eingegangen wird und im Geographieunterricht in der Schule kein Schwein mehr lernt, welche Bundesländer Deutschland ausmachen und wo welche Flüsse und Gebirge sind (war zu meiner Gymnasialzeit in den 80ern schon so). Die Grundlagen werden in vielen Gebieten immer mehr vernachlässigt. Und das finde ich schade, teils sogar bedenklich.

Aber ich sehe schon, wir haben recht unterschiedliche Vorstellungen von dem, was "richtig" ist - und das ist gut so. :-)

So long,
 Martin

--
Zwei Mäuse treiben's miteinander. Sagt der Mäuserich: "Hoffentlich ist nicht wieder alles für die Katz."