Hallo,
ich las gerade auf der Web-Site unter Fixed bugs folgendes:
# 20021105: packed object should not be allowed (fjf703.pas)
Warum? Das ist ein dokumentiertes Feature von FreePascal.
Ich denke, dass auch die freien Compiler untereinander ein wenig auf Kompatiblität achten sollten.
Hallo Andreas!
On Fri, Mar 07, 2003 at 10:25:59AM +0100, Andreas K. Foerster wrote:
Ich denke, dass auch die freien Compiler untereinander ein wenig auf Kompatiblität achten sollten.
Sehe ich nicht so. Beide Compiler sollten sich an ausgeschriebene Standards halten. Mit "Standards" meine ich selbstverständlich ISO, ANSI ... Was beide Compiler darüberhinaus implementieren, ist ihre Sache.
GPC und fpc verfolgen dabei leicht unterschiedliche Richtungen hinsichtlich der Compatibilität zu dritten Abietern, die sich darin niederschlägt, dass fpc Dinge implementiert hat, die eher an Turbo-Pascal oder Delphi erinnern lassen.
Beide Compiler sind unterschiedlich, und das ist gut so.
Eike
Eike Lange schrieb:
On Fri, Mar 07, 2003 at 10:25:59AM +0100, Andreas K. Foerster wrote:
Ich denke, dass auch die freien Compiler untereinander ein wenig auf Kompatiblität achten sollten.
Sehe ich nicht so. Beide Compiler sollten sich an ausgeschriebene Standards halten. Mit "Standards" meine ich selbstverständlich ISO, ANSI ... Was beide Compiler darüberhinaus implementieren, ist ihre Sache.
GPC und fpc verfolgen dabei leicht unterschiedliche Richtungen hinsichtlich der Compatibilität zu dritten Abietern, die sich darin niederschlägt, dass fpc Dinge implementiert hat, die eher an Turbo-Pascal oder Delphi erinnern lassen.
Darüber hinaus erlaubt auch TP keine gepackten Objekte, und auch der Standard-Entwurf "Object-Oriented Extensions to Pascal" (der m.W. recht nahe an dem Modell von Delphi sein soll) sagt:
: D.14 Packed Objects. : : Packed objects will not be provided. No good reason for allowing this could : be found. There was also no desire to extend a feature that many people think : should be deprecated.
Ich persönlich sehe das auch so (kein ersichtlicher Nutzen). Wenn man unbedingt einige Felder in einem Objekt packen will, kann man die ja in ein gepacktes Record stecken. Dagegen würde es einige zusätzliche Probleme schaffen (z.B. dass gepackte nicht von nicht-gepackten Objekten erben dürfen, was sowohl für den Compiler mehr Aufwand ist, als auch für den Benutzer Probleme schaffen kann) ...
Frank
On Fri, Mar 07, 2003 at 10:43:50AM +0100, Eike Lange wrote:
Ich denke, dass auch die freien Compiler untereinander ein wenig auf Kompatiblität achten sollten.
Sehe ich nicht so. Beide Compiler sollten sich an ausgeschriebene Standards halten. Mit "Standards" meine ich selbstverständlich ISO, ANSI ...
Uff, sprich die Leute von FPC mal auf die Standards an... Da wirst du sofort angemaunzt, "wir wollen keine 'neue Sprache' lernen!" ;-\
Die Kompatiblität zu den Standards und(!) zu BP ist es, was ich an GPC so mag, auch wenn mir da einiges fehlt.
Beide Compiler sind unterschiedlich, und das ist gut so.
Na gut. Aber "packed object" empfinde ich doch als sehr sinnvoll, und verstehe nicht, warum man das extra weglassen soll, wenn es schonmal implementiert war.
Andreas K. Foerster schrieb:
On Fri, Mar 07, 2003 at 10:43:50AM +0100, Eike Lange wrote:
Ich denke, dass auch die freien Compiler untereinander ein wenig auf Kompatiblität achten sollten.
Sehe ich nicht so. Beide Compiler sollten sich an ausgeschriebene Standards halten. Mit "Standards" meine ich selbstverständlich ISO, ANSI ...
Uff, sprich die Leute von FPC mal auf die Standards an... Da wirst du sofort angemaunzt, "wir wollen keine 'neue Sprache' lernen!" ;-\
Wie gesagt, in diesen beiden Fällen stimmt TP sogar mit den Standards überein. In dem Fall müsste man den FPC-Leuten antworten, sie sollen auch keine neue Sprache erfinden (zumindest dort, wo es keinen wesentlichen Vorteil bringt).
Beide Compiler sind unterschiedlich, und das ist gut so.
Na gut. Aber "packed object" empfinde ich doch als sehr sinnvoll,
Wofür denn, wenn ich fragen darf?
und verstehe nicht, warum man das extra weglassen soll, wenn es schonmal implementiert war.
War es nicht. Es wurde nur nicht ausdrücklich abgelehnt, weil ein Check fehlte (niemand hatte den Fall bisher bedacht). Aber funktioniert hat es nie richtig. Wie gesagt, die Fehler können recht subtil sein (wenn man von einem gepackten Typ einen ungepackten ableitet oder umgekehrt, dann Felder in bestimmter Form anordnet und polymorph darauf zugreift oder so ähnlich ...), aber um so schlimmer, würde ich sagen ...
Frank