![]() |
Re: Vorteile von Delphi
Zitat:
Wenn Hubble der Ansicht ist, das Objekte auf dem Stack toll und schnell sind, kann ich ihm nicht widersprechen, aber ist nicht ein Zusammenhang mit diesem Speichermodell und den Exploits, die doch gerade versuchen, den Stack zu manipulieren? Aber grundsätzlich geht es hier hoffentlich nicht schon wieder um den C++ vs. Delphi Krieg, bzw. was man womit alles machen kann, oder nicht, sondern primär (jedenfalls für mich) um die Frage, ob eine Progammiersprache (inkl. IDE!!!) ein gutes oder ein sicheres Werkzeug sein soll. Leider geht beides (noch) nicht, denn Sicherheit geht immer auf Kosten der Freiheit (Gruss an unsere Innenminister, gell?). Ich meine, sowohl C++ als auch Delphi sind doch gleich gut. Was die eine (Templates, Mehrfachvererbung bla bla) hat, macht die andere durch eine bessere Struktur wieder wett. Früher oder später werden die sowieso entweder von D# (was immer das ist) o.ä. abgelöst bzw. so lange weiterentwickelt, bis der einzige Unterschied zwischen C++ und D++ das '{' vs. 'begin' ist. Wenn ich mir diverse Skriptkomponenten so anschaue, die es einem ermöglichen den Code wahlweise als C,Delphi oder Basic Quellcode anzeigen zu lassen, dann sehe ich, wohin die Reise gehen wird. Das Problem ist nicht die Sprache, sondern die Entwickler. Leider kann jeder mit den hübsch bunten Klicki-GUIs der IDE mal eben etwas zusammenfrickeln, was so aussieht, als ob es eine Anwendung wäre. An den Unis wird bedauerlicherweise das 'Handwerk' des Programmierens, also das reine Hacken, Suchen nach Algorithmen, Optimieren, Einhalten von Regeln und Disziplinen nicht mehr gelehrt, sondern irgendwelcher anderer Quark. Ich meine, nicht jeder ist zum Entwickeln geboren, aber ich muss doch auch als 'IT-Entscheider' wissen, ob und wann ein Problem NP-komplett ist, und wann nicht. Als IT-Fuzz, der über Millionen-Anschaffungen entscheidet, muss ich doch einschätzen können, ob der Preis für eine SW gerechtfertigt ist, oder nicht und ggf. dem Anbieter mal auf den Zahn fühlen. In meinen 25 Jahren Berufserfahrung hat mich ein IT-Manager genau 2x vorgemacht, das mein Angebot zu teuer ist, weil man das einfacher hinbekommt. Und das war im Ausland! Den Deutschen muss man nur Dick daher kommen und schon nehmen die einem Alles ab. Na, ja wieder mal OT. Zurück zum Thema: Hubble, hör mir auf mit der BDE, das war wirklich Nichts. Aber wer aufgepasst hat, hat schon vor 5 Jahren die Finger von gelassen (als nämlich ADO aufkam, was auch wieder nicht besonders ist). Dein Ansatz, für jedes Problem das richtige Werkzeug zu verwenden ist, glaube ich, das Richtig: Wer Webseiten mit Delphi abbildet, der ist fleissig, hat sie aber nicht mehr alle. Umgekehrt, wer einen performanten Algo in PHP abbildet auch. Abschließend noch ein Wort zu A.Koch: Der ist der COM/ADO-Pabst und damit kann er ruhig in Richtung Visual Studio. Das ist doch ein gutes Produkt, oder nicht? Die abschließende große Frage für mich ist die: Warum hat Borland Anders Heijlsberg zu MS ziehen lassen? Weil MS zu viel geboten hat? Nee, da war ein Deal mit im Spiel, der beide Seiten befriedigen muss: MS hat eine .NET Klassenbibliothek alleine nicht hinbekommen und eine gute IDE auch nicht. Borland dagegen sah wegen .NET und C# die Felle davon schwimmen. Früher waren die Beiden spinnefeind und heute fragt man sich, wann sie denn Kinder kriegen. Dämmerts? Ich prophezeie ein D# (ist ja auch schon da), das 100% kompatibel zum C# sein wird: MS und Borland teilen sich die Welt auf und jagen Java zum Teufel, schätze ich. Vermutlich werden wir uns per Options-Dialog unsere eigenen Keywords 'begin','{' etc. zusammenklicken können, so das nun wirklich Keiner mehr meckern kann ;-) In diesem Sinne: An die Arbeit! :coder2: |
Re: Vorteile von Delphi
Zitat:
BTW: Und kennst Du Intraweb? |
Re: Vorteile von Delphi
Zitat:
Hier nochmal im Klartext und für alle: C: void IrgendeineFunktion() { CMeinObjektTyp A( "irgendein Text"); EinFunktionsaufrufmitexception(); } Es ist nicht möglich diesen übersichtlichen Einzeiler auch in Delhpi zu schreiben. In Delhpi brauche ich alleine dafür var A:TMeinObjektTyp ; ... A:=TMeinObjektTyp.Create(..); EinFunktionsaufrufmitexception(); freeannil(A); Das sind Minimum 3 Zeilen. Absolutes minimum und falls ich ignoriere, daß die Instanz A in Delphi nicht freigeben wird und in C wird dies automatisch passiert. @alzaimar ich nehme an du meinst ein garbage collector. Das hat absolut nix damit zu tun. Es gibt keine schnelle Möglichkeit in Delhi so ein Objekt zu erzeugen. Das Ding landet in Delhpi immer auf dem Heap. Und wenn da ein kleiner Fehler passiert weil immer wieder ein Objekt nicht freigegeben wird ist den Speicher bald voll. Natürlich würde ich auf den Stack keine großen Objekte ablegen welche für die ganze Laufzeit des Programms zur Verfürgung stehen müssen. Aber sehr oft brauch man diese Objekte eben nur innerhalb dieser Funktion. Wer diesen Punkt nicht zumindest als sehr ungünstig in Delhpi anerkennt ist für mich diskussionsfäig. Also braucht man in Delphi zwingend einen try except block, der alle Eventualitäten abhandelt. In C ist dies in dieser Form nicht notwendig. Ich habe im Moment das Problem, das bei einigen hundert Buttons in meinem Projekt ein Lock (wie in meinem Beipiel auf Seite 4 beschieben) gemacht werden müßte. In C währe dies jemeils ein Einzeiler in der Ersten Zeile jedes ClickEvents. In Delphi sind dies jeweils mindestens 7 Zeilen an 3 Stellen des Events. Ich weiß das hätte man voher besser coden müssen aber ich hab das Projekt eben so übernommen. Zitat:
Zitat:
Ist eventuell Geschmackssache aber in C hab ich alle Möglichkeiten damit in Delhpi nicht. Sonst versuche ich auch Pointer so wenig wie möglich zu nutzen. Zitat:
Zitat:
Aber ich kann eben auch wie oben beschrieben ein Objekt als Einzeiler erzeugen nutzen und danach Ignorieren weil er sich am Ende der Funktion unter allen Umständen selber löscht. Zitat:
Wenn das ne kleine Hübesche Klasse ist dann schreibe ich eben lieber den Einzeiler direkt in die Deklaration und nicht erst 700 Zeilen später. Außderdem kann ich kleine Klassen (z.B. Miniparser) direkt über der Funktion als 10 Zeiler im .cpp File implementieren. In Delphi lass ich dass und schreib mir lieber ein ungekapselte Funktion die zwar das gleiche kann, aber unangenehmer ist im Handling. Beispiel mitten im cpp file : .... class CZeilenParser { public: CZeilenParser(char* Text){ /*machwasmittext;*/} int gibtDurchschitt(){return (Max-Min)/2;} private: int Min,Max; }; void NeKlasse::neFunktion(char* geparsterText) { CZeilenParser P(geparsterText); P.gibtDurchschitt(); ... Fertig: Natürlich geht in Delhpi auch irgendwie. Ist aber umständlicher kostet mehr Zeit und Übersicht. Natürlich nur für den Fall das diese Klasse ausschließlich in dieser Funktion verwendet wird. Ein mehrfach verwendetes Objekt würde ich nie mitten in den C++ Code hocken. Zitat:
Zitat:
z.B. eine Map mit 456.456 Nachnamen aus Holland. Die haben alle eine Nummer. Und ich möchte diese Nummer mit Angabe des Namens herausfinden (ohne Datenbank) C: map<string,int>Nachnamen; // Die Map Nachnamen["Van Deutz"]=154568; // Einfügen der Namen Nachnamen["Van Irgendwer"]=1568; // und noch 456.454 andere Van's .... //Jetzt mach ich einfach int NrvonD=Nachnamen["Van Deutz"]; // Und schon hab ich mit der Schnelligktiet von Ln(n) Vergleichen die Nummer von "Van Deutz"; Mir ist keine auch nur annähernd so elegante und schnelle Lösung in Delhpi bekannt. Natürlich kann ich anstatt des Strings auch ein beliebiges anderes Objekt verwenden. Zitat:
Zitat:
Und egal was passiert ich werden die nächste Zeit noch Delhpi nutzen müssen. Hubble :) |
Re: Vorteile von Delphi
Zitat:
Da nehm ich lieber den soliden Golf 1 und komm damit fast überall hin. Und der rasende allround-Jeep als Programmiersparache ist noch nicht erfunden worden. Hubble (wenn Methaphern mir in den Kram passen find ich sie klasse) |
Re: Vorteile von Delphi
Zitat:
Für mich haben daher Objekte auf dem Stack nur einen echten Vorteil: Ich brauche mich nicht um sie zu kümmern. Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
Das einzige, was bleibt, ist, daß man die Instanz eben nicht auf dem Stack haben kann, aber von der Übersichtlichkeit her macht dieses Beispiel kaum einen Unterschied zu deinem. Plus: Hier ist die Klasse tatsächlich nur innerhalb dieser einen Methode zu sehen, bei dir wäre die Klasse auch für alle nachfolgenden Klassen als Typ sichtbar.
begin TSomeType.SomeMethod(someparams: TSomeOtherType): TSomeResult;
type TLocalClass = class public blubb(); end; var LocalInstance: TLocalClass; begin LocalInstance := TLocalClass.Create(); FreeAndNil(LocalInstance); end; Zitat:
Zitat:
Zitat:
Prinzipiell gebe ich dir vollkommen Recht, die STL ist eine enorme Erleichterung, wenn man sich mal eben 'ne Datenstruktur basteln will, die vollständig typsicher ist (und zwar garantiert typsicher, schon zur compile-time). |
Re: Vorteile von Delphi
HiGi,
und einen wesentliche Punkt habt Ihr in Euren Erklärungen vergessen, der nicht unwesentlich für den späteren Einsatz der Programme ist. Compilierte Delphi-Programme (wenn nicht .net, oder XML Framework vwerwendet) bringen ihren eigenen vollständigen Kernel mit, dass heisst, sie laufen im wesentlichen unabhängig von allen anderen Betriebssystem- und Programme-Ressourcen deines Computers. Das ist aus zweierlei Hinsicht wichtig. 1. Du bist nicht der erfahrenste Programmierer und kannst mit Deinen Programmen den Lauf anderer Programme auf Deinen Computer stören. 2. Nehme an, auf Du läßt Deine Programme in einem System laufen, auf dem Zertifizierte Software betrieben wird, die in der Medizin oder Bankwesen. Haben Deine Programme keinen eigenen Kernel, kommst Du in Teufels Küche, weil Du die Zulassungsbedingungen der Zertifizierten Programme verletzt. --> Also, sei unabhängig, lasse mögliche Fehler in Deinem eigenen Käfig. Traurig ist nur, daß sich Delphi mit seinen Entwicklungen von diesem Prinzip lösen wird, in dem es mehr auf FrameWorks, .NET und XML setzt. Hier hätte Delphi sonst eine eigene Sparte und Berechtigung, die von keiner anderen Sprache so schnell streitig gemacht werden kann. Einen fleißigen Weihnachtsmann E. B. |
Re: Vorteile von Delphi
Zitat:
Zitat:
Zitat:
|
Re: Vorteile von Delphi
Zitat:
|
Re: Vorteile von Delphi
Zitat:
Das ist das Beste, was ich in diesem Fred lese. Zitat:
Zitat:
"Programme mit eigenem Kernel"... *sichgarnichtmehreinkrieg* |
Re: Vorteile von Delphi
Zitat:
Hier mal eine vereinfachte TAutoDelete Klasse.
Delphi-Quellcode:
type
IAutoDelete = interface function This: Pointer; end; TAutoDelete = class(TInterfacedObject, IAutoDelete) private FObject: TObject; public constructor Create(AObject: TObject); destructor Destroy; override; function This: Pointer; end; { TAutoDelete } constructor TAutoDelete.Create(AObject: TObject); begin inherited Create; FObject := AObject; end; destructor TAutoDelete.Destroy; begin FObject.Free; inherited Destroy; end; function TAutoDelete.This: Pointer; begin Result := FObject; end; function NewOAD(AObject: TObject): IAutoDelete; begin Result := TAutoDelete.Create(AObject); end; Zitat:
Delphi-Quellcode:
Und die AutoDelete-Klasse muss man nur einmal schreiben.
procedure IrgendeineFunktion;
begin NewOAD( TMeinObjectTyp.Create('irgendein Text') ); EinFunktionsaufrufmitexception; end; Will man mit noch Methoden aufrufen oder Eigenschaften abfragen, so würde das so aussehen:
Delphi-Quellcode:
var
A: TMeinObjektTyp; begin A := NewOAD( TMeinObjektTyp.Create('irgendein Text') ).This; A.MachWas; end; Zitat:
Zitat:
Delphi-Quellcode:
PMyObject = ^TMyObject;
TMyObject = object private m_field: Integer; public constructor Init; destructor Done; end; Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Delphi/Pascal nutzt hingegen das Unit-Konzept. Alles was im implementation-Abschnitt steht, kann jederzeit geändert werden, ohne dass die von dieser Unit abhängigen Units neu kompiliert werden müssen. Interface entspricht also den .h-Dateien und Implementation den .cpp Dateien, mit dem unterschied, dass Units immer "vorkompiliert" sind. Zitat:
Zitat:
Natürlich nur für den Fall das diese Klasse ausschließlich in dieser Funktion verwendet wird. Ein mehrfach verwendetes Objekt würde ich nie mitten in den C++ Code hocken. Zitat:
Zitat:
Zitat:
Und noch ein "Wort" zum "Klicki bunti - fertig ist die Anwendung". Das ein Chef meint, die Anwendung wäre fertig, wenn man schon Screenshots sieht, halte ich für ein gerücht. Es ist eher der Fall, dass man gelobt wird, weil man mit minimalen Aufwand/Zeit (=Kosten) eine präsentierfähige Oberfläche hat. Und wenn man dann das Rennen verliehrt, hat man nicht zig Manntage (bzw. Frautage) investiert. Das trennen zwischen Oberfläche und Code ist dann ein anderes Thema, das vom jeweiligen Programmierer abhängt. Ich fange z.B. immer erst mit der Datenstruktur an, habe aber die Oberfläche im Hinterköpfchen damit ich die notwendigen Events bereits einbaue. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz