Feature-Request: Deklaration von Objekten
Feature-Request: Deklaration von Objekten
Delphi ist in meinen Augen zu "pointer-orientiert", da es zu sehr in C++ denkt.
FreePascal sollte es ermöglichen auch "pascal-näher" zu programmieren:
Ein einfacher Zusatz würde das verbessern:
Es sollte nicht nur möglich sein Objektpointer zu deklarieren, sondern auch Objekte selbst.
Bei Prozedur-Beginn wird der Constructor aufgerufen und beim Ende der Destructor.
(Ich hätte dann auch weitere Ideen, um einen exzessiven Gebrauch von Threads zu reduzieren und paralleles Programmieren zu ermöglichen, sowie zu überwachen (über ein Objekt).)
FreePascal sollte es ermöglichen auch "pascal-näher" zu programmieren:
Ein einfacher Zusatz würde das verbessern:
Es sollte nicht nur möglich sein Objektpointer zu deklarieren, sondern auch Objekte selbst.
Bei Prozedur-Beginn wird der Constructor aufgerufen und beim Ende der Destructor.
(Ich hätte dann auch weitere Ideen, um einen exzessiven Gebrauch von Threads zu reduzieren und paralleles Programmieren zu ermöglichen, sowie zu überwachen (über ein Objekt).)
Zuletzt geändert von gerdi am Di 16. Feb 2010, 13:53, insgesamt 2-mal geändert.
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Featur-Request: Deklaration von Objekten
Objektpointer? Du redest wohl von dem TP "object" System/Konzept. Das ist in der Tat unschön. Das Klassensystem von Delphi ist da weitaus schöner.
Und nicht vergessen: ObjectPascal ist keine Scriptsprache
Und nicht vergessen: ObjectPascal ist keine Scriptsprache

