Frust mit Delphi



  • Hallo,

    Ich muss mich im Forum einfach mal über Delphi auskotzen!

    Ich hab vor ca. zwei Jahren meine Ausbildung zum FIler begonnen. Mein Chef findet Delphi bzw. Pascal als die beste Programmiersprache überhaupt. Auch von anderen haben ich schon anderen viel positives über die auch so hervoragende "RAD" -Entwicklungsumgebung gehört.

    Privat kann aber auch andere Programmiersprachen angefangen von Java über C und C++ bis hinzu Smalltalk und LISP.

    Meine bisherigen erfahrungen mit Delphi sind durchweg negtiv.

    Die Sprache bietet kaum abstraktionsmöglichkeiten an.

    Das hochgelobte VCL ist einfach nur Primitiv und eignet sich nur für absolute Standardaufgaben. Alles andere artet immer in zeilenweise Code aus.
    Verglichen mit kostenlosen OpenSource Frameworks wie z.B.: Qt ist das alles ein Witz.

    Je nach Platform fangen Strings mal mit 0 (Android) oder mit 1 an.

    Sowieso artet fast alles was nur ein bischen Komplex ist in zeilenweisen Code aus.

    Auf der GUI-Seite kann Dialoge Pixelgenau zusammenklicken.
    Der einzige Layoutmanager ist Align, welcher nach Links, Rechts, Oben, Unten und Zentriert Positioniert.

    Zu allem überflüss sind die Entwicklungstools (IDE, Compiler, etc) verbuggt bis zum Schluss.
    Ständige Abstürze der IDE, Compilerfehler, Hat man ein Projekt mit mehr als 1000 Zeilen, so wird stehts immer als Rot markiert, usw..

    Dafür zahlt man einen Betrag, welcher weit über meinem Monatseinkommen liegt.

    Statt wöchentliche SPAM-Mails (manchmal auch mehr) zu versenden, sollte Embargo (oder wie der Laden sich auch immer nennt) lieber mal in QM investieren.

    Warum tut man sich sowas eigentlich an? 😕 😡
    Mach ich was Falsch?
    Oder sind Delphi-Fans größtenteils ältere Herrn welche nichts neues mehr lehrnen wollen und desshalb auf das setzen was sie schon immer gemacht haben. Angefangen bei Turbopascal.

    MfG



  • Gast0815 schrieb:

    Oder sind Delphi-Fans größtenteils ältere Herrn welche nichts neues mehr lehrnen wollen und desshalb auf das setzen was sie schon immer gemacht haben.

    Das mag durchaus sein 😉 Ich hab vor über 15 Jahren mit Delphi angefangen und fands jahrelang toll. Mach aber schon seit fast 10 Jahren nichts mehr damit. Das war damals auch ziemlich gut. Die Sprache würde mir jetzt zwar nicht mehr gefallen, damals g 😋 abs nicht mal Templates, aber die Sprache war viel zugänglicher als C++ und ansonsten gabs als Alternative für Windows Entwicklung nur Visual Basic, und das war noch viel schlechter. Und die VCL war damals auch sehr mächtig. Bin mir nicht sicher, obs zur VCL gehört, aber die ganze Datenbank und Netzwerkkomponenten usw., die dabei waren, waren auch ziemlich gut und einfach zu benutzen. Mit Delphi konnten viele engagierte Laien zu sehr brauchbaren Ergebnissen auf ihren jeweiligen Fachgebieten kommen. Viel einfacher und schneller, als durchschnittliche C++ Entwickler, die bei Datenbanken oder Netzwerk oder etwas fortschrittenen GUI Features damals noch einiges zu tun gehabt hätten... Mittlerweile sehe ich aber nicht wirklich einen Grund, an Delphi festzuhalten. Als .NET rausgekommen ist, fand ich das schon interessant, und mit .NET 2.0 bin ich dann endgültig auf C# umgestiegen, und mittlerweile sowieso auf C++.
    Ich versteh aber nicht, was du mit kaum Abstraktionsmöglichkeiten meinst? Es sollten alle üblichen Abstraktionsmöglichkeiten wie in allen anderen OOP Sprachen vorhanden sein.



  • Gast0815 schrieb:

    Die Sprache bietet kaum abstraktionsmöglichkeiten an.

    Das ist mir zu abstrakt. Was fehlt dir?

    Gast0815 schrieb:

    Das hochgelobte VCL ist einfach nur Primitiv und eignet sich nur für absolute Standardaufgaben. Alles andere artet immer in zeilenweise Code aus.
    Verglichen mit kostenlosen OpenSource Frameworks wie z.B.: Qt ist das alles ein Witz.

    Auch hier: mehr Substanz bitte.

    Gast0815 schrieb:

    Je nach Platform fangen Strings mal mit 0 (Android) oder mit 1 an.

    Das ist in der Tat völlig bescheuert. Ebenso die Sache mit der Speicherverwaltung; auf den Mobilplattformen wird alles referenzgezählt, auf dem Desktop nur Interfaces.

    Gast0815 schrieb:

    Sowieso artet fast alles was nur ein bischen Komplex ist in zeilenweisen Code aus.

    Das ist den meisten komplexen Dingen eigen, daß sie nicht einfach sind.

    Gast0815 schrieb:

    Der einzige Layoutmanager ist Align, welcher nach Links, Rechts, Oben, Unten und Zentriert Positioniert.

    Dann hast du wohl das Flow-Panel, die Constraints, die Anchors und ein paar andere nützliche Dinge noch nicht gefunden.

    Gast0815 schrieb:

    Zu allem überflüss sind die Entwicklungstools (IDE, Compiler, etc) verbuggt bis zum Schluss.
    Ständige Abstürze der IDE, Compilerfehler, Hat man ein Projekt mit mehr als 1000 Zeilen, so wird stehts immer als Rot markiert, usw..

    Das deckt sich ungefähr mit meiner Erfahrung.

    Gast0815 schrieb:

    Embargo

    Hallo Xin.

    Gast0815 schrieb:

    lieber mal in QM investieren.

    Quantenmechanik?

    Gast0815 schrieb:

    Mach ich was Falsch?

    Ja.



  • so schlecht finde ich Delphi jetzt nicht.
    Gerade Pascal ist eine gut durchdachte Sprache, ohne die ganzen Stolpersteine von C.
    So gesehen ideal zum Programmieren lernen.

    Ein Produkt bei uns in der Arbeit ist in Delphi geschrieben, da mache ich ab und zu Anpassungen. Ich arbeite eigentlich ganz gern mit Delphi, man kommt recht schnell zu Ergebnissen. Auch gibts viele (Open Source) Libs.



  • audacia schrieb:

    Gast0815 schrieb:

    Die Sprache bietet kaum abstraktionsmöglichkeiten an.

    Das ist mir zu abstrakt. Was fehlt dir?

    Templates
    Macros

    audacia schrieb:

    Gast0815 schrieb:

    Das hochgelobte VCL ist einfach nur Primitiv und eignet sich nur für absolute Standardaufgaben. Alles andere artet immer in zeilenweise Code aus.
    Verglichen mit kostenlosen OpenSource Frameworks wie z.B.: Qt ist das alles ein Witz.

    Auch hier: mehr Substanz bitte.

    Das Fängt schon bei der Datenbindung an.
    Man kann ganz einfach ein TDBGrid mit einem TDataSource verbinden. (Wobei es hier schon mal Probleme gab, wenn die Datenbank nicht erreichbar ist).
    Was macht man aber, wenn man andere Datenquellen als Ziel hat.
    Man platziert ein TGrid und setzt die Daten manuell. Wo wir wieder beim Thema abstraktion sind.

    audacia schrieb:

    Gast0815 schrieb:

    Je nach Platform fangen Strings mal mit 0 (Android) oder mit 1 an.

    Das ist in der Tat völlig bescheuert. Ebenso die Sache mit der Speicherverwaltung; auf den Mobilplattformen wird alles referenzgezählt, auf dem Desktop nur Interfaces.

    Ja genau. Jede Klasse wird auf dem Heap allokiert. Nun hat der Programmierer die Aufgabe den Speicher wieder manuell zu verwalten. (Wobei es bei Strings, dynamischen Arrays und Interfaces auf einmal auch automatisch geht). Das ganze führt dann ziehmlich schnell zu einer try - finally - Orgie.
    GC, Refcounting, RAII? Fehlanzeige.
    Ich meine, wir reden hier von einem Produkt, welches sich "Rapid Application Development" nennt. Und dann muss man sich mit solchen Popeldetails auseinander setzen. Immer und immer wieder.

    audacia schrieb:

    Gast0815 schrieb:

    Sowieso artet fast alles was nur ein bischen Komplex ist in zeilenweisen Code aus.

    Das ist den meisten komplexen Dingen eigen, daß sie nicht einfach sind.

    Is klar. Aber in Delphi ist der Code-Noise einfach höher.

    audacia schrieb:

    Gast0815 schrieb:

    Der einzige Layoutmanager ist Align, welcher nach Links, Rechts, Oben, Unten und Zentriert Positioniert.

    Dann hast du wohl das Flow-Panel, die Constraints, die Anchors und ein paar andere nützliche Dinge noch nicht gefunden.

    Flow-Panel & Co war für mich unbenutzbar. Konnte mir auch keiner erklären, wie die richtig gehen.

    [quote="audacia"]

    Gast0815 schrieb:

    Zu allem überflüss sind die Entwicklungstools (IDE, Compiler, etc) verbuggt bis zum Schluss.
    Ständige Abstürze der IDE, Compilerfehler, Hat man ein Projekt mit mehr als 1000 Zeilen, so wird stehts immer als Rot markiert, usw..
    Das deckt sich ungefähr mit meiner Erfahrung.

    Für ein Produkt, welches mal locker 4000€ kostet, sollte das aber besser hinbekommen.

    audacia schrieb:

    Gast0815 schrieb:

    lieber mal in QM investieren.

    Quantenmechanik?

    [url]https://de.wikipedia.org/wiki/Qualitätsmanagement [/url]

    audacia schrieb:

    Gast0815 schrieb:

    Mach ich was Falsch?

    Ja.

    Bitte belehre mich. Lass mich nicht dumm sterben 😉



  • Um zu wissen, was du im Detail falsch machst, müßtest du deine Probleme genauer und vor allem lösungsorientierter beschreiben; aus einem Rant ist sowas immer schwer rauszulesen. Aber Folgendes kann ich dir sagen:

    Delphi ist nicht C++. Manche Dinge sind halt anders, und das ist nicht notwendig schlechter, nur weil du vielleicht ein älterer Herr bist, der nichts neues mehr lernen will und deshalb auf das setzt, was er schon immer gemacht hat 🙂 Es gibt zwar keine direkte Entsprechung zu RAII in C++, so daß man sehr oft try / finally benutzt; aber durch die Klasseninitialisierungs- und Destruktorsemantik ist es in Delphi trotzdem sehr leicht, Konstruktoren exceptionsicher zu machen. Im Vergleich zu Sprachen mit C-artiger Syntax wirkt Delphi sehr verbose, aber das kommt hauptsächlich durch begin / end und allgemein die Neigung zu ausgeschriebenen Operatoren und ist mithin Gewohnheitsfrage; wenn du das für unbestreitbar nachteilig hältst, solltest du vielleicht lieber APL programmieren als C++. Und daß es Templates und Makros nicht gibt, ist ein Feature, übrigens genau wie in C# oder Java; falls du sie noch nicht entdeckt hast, kannst du ja mal nachschlagen, was Generics sind.

    Mit TDataSource und den TDB... -Komponenten hatte ich noch nie das Vergnügen. Wenn du mit denen ein konkretes Problem hast, dann frag doch hier im C++Builder-Unterforum oder in einem Delphiforum deiner Wahl nach einer möglichst eleganten Lösung. Es gibt vermutlich mehr als eine Möglichkeit, um ein Grid halbautomatisch mit Daten aus anderen Quellen zu verbinden. Seit nunmehr einigen Jahren gibt es die sogenannten Live-Bindings. Kurzes Googlen brachte mich außerdem zu DSharp, was wohl etwas größere Ähnlichkeit zum Databinding bei WPF hat. Aber ich kann dir da keine Empfehlung geben, ich habe mit beiden noch nicht gearbeitet.

    Kurzum, wenn du willens bist, dich konstruktiv mit der Materie auseinanderzusetzen, stellst du meistens fest, daß auch schon andere Leute deine Probleme hatten, und daß es meistens gute Lösungen gibt. Das soll nicht heißen, daß Delphi keine grundsätzlichen Probleme hätte, die einen sehr ausführlichen Rant rechtfertigen würden; von denen gibt es in der Tat genug, u.a. die Qualitäts- und Konsistenzmängel, die du ja auch erwähnst. Aber die meisten deiner Problemchen klingen mir doch nach "es ist anders als C++!!1".



  • Aus dem Eingangspost sollte eigentlich herausgehen, das ich mehr Sprachen als nur C++11!!! oder Sprachen aus der C-Familie behersche.
    Die Tatsache, dass Delphi anders ist, ist also nicht das Problem.

    Um es kurz zu machen die Programiertools sind mir zu asymetrisch und primitv.
    Aus der Atrativitätsforschung weis man, je symetrische desto schöner.

    Die qualtitätsmängel geben ihr übriges.

    Das ganze hat nichts mit RAD zu tun, sondern bestenfalls mit einem digitalen Peitschhieb.
    Durch ständige Abstürze und Bugs steigt halt der Stresspegel.
    So weis Programmierer wo sein Platz ist.



  • Dann mach halt deine ausbildung fertig und wechsle danach.
    Delphi ist nur ein werkzeug, aber auch mit c++ oder qt musste ich mich schon genug ärgern. Nur so als warnung.

    Im job kann man leider nicht immer das machen was man will, in der freizeit aber sehr wohl, also nutze diese um dich mit anderen sprachen vertraut zu machen und such dir nach der ausbildung dann etwas, das dir mehr spaß macht.

    Die delphi kritik verstehe ich teilweise, allerdings empfinde ich delphi trotzdem als ganz ok. Gibt schlimmeres 😉



  • ich hab vor jahren mit delphi 2.0 entwickelt -es war imho fantastisch. ok, aber damals war noch borland dahinter. seit einigen jahren benutze ich das kostenlose lazarus/freepascal gespann was zu 99,9% mit delphi kompatibel ist (praktisch ein klon) und es gefällt mir besser den je. ich habe damit schon mehrere projekte abgeschlossen u.a. ein komplexes programm zur medienverwaltung und ein simulationsprogeamm für relaischaltungen. pascal und die vcl sind ganz gut wenn man sich auskennt und weiss wie das ganze intern funktioniert. auf den ersten blick erschliesst sich das einem nicht immer. wenn man natürlich maximale flexibilität wie in c++ sucht, ist man an der falschen adresse. kompfort+einfachheit schliesst das leider aus. ich kann kein system anbieten, das so flexibel wie c++ ist und gleichzeitig intuitiv bedient werden kann.

    p.s.
    ich programmiere auch in c,c++, vba uvm. aber pascal gefällt mir insgesamt einfach am besten. wahrscheinlich wegen der ausdrucksstärke und dem gut lesbaren quellcode.



  • Wie sieht es mit der Geschwindigkeit Lazarus/Freepascal vs C++ aus? Ich lade mir das mal gerade runter und will man reinschnuppern.



  • k.a. für normale sachen wahrscheinlich relativ gleischnell. wenn es aber um spezielle mathesachen geht hat c++/boost villeicht die besseren/scnhelleren libs. aber das wäre auch kein problem, da du c und c++ libs ohne probleme statisch oder dynamisch an lazarus programme linken und deren funktionen aus pascal aufrufen kannst. ich hab selbst mal ne c lib zur generierung von bindsignaturen geschrieben die ich dann aus pascal aus aufgerufen habe weil mir für diesen zweck pascal zu sperrig war.



  • Danke für die Info. Ich habe gestern mal kurz Lazarus angetestet und gemerkt dass ich keine Lust mehr habe wieder eine neue Sprache zu lernen. Ich bleibe bei C++ und Qt.


Log in to reply