Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Umgang mit Single und Real (https://www.delphipraxis.net/168675-umgang-mit-single-und-real.html)

jaenicke 4. Jun 2012 01:09

AW: Umgang mit Single und Real
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1169369)
Wieso das? Es verbietet dir keiner ein NativeInt = Integer für Pre-XE2 zu definieren.

Ich sprach ja von demselben Code, dass man das verhältnismäßig einfach lösen kann, ist klar.
Nun muss man aber jeden Code durchforsten, bei dem man von der eigentlichen Selbstverständlichkeit, dass Integer nach dem Schritt zu 32-Bit auch bei dem zu 64-Bit mitwächst, ausgegangen ist.

Ich habe z.B. genau aus diesem Grund schon seit Jahren Integer an solchen Stellen benutzt und LongInt usw. bei Schnittstellen. Aber das war ja nun alles für die Katz.

Zitat:

Zitat von Bernhard Geyer (Beitrag 1169369)
Blöd wäre nur gewesen das dieser fehlerhafte Code sehr viel häufiger und auch teilweise sehr versteckt Portierungsprobleme verursacht hätte.

Das heißt wenn alle statt Integer jetzt Double schreiben, dann versteht IntToStr bald auch Double Werte?

Zitat:

Zitat von Bernhard Geyer (Beitrag 1169369)
Wieso hier einen eigenen Weg gehen der Eigentlich nur zu Problemen bei der interoperabilität führt. Eine "reine" Entscheidung hätte dazu geführt das jeder der was mit einem Delphi-programm zu tun hat wissen muss das int von C/C++/C#/Java/... unter Delphi int32 bedeutet.

Das muss man nicht extra wissen, da die festen Typen in der Windows API sehr gut definiert sind und man nur diese Typen einfach benutzen muss.

Und da Embarcadero sich ja schon eher an professionelle Entwickler mit dem entsprechenden Kleingeld richtet, sollte man dann sich bei solchen Entscheidungen dann auch an diejenigen richten, die wissen was sie tun. Und nicht, ohne jemandem zu nahe treten zu wollen, an die, die so etwas eben erst noch lernen müssen... das ist ja nix Schlechtes, sollte aber nicht diese Entscheidungen beeinflussen.

Bernhard Geyer 4. Jun 2012 06:26

AW: Umgang mit Single und Real
 
Zitat:

Zitat von jaenicke (Beitrag 1169375)
..., bei dem man von der eigentlichen Selbstverständlichkeit, dass Integer nach dem Schritt zu 32-Bit auch bei dem zu 64-Bit mitwächst, ausgegangen ist.

Spätestens nachdem man bei C/C++ diese mitwachsen aufgekündigt hat war das keine Selbstverständlichkeit mehr.

Zitat:

Zitat von jaenicke (Beitrag 1169375)
Ich habe z.B. genau aus diesem Grund schon seit Jahren Integer an solchen Stellen benutzt und LongInt usw. bei Schnittstellen. Aber das war ja nun alles für die Katz.

Dann gehörst du zu einer absoluten Minderheit die das hier macht. Ich denke der größteil der Programmirschar (mich eingeschlossen) hat sich an dieser Stelle keinen Gedanken gemacht.

Zitat:

Zitat von Bernhard Geyer (Beitrag 1169369)
Und da Embarcadero sich ja schon eher an professionelle Entwickler mit dem entsprechenden Kleingeld richtet, sollte man dann sich bei solchen Entscheidungen dann auch an diejenigen richten, die wissen was sie tun. Und nicht, ohne jemandem zu nahe treten zu wollen, an die, die so etwas eben erst noch lernen müssen... das ist ja nix Schlechtes, sollte aber nicht diese Entscheidungen beeinflussen.

M.E. war die professionelle Entscheidung hier keinen Sonderweg zu gehen sondern sich hier an C/C++/Java/C# zu halten.
Oder kennst du eine (relevante) Programmiersprache dessen Haupt-Integertyp von 32-Bit nach 64-Bit gewachsen wäre?

jaenicke 4. Jun 2012 06:39

AW: Umgang mit Single und Real
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1169377)
M.E. war die professionelle Entscheidung hier keinen Sonderweg zu gehen sondern sich hier an C/C++/Java/C# zu halten.
Oder kennst du eine (relevante) Programmiersprache dessen Haupt-Integertyp von 32-Bit nach 64-Bit gewachsen wäre?