Re: Featur-Request: Deklaration von Objekten
Nein, nein! Ich rede von Delphi. Die Deklaration sieht zwar, im Gegensatz zu TP, nach einer Objektdeklaration aus, ist im Grunde aber genau das selbe. Es ist nur ein kosmetischer Unterschied. Statt "->" darf man jetzt "." schreiben.Du redest wohl von dem TP "object" System/Konzept.
Es ist aber noch immer ein Pointer. Das Objekt wird immer noch im Programm-Körper erstellt (create) und im Programm-Körper freigegeben (Free).
Das ist nicht Pascal.
Im Körper werden keine Ressourcen alloziert. Die Resourcen stehen zur Verfügung. Der Compiler kümmert sich um die Ressourcen.
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Featur-Request: Deklaration von Objekten
Echt? Dann musst du von einem anderen Pascal reden als ich. Selbst ISO Pascal hat Pointer (http://moorecad.com/standardpascal/iso7185.html#6.4.4" onclick="window.open(this.href);return false; Pointer-types).gerdi hat geschrieben:Das ist nicht Pascal.
Im Körper werden keine Ressourcen alloziert. Die Resourcen stehen zur Verfügung. Der Compiler kümmert sich um die Ressourcen.
Und soetwas wie eine "Objektdeklaration" gibt es nicht. Man deklariert Klassen - Objekte sind dann erst deren Instanz!
Re: Featur-Request: Deklaration von Objekten
Interessantgerdi hat geschrieben: Das ist nicht Pascal.

Woher hast du denn deine Definition, was Pascal ist und was nicht?
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Feature-Request: Deklaration von Objekten
Kannst du das mit Beispiel untermauern ? Was du genau möchtest ?
MFG
Michael Springwald
Michael Springwald
Re: Feature-Request: Deklaration von Objekten
es gibt in delphi inzwischen records mit konstruktoren/destructoren und methoden..
das ist "sowas ähnliches" was du möchtest..
(mir wird dabei eher schlecht..)
http://delphi.about.com/od/adptips2006/ ... record.htm" onclick="window.open(this.href);return false;
siehe z.b.
"früher" gabs mal "= object" (anstelle von = class) ich weiß aber garnicht mehr wie das funktioniert...
alternativ wäre noch "managed" code (also delphi .net) samt gc usw. (da hast auch keine echten"pointer")
das ist "sowas ähnliches" was du möchtest..
(mir wird dabei eher schlecht..)
http://delphi.about.com/od/adptips2006/ ... record.htm" onclick="window.open(this.href);return false;
siehe z.b.
"früher" gabs mal "= object" (anstelle von = class) ich weiß aber garnicht mehr wie das funktioniert...
alternativ wäre noch "managed" code (also delphi .net) samt gc usw. (da hast auch keine echten"pointer")
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Feature-Request: Deklaration von Objekten
Heißt das das ein Record inzwischen so ähnlich wie eine Klasse Funktioniert ? D.H. dass die Create Methode immer aufgerufen wird ? Ich frage mich dann nur: Warum nicht gleich Klassen ? Die können doch viel mehr...
MFG
Michael Springwald
Michael Springwald
Wow!!! Kannte ich nicht!!!
Das kommt sehr nahe an meine Vorstellungen!!!Note: records are value types. Records are are copied on assignment, passed by value
Jetzt müsste man im Deklarationsbereich nur noch Parameter eingeben können, für den Constructor (in Abhängigkeit von den Parametern der Procedure)
Kann das Lazarus auch?
Wenn systematisch auf diese Weise programmiert wird braucht sich keine GC mehr um verwaiste Pointer zu kümmern und trotzdem muss nichts mit "Free" freigegeben werden!
Allerdings bräuchte es Anforderungen an das parallele Programmieren, um auf diese Weise eine variable Zahl von Objekten zu kreieren.
@Hitman
Selbstverständlich gibt es in Pascal Pointer, genau so wie es Goto gibt. Aber sie sind zu Gunsten strukturierterer Programmierung zu vermeiden.
Re: Feature-Request: Deklaration von Objekten
>D.H. dass die Create Methode immer aufgerufen wird ? Ich frage mich dann nur: Warum nicht gleich Klassen ? Die können doch viel mehr...
nein, das mit dem constructor ist (vermutlich der "abwärtskompatibilität") optional..
nein, das mit dem constructor ist (vermutlich der "abwärtskompatibilität") optional..
Re: Wow!!! Kannte ich nicht!!!
>Allerdings bräuchte es Anforderungen an das parallele Programmieren
was meinst ? threads?
>um auf diese Weise eine variable Zahl von Objekten zu kreieren.
was hat "parallele programmierung" mit "variable anzal von objekten" zu tun?
mir "array of" kannst problemlos varible anzahl von records erzeugen...
wenn sowas dann an eine procedure ", passed by value " übergibst, .. .. wirst verstehen warum man referenzen auf objekte macht...
was meinst ? threads?
>um auf diese Weise eine variable Zahl von Objekten zu kreieren.
was hat "parallele programmierung" mit "variable anzal von objekten" zu tun?
mir "array of" kannst problemlos varible anzahl von records erzeugen...
wenn sowas dann an eine procedure ", passed by value " übergibst, .. .. wirst verstehen warum man referenzen auf objekte macht...
Re: Feature-Request: Deklaration von Objekten
Dann müsste Setlength aber die Constructors (resp. Destructors) aufrufen. Ob das wohl implementiert ist?mir "array of" kannst problemlos varible anzahl von records erzeugen...
... und Parameter kann ich damit schon gar nicht mitteilen.
(Überhaupt hätte ich dazu gerne ein Verwaltungsobjekt. Aber es ist ja noch nicht Weihnachten!!!)
Genau!was meinst ? threads?
Oder besser einen Ersatz dafür:
statt bisher
statement1;
statement2;
statement3;
...
statementn;
möchte ich schreiben;
(statement1.1;statement1.2;statement1.3 ... statement1.k)
(statement2.1;statement2.2;statement2.3...statement2.n)
Das soll dann bedeuten:
Erst wird statement1.1 abgearbeitet, dann wird zum nächsten Block der selben Klammerebene gesprungen und statement2.1 abgearbeitet, dann wieder 1.2, dann 2.2 und so weiter.
(Wobei in einem Statement, wenn es ein Block ist, bei jedem Durchgang nur ein Unterstatement abgearbeitet wird. Der Block muss also mehrmals aufgerufen werden, um ganz abgearbeitet zu sein.)
Besonders in einer schleife soll:
for t:=1 to 10 do
(
statementA;
statementB;
statementC);
bedeuten, dass zuerst alle 10 statementA nacheinander abgearbeitet werden, dann alle 10 statement B usw.
Ich behaupte, dass damit die meisten Threads zu vermeiden wären und Threads nur noch eine Notlösung für ganz seltene Fälle wären.)
[Übrigens:
Dazu verwende ich das Zauberwort "var" des klassischen Pascal. Da werden auch nur Objektreferenzen mitgeteilt, ganz klassisch.]wenn sowas dann an eine procedure ", passed by value " übergibst, .. .. wirst verstehen warum man referenzen auf objekte macht...
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Feature-Request: Deklaration von Objekten
Ich frage noch einmal: Warum verwendest du keine Klassen ? Die sind genau für diesen Zweck gedacht...
MFG
Michael Springwald
Michael Springwald
Re: Feature-Request: Deklaration von Objekten
ich glaube dass er noch nie wirklich programmier hat...
Re: Feature-Request: Deklaration von Objekten
Ich bin Delphi-Programmierer der ersten Stunde (Delphi 1, davor Turbo-Pascal).ich glaube dass er noch nie wirklich programmier hat...
Heute programmiere ich seltener.
Selbstverständlich verwende ich Klassen.
Aber Delphi-Klassen können das eben NICHT!
Was deklariert wird ist letztlich ein Pointer (auch wenn die Scheibweise dies verbirgt) und der Programmierer muss explizit Create und Free aufrufen.
Das ist ein teurer Preis: Genaue Resourcenkontrolle durch den Programmierer. Dabei könnte das der Compiler viel besser.
Dabei wäre das gar nicht notwendig, wenn man sich nicht so sehr an C++ anlehnen würde.
@irlr
Du solltest dich mit Deiner Kritik zurückhalten, denn Du wusstest noch nicht einmal, dass schon im klassischen Pascal nicht alle Werte "by value" übergeben werden. "Var" scheint Dir völlig ungebkannt zu sein.