🤪 Kapitel 1.05 - Was sind Datentypen?

Anfang der 1990’er Jahre hat Karl Bihlmeier eine Comicfigur entwickelt, die bei Amiga Fans zum Kult wurde.
Es war „Hermann der User“, er beschäftigt sich mit den typischen Problemen eines Computer-Nerd in und mit seinem Umfeld.
Veröffentlicht wurden diese unter anderem im „Amiga Magazin“ des Markt & Technik Verlags.
Vielen Dank an Karl Bihlmeier für die Erlaubnis zur Veröffentlichung 😉
Es war „Hermann der User“, er beschäftigt sich mit den typischen Problemen eines Computer-Nerd in und mit seinem Umfeld.
Veröffentlicht wurden diese unter anderem im „Amiga Magazin“ des Markt & Technik Verlags.
Vielen Dank an Karl Bihlmeier für die Erlaubnis zur Veröffentlichung 😉
🤪 Ein Beispiel
Wenn ich schreibe:X = 10
was meine ich?
- Die Zahl 10?
- Die Zahl 2?
- Die Zahl 16?
- Oder 10 als Text ausgeschrieben?
- Oder was ganz anderes?
In Assembler, gibt es nur Speicherinhalte, der Programmierer muss jetzt selbst wissen, welcher Speicherbereich, welchen Inhalt Repräsentiert.
00000000 00 00 00 01 42 75 64 31 00 00 78 00 00 00 08 00 |....Bud1..x.....|
00000010 00 00 78 00 00 00 10 0c 00 00 70 0b 00 00 20 0c |..x.......p... .|
00000020 00 00 30 0c 00 00 00 00 00 00 00 00 00 00 08 00 |..0.............|
00000030 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000040 00 00 00 00 00 00 00 03 00 00 00 01 00 00 00 71 |...............q|
00000050 00 00 00 07 00 00 10 00 00 69 00 62 00 65 00 72 |.........i.b.e.r|
00000060 00 72 00 79 00 00 00 00 00 00 00 00 00 00 00 00 |.r.y............|
00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000010 00 00 78 00 00 00 10 0c 00 00 70 0b 00 00 20 0c |..x.......p... .|
00000020 00 00 30 0c 00 00 00 00 00 00 00 00 00 00 08 00 |..0.............|
00000030 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000040 00 00 00 00 00 00 00 03 00 00 00 01 00 00 00 71 |...............q|
00000050 00 00 00 07 00 00 10 00 00 69 00 62 00 65 00 72 |.........i.b.e.r|
00000060 00 72 00 79 00 00 00 00 00 00 00 00 00 00 00 00 |.r.y............|
00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
Bei einem ↗ Datentyp, wird jedoch exakt festgelegt, was genau der Speicherbereich repräsentiert. Und bei ↗ "Stark Typisierten Sprachen" ist es nur über Umwege möglich den Datentyp nachträglich zu modifizieren - Nicht Unmöglich, was ja einer der Probleme von C/C++ ist, das es dem Programmierer genau dies ermöglicht wird. Wobei unter sehr strengen gefassten Umständen dies auch Sinn machen kann, aber das Missbrauch Potential ist leider sehr hoch und wird aus Bequemlichkeit fleissig ausgenutzt.
🤪 Alles Speicher oder was?
Bei Datentypen wird grob zwischen ↗ Atomaren Datentypen und zusammengesetzten Datentypen unterschieden. Der Unterschied ist, alles was von der CPU mit einer einzigen Operation ausgeführt werden kann, wird als "Atomare Operation" bezeichnet, da diese nicht Unterbrochen werden kann. Es gilt "Alles" oder "Nichts", keine Unterbrechung währenddessen. Wobei bei "Zusammengesetzten Datentypen" die Möglichkeit einer Unterbrechung durch Fehler oder Resourcenmangel besteht und damit das Risiko den Inhalt zu verfälschen. Als Beispiel: Wenn das duplizieren eines Objekts unterbrochen wird und somit die Kopie korrupte oder unvollständige Daten enthält.Die CPU kann natürlich jederzeit durch (meist externe) ↗ Interrupts oder sogenannte ↗ Breakpoints unterbrochen werden und somit ist auch eine Manipulation einer Atomaren Anweisung möglich. Diese speziellen Techniken sind aber nicht Gegenstand eines regulären Programmablaufs, dort laufen Interrups komplett transparent im Hintergrund ab ohne das dies vom Programmierer besonders beachtet werden muss. Dies gilt aber nicht für sehr Systemnahe Programme, wie zum Beispiel ↗ Treiber oder ↗ Echtzeit Systeme - Dort gelten teilweise andere Spielregeln.