Nein, kenne ich nicht, das habe ich mir nicht angeschaut, da ich auch dort stets konkrete Typen benutze.
Ist es denn dort auch so, dass es einen generischen Integertypen gibt, der von 16-Bit auf 32-Bit gewachsen ist, aber von 32-Bit auf 64-Bit nicht? Bei C# wüsste nicht welcher das sein sollte, int war schließlich immer 32-Bit und ist auch kein generischer Typ.
C++ kenne ich nicht gut genug um das sagen zu können.

Furtbichler 4. Jun 2012 06:41

AW: Umgang mit Single und Real
 
Zitat:

Zitat von jaenicke (Beitrag 1169379)
Bei C# wüsste nicht welcher das sein sollte, int war schließlich immer 32-Bit und ist auch kein generischer Typ.

Als der Wechsel von 16 auf 32 vollzogen wurde, war C# noch gar nicht geboren.

Bernhard Geyer 4. Jun 2012 06:51

AW: Umgang mit Single und Real
 
Zitat:

Zitat von jaenicke (Beitrag 1169379)
Ist es denn dort auch so, dass es einen generischen Integertypen gibt, der von 16-Bit auf 32-Bit gewachsen ist, aber von 32-Bit auf 64-Bit nicht?

Genauso der "normale" Integer-Datentyp. Deshalb meine ich ja das hier ein Wachsen bei Delphi einen Sonderweg darstellen würde wenn selbst C/C++ das nicht mehr bei Sprung auf 64-Bit macht.

Zitat:

Zitat von jaenicke (Beitrag 1169379)
Bei C# wüsste nicht welcher das sein sollte, int war schließlich immer 32-Bit und ist auch kein generischer Typ.

Eine managed Umgebung kann sowas gar nicht machen da du beim Compilierzeitpunkt ja gar nicht weist ob dein Programm als 32-Bit oder 64-Bit zum Einsatz kommt.

Zitat:

Zitat von jaenicke (Beitrag 1169379)
C++ kenne ich nicht gut genug um das sagen zu können.

Da C++ "nur" der Objektaufsatz auf C ist sind hier die Basistypen identisch.

pixfreak 4. Jun 2012 07:39

AW: Umgang mit Single und Real
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1169381)
Da C++ "nur" der Objektaufsatz auf C ist sind hier die Basistypen identisch.

Moin,

ich hoffe, das >>"nur"<< war ganz bewusst gewählt... :wink:

Wenn ich mich recht entsinne, war ein int unter Turbo C noch ein 2 Byte Datentyp... Da war long der "große" 4 Byte-Typ.

GNU C++ in der 486er Zeit, da war int schon 4 Bytes groß, allerdings auch long. Gleiche Zeit und auf dem Alpha war long dann 8 Bytes groß. :wall:
Also seeehr plattformabhängig und füllte den Quelltext mit vielen Compilerdirektiven...


VG Pixfreak

jaenicke 4. Jun 2012 07:55

AW: Umgang mit Single und Real
 
Letztlich bringt es nix darüber groß zu diskutieren, jeder muss mit der Entscheidung leben. Mag er sie schlecht finden wie ich oder gut wie andere.

Insofern belasse ich das mal dabei, meine Meinung dazu habe ich ja genau genug erklärt.

Bernhard Geyer 4. Jun 2012 08:08

AW: Umgang mit Single und Real
 
Zitat:

Zitat von pixfreak (Beitrag 1169384)
ich hoffe, das >>"nur"<< war ganz bewusst gewählt... :wink:

"Nur" damit hier keine Diskussion aufkommt.

Zitat:

Zitat von pixfreak (Beitrag 1169384)
Wenn ich mich recht entsinne, war ein int unter Turbo C noch ein 2 Byte Datentyp... Da war long der "große" 4 Byte-Typ.

GNU C++ in der 486er Zeit, da war int schon 4 Bytes groß, allerdings auch long. Gleiche Zeit und auf dem Alpha war long dann 8 Bytes groß. :wall:
Also seeehr plattformabhängig und füllte den Quelltext mit vielen Compilerdirektiven...

:-)
Wahrscheinlich auch ein Grund wieso man diese mitwachsen der Datentypen mehr oder minder aufgibt.
Beim wechsel von 16 auf 32-Bit waren solche Busbreiten-Anpassen performancetechnisch noch sehr zwingend. Heutzutage kommen auch 64-Bit Prozessoren mit 32-Bit Integer ganz gut zurecht so das das hier nicht mehr ins Gewicht fällt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:07 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz