Einzelnen Beitrag anzeigen

Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#22

Re: Integer und Cardinal bei 32 Bit eingefroren? NativeInt?

  Alt 5. Apr 2010, 20:15
@Implementation, wenn ein 14jähriger diese Meinung vertritt, ist das so..., allerdings ist das Zitat aus dem Zusammenhang gerissen: Es geht nicht nur um Zeiger, wenn es um die 32- oder 64-Bit-Kompilate desselben Quelltextes geht. Sondern es geht darum, dass bspw. eine Integer-Variable das ist, weshalb sie als Integer-Variable deklariert wurde: "Diese Typen sollten, wenn möglich, immer verwendet werden, da sie die optimale Ausführungsgeschwindigkeit für die zugrunde liegende CPU und das Betriebssystem gewährleisten." (Delphi-Hilfe)

Zeigeroperationen sind per se auch kein unsicherer Code. Der "Fachbegriff" "unsicherer Code" bezeichnet Code, dessen Speicherverwaltung sich der Müllabfuhr (aka "Garbage Collector") entzieht. Weil Delphi keine Müllabfuhr hat, könnte man auch Objekte dieser Kategorie zuordnen. Trotzdem werden sie verwendet, denn sie sind ein gutes, bewährtes Konzept. Genau so verhält es sich mit Zeigern.

@Alzaimar, bei Ihnen frage ich mich allerdings, ob Ihr Beitrag in Ihrem Kopf überhaupt die Moderatorenschleife durchlaufen hat!? Dass Sie das Thema nicht berührt, ist offensichtlich. Es war überflüssig, dass in einem solch feisten Beitrag zu verpacken. Im Übrigen verwendet die RTL und VCL ausgiebig den Typ Integer für Zeigerarithmetik. -- Wenn Sie die für "Frickelcode" halten? Entsprechend hohe Verbreitung hat dieses Vorgehen. Und ja, die notwendige Voraussicht, die gar nicht so weise hat sein müssen, hat man haben können. Nicht wenige haben diese auch gehabt! Zunächst war vorhersehbar, dass Speicher größer werden und Zeiger Adressen in diesem Speicher fassen können müssen. Und auch ganz praktisch sind die C-Leute schon einmal über ihre eigene Inkonsistenz gestolpert, so dass man hatte das Wort auf 2 Byte fixieren müssen. Die ursprüngliche Definition eines Wortes ist die volle Registerbreite, und ist damit das, was man in Delphi von Cardinal erwartet: Der mitwachsende, generische Datentyp. Bei der Umstellung von 16 auf 32 Bit wollte man dann aber nicht den vielen, tollen C-Quelltext ändern, und hat stattdessen das Doppelwort eingeführt. Daraus folgte wiederum, dass 16-Bit-Programme "16-Bit-Programme blieben". Delphi ist eine sehr typtreue Sprache, und es ist grotesk, wenn die wohldurchdachte Typensystematik durch externe Idiotie miniert wird.

@SirThornberry: Integer statt Cardinal zu verwenden, entstammt der Zeit, als es Cardinal noch nicht gab. Natürlich ist Cardinal semantisch besser.

An die Schnittstellen habe ich auch gedacht (*.h-Dateien, Dateiformate usw.). Meiner Ansicht nach ist es ein Fehler, etwa einen mitwachsenden Datentyp zu verwenden, wenn die Größe jedoch festgeschrieben ist. Entsprechend sollte man den Fehler korrigieren, und nicht zwangsweise den Quelltext anrühren, der zum Mitwachsen ausgelegt ist.
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat