Eine Sache, die mir neulich einfiel, sind bestimmte Typen, die noch notwendig sind, oder ein Vermächtnis, das uns zurückhält. Was ich meine ist: Brauchen wir wirklich Short, Int, Long, Bigint usw. usw.
Ich verstehe die Argumentation, Variablen / Objekte werden im Speicher gehalten, Speicher muss zugewiesen werden und daher müssen wir wissen, wie groß eine Variable sein kann. Aber eigentlich sollte eine moderne Programmiersprache nicht in der Lage sein, mit "adaptiven Typen" umzugehen, dh wenn etwas immer nur im Shortint-Bereich zugewiesen wird, werden weniger Bytes benötigt, und wenn etwas plötzlich einer sehr großen Zahl zugewiesen wird, wird der Speicher zugewiesen entsprechend für diesen bestimmten Fall.
Float-, Real- und Double-Werte sind etwas schwieriger, da der Typ davon abhängt, welche Präzision Sie benötigen. Strings sollten jedoch in der Lage sein, in vielen Fällen (in .Net), in denen meistens ASCII verwendet wird, weniger Speicherplatz in Anspruch zu nehmen, aber Strings belegen aufgrund der Unicode-Codierung immer den doppelten Speicherplatz.
Ein Argument für bestimmte Typen könnte sein, dass es Teil der Spezifikation ist, dh zum Beispiel sollte eine Variable nicht größer als ein bestimmter Wert sein können, also setzen wir ihn auf shortint. Aber warum nicht stattdessen Typbeschränkungen haben? Es wäre viel flexibler und leistungsfähiger, zulässige Bereiche und Werte für Variablen (und Eigenschaften) festlegen zu können.
Ich erkenne das immense Problem bei der Überarbeitung der Typarchitektur, da sie so eng in die zugrunde liegende Hardware integriert ist und Dinge wie die Serialisierung in der Tat schwierig werden könnten. Aber aus programmtechnischer Sicht sollte es toll sein, nein?
type hour is range 0 .. 23;