![]() |
Re: Vorteile von Delphi
Zitat:
MfG Cruso |
Re: Vorteile von Delphi
Zitat:
Legales C ist AFAIK immer auch legales C++, was umgekehrt nicht der Fall ist. |
Re: Vorteile von Delphi
Zitat:
Folgender C-Code lässt sich als C++ Code nicht kompilieren:
Code:
new ist ein Schlüsselwort in C++, aber nicht in C.
int new=0;
|
Re: Vorteile von Delphi
Zitat:
Antwort per PN, da das in diesem Fred offtopic ist. |
Re: Vorteile von Delphi
Zitat:
Zitat:
Daher an alle C-Programmierer: Informiert euch vorher über die C++-Schlüsselwörter, und versucht die bitte so weit wie möglich zu verhindern. Einfach, damit die eventuelle Kompatiblität zu C++ bestehen bleibt :) Zitat:
Es kann nämlich auch gelegentlich kommen, dass man Fehler sucht, und die nicht findet, und später erfährt, dass das an Groß/Kleinschreibungs-Problemen liegt. Sowas hatte ich in C++ mal. Extrem nervig :( Ich bin außerdem auch froh, wenn ich mir die Schreibweise von bestehenden Methoden/Properties/Funktionen/Konstanten etc. selbst aussuchen kann :) Auch wenn meine Schreibweise sich kaum in einem Projekt ändert, aber sie unterscheidet sich gelegentlich von der Borland-Schreibweise... Übrigens, lieg ich richtig, dass C++ direkt keine Properties unterstützt (außer vielleicht speziell bei Borland-C++ mit __property [oder wie ging das noch?])? Nur so als Zwischenfrage nebenbei, ich glaube mich nämlich entfernt an sowas erinnern zu können... |
Re: Vorteile von Delphi
![]() alt aber sicherlich tw. immer noch lesenswert; :-) thomas |
Re: Vorteile von Delphi
Zitat:
Das ein leeres Formular in Delphi bereits 300-400 KB Exe-Dateien erzeugt liegt darin, dass der Compiler ja nicht ahnen kann, dass mann keine weiteren Features braucht. Und wenn das Objekt TForm, TControl, TWinControl, TApplication und die halbe Classes Unit benötigt werden, kann der Compiler sie nicht entfernen. Natürlich braucht man da nicht alles, aber if-Anweisungen kann der Compiler halt nicht zur Kompilierzeit auswerten, wenn sie nicht gerade aus einem konstanten Ausdruck bestehen. Deswegen kommt eben auch alles mit in die Exe, das zur Laufzeit nicht ausgeführt wird, aber zur Kompilierzeit "referenziert/aufgerufen" wird. Und wenn wir schon bei Dateigrößen sind. Schon mal ein VC++ Programm statisch gegen die MSVCRT und MFC gelinkt? Da werden dir die 400 KB von Delphi wie ein Segen vorkommen. |
Re: Vorteile von Delphi
Wo kann ich eine Featureliste für Delphi 2006 sehen?
Wird es statische Klassenvariablen geben bzw. gibt es diese schon? Operatorüberladung auch für nativen Code oder nur wieder für managed OP? |
Re: Vorteile von Delphi
Schöne Diskussion. Werde mich darum mal einklinken und ein paar neue Punkte liefern.
Ich bin seit ca. 3-4 Jahren gezwungen teilweise in Delphi 6.0 zu coden. Komme von Visual C++6.0 (ja ich weiß da gibts auch einige himmelschreiende Probleme und Haken) aber aus meiner Sicht ist Delphi eine Katastrophe. Was ich in den letzten Jahren lernen mußte: In Delphi wird man zum schlampigen Programmieren verleitet. Bevor jemand in Delphi eine neue Klasse erzeugt macht er sich lieber 3 globale Variablen. Und mit so einem alten Müll muß ich mich rumschlagen und schwupp sind's 100 globale Variablen. Alles wird unübersichtlich. Und die VCL ist nur für procedurale Vorgehensweise aus dem letzten Jahrhundert geeignet. Beispiel: Ich schreibe mir eine kleine Hilfsklasse welche Zugriffe sperrt. C:
Delphi-Quellcode:
das gleiche in Delphi:
class BLABLA
{ private: BLABLA(){sperrewas();} ~BLABLA(){gibwiederFrei();} ... }; // jetzt kann ich an jeder Stelle einfach eine Instanz erzeugen int neFunktion() { BLABLA bla(); .. } // eine Zeile und alles ist gut. Die Klasse wird erzeugt, macht alles und // am Ende der Funktion is se wieder wech
Delphi-Quellcode:
Damit hätten wir 7 unübersichtliche Zeilen in Delphi und 1 Zeile in C++.
type
BLABLA = class ... // Soweit OK aber dann:In delphi muß ich erst mal var schreiben dann die Instanz erzeugen, // initialiseiren dann wieder löschen und zu allem Überfluß hockt das // blöde Teil nicht auf dem schnellen Stack sondern auf dem lahmen heap procedure neFunktionInDelphi(); var bla:BLABLA; begin bla:=BLABLA.create; ... FreeAndNil(bla); end; // das wars? Nein denn was is wenn ne Exception ausgelöst wird also procedure neFunktionindelphi(); var bla:BLABLA; begin try bla:=BLABLA.create; ... except finally FreeAndNil(bla); end; end; Und falls die Exception weiter geworfen werden muß, dann kommen noch ein paar Zeilen dazu. In Delphi muß man einfach in jeder Routine Exceptions fangen, falls auch nur ein Objekt benutzt wird, und diese Exception weiterschmeißen. Dies ist das krasseste Problem und meine persönliches Hauptproblem. Hat jemand mal versucht mit der VCL in verschiedenen Threads zu arbeiten? Is nich einfach, wenns überhaupt geht. Man muß immer drauf achten zyklisch ein ProzessMessages auszuführen sonst steht das ganze Programm 100 Jahre falls eine VCL Event nicht beendet wird. Wird dann ein zweites ausgelöst, dann ist das erste Event unterbrochen bis das zweite fertig ist. Also: Man drückt auf Button 1 und bevor dieser fertig ist auf Button 2. Grande Problema in VCL. Natürlich gibt es da einen Workaround, ist aber sehr umständlich und man muß fast alles umstellen. Es gibt keine STL:(OK wurde schon erwähnt aber ist sehr wichtig für mich) Dieses geniale Tool um mal eben eine Map,Liste,Vektor oder seit einigen Jahren auch einen Hash Table zu erzeugen steht in Dephi einfach nicht zur Verfügung. Habt Ihr schon mal mit Komponenten in Delphi geschafft. Is echt supi. Alles schnell und schön. Aber wehe es gibt ein Update und die Entwickler müssen mit verschiedenen Versionen arbeiten. Ist schlicht nicht möglich. Dazu kommt eine Projektverwaltung in Delphi 6 die mich zum heulen bringt. Des weiteren folgen noch so undurchsichtige Sachen wie end mit Punkt mit Stichpunkt oder ohne was. Je nachdem obs gerade am Ende der Seite oder vor einem else Zweig auftaucht. Oder die Sache mit den Pointern. Jeder der auch nur einmal in Delphi mit Pointern umgehen mußte und den Vergleich zu C/C++ kennt verflucht dieses im Nachhinein in Pascal eingeführete Notkonstrukt. Nartürlich hats in Delphi auch aus meiner Sicht gute Dinge. z.B. Ein = Zeichen für den Vergleich (vermeidet viele Fehler), ein Case Statement ohne break. Die ganze Interface Geschichte ist in Delphi gut gelöst während man sich in C mit leicht in den Headern verirrt. Mein Fazit welches ich nach mehreren Jahren gezogen habe. Für einen kleinen Dreizeiler mit eine paar Dialogen ist Delphi genial einfach. Um aber auch nur ansatzweise komplexe Stukturen zu erzeugen, eventuell auch noch mit mehreren Leuten, ist das das schlechteste Mittel der Wahl. Hubble P.S. Sollte nun jemand glauben, daß ich mich zum Delhpihasser emtwickelt habe, hat er Recht. |
Re: Vorteile von Delphi
Zitat:
Zitat:
Zitat:
Außerdem ist die Geschichte mit "var" nur eine Syntaxeigenschaft von Pascal. Du legst da übrigens eine lokale Variable an, soviel zu globalen Variablen. Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
[quote="Hubble"]Oder die Sache mit den Pointern. Jeder der auch nur einmal in Delphi mit Pointern umgehen mußte und den Vergleich zu C/C++ kennt verflucht dieses im Nachhinein in Pascal eingeführete Notkonstrukt.[quote]Wenn du auf die implizite Dereferenzierung hinaus willst: ACK! Zitat:
|
Re: Vorteile von Delphi
Zitat:
Was ist z.B. bei C, wo man (unter Umständen) z.B. in der main-Funktion am Ende das "return 0;" als letzte Anweisung weglassen kann, weil sich die meisten Compiler schon denken, dass es da hin soll. Da gibt es auch noch etliche andere Beispiele, wo man nicht ganz sauber programmieren muss und das Programm trotzdem läuft, weil der Compiler implizit irgendwelche Dinge annimmt, die so eigentlich gar nicht im Quelltext stehen. Da wird man doch zum "schlampigen" Programmieren geradezu animiert. ;) |
Re: Vorteile von Delphi
Oh weh, das ging ja schnell.
Schönen Gruß an meine 16310 Feinde. Bin im Moment beschäftigt, werde mich aber dazu äußern. Hubble |
Re: Vorteile von Delphi
16309 maximal :mrgreen:
Stimme dir zwar nicht wirklich zu, aber auch nicht der Meinung der anderen hier (oh man, habe ich jetzt eine eigene Meinung? Muss ich ändern). Ihr solltet alle mal weniger pauschalisieren, man kann genauso gut in Delphi wie in C/C++, Java, Haskell, wasWeißIch super unsauber programmieren. Das alles hat wenig mit dem Thread und natürlich auch wenig mit der Sprache an sich zu tun. Oder denkt ihr irgendwer kam mal auf die Idee sich eine Sprache auszudenken, die Krypto heißt und so kryptisch ist, dass man garnicht sauber und übersichtlich mit der arbeiten kann? Und falls ja, habt ihr dann auch eine Idee warum es keine solche Sprache unter den so gern genannten / verwendeten? Sprachen geschafft hat? Also ich muss sagen, dass man in C/C++ einige Konstrukte hat, die man in Delphi nicht so einzeilig hässlich nachbilden kann, aber die sind einfach super konstruiert. Mag sein das ein paar Hobbyprogrammierer denken, dass so etwas ihren Code individueller macht, aber wenn Code verifiziert werden muss oder erweitert oder verkauft oder oder oder, dann hält man sich auch in der C Welt an guten Stil. Andersherum garantiert mir niemand, dass mein Delphi Programm wirklich sauber ist. Schon diese Funktion in einer Funktion Zeugs finde ich persönlich so super unübersichtlich (wo genau fängt jetzt eigentlich die Funktion an?), dazu kommt noch, dass ich meine Variablen deklariere bevor ich sie benutze (natürlich in C auch der Fall, aber nicht mehr in C++). Das sind natürlich imperative Überbleibsel um die ich nicht rumkomme. Macht für mich den Code nicht immer lesbarer. Das man Exceptions nicht markieren kann (throws .... á la Java) wäre auch nett und natürlich eine Prüfung ob dieser Fehler behandelt wird (ich kann in Delphi einfach übersehen). Es gibt wirklich gute (konstruierte) Beispiele, warum C/C++ oder Delphi super schlechten Code haben, den kein Schwein lesen kann, aber wenn man sich etwas bemüht hat jede Programmiersprache das Potenzial sauberen, strukturierten und guten Code zu liefern. Keine Sprache macht einen Entwickler besser oder schlechter. Alle bieten den relativ gleichen Funktionsumfang, die Wahl (und das wurde schon oft genug gesagt) hängt doch eher von persönlichen Referenzen ab. Und bitte hört endlich mit dem entweder oder auf, es gibt hier unter den 16310 Leuten bestimmt genug, die sowohl Delphi als auch C/C++/C#/Java/HastDuNichtGesehen benutzen und auch wissen wann und warum sie welche der Sprachen nehmen oder eben nicht. Und insbesondere die, der 16310 die auch ihr Geld damit verdienen (nicht alle aber sicherlich die Meisten) sind auch in der Lage sauberen Code zu erzeugen (Wofür gibt es denn Konventionen?) Gruß Der Unwissende |
Re: Vorteile von Delphi
Hallo zusammen,
Zitat:
In einem seperaten Thread hat so ein Aufruf überhaupt nix verloren. Vermutlich meinst du damit, dass synchroninisierte Aufrufe um auf die VCL zuzugreifen den Thread hängen lassen, solange der Hauptthread im Stress ist. Das ist dann aber IMHO ein Design-Fehler. Wenn ich schon mit Threads arbeite, dann lasse ich den Hauptthread nicht schuften, sondern einen eigenen Thread. grüße, daniel |
Re: Vorteile von Delphi
Zitat:
Zitat:
Die Delphi Projekte an denen ich mirarbeite oder mitgearbeitet habe waren allesamt schlecht durchdacht und unsauber implementiert. Weils eben so einfach ist mal nen neuen Grid mit Schnickschack in den Dialog reinzuhängen der dann auch die Daten darin speichert. In C++ schreib ich mir immer erst ein Objekt welches die Daten hält und schau dann weiter. In Delphi kommt erst die Graphik. Ich gebe unverholen zu, daß Delphi VC++ in Sachen Graphik weit überlegen ist, aber das ist auch oft das Problem. Der Chef sieht nen Dilaog und denkt "Ah is ja schon fertig" und schon wird noch mehr gepfuscht. Zitat:
Zitat:
Macht man das gleiche in Delphi ohne try except , dann würde das Objekt nicht gelöscht und immer mehr Speicherlöscher entstehen. Zitat:
Hatte bisher nie Probleme mit Exceptions. Erst seit dem in Delphi code hab ich Probs mit Expetions. Zitat:
Zitat:
Natürlich gibt's in VC weniger Möglichkeiten und ich habe damals weniger Komponenten in dieser Art verwendet, aber die Thematik ist mit Delpho 6 nicht gut gelöst. Ich hoffe die Neuen Versionen beheben solche Probleme. Außerdem dauerts Stunden oder Tage bis man einen neuen Entwicklerrechner mit allen Komponenten zu laufen gebracht hat. Hubble |
Re: Vorteile von Delphi
Hubble: Deine Meinung ist fundiert, aber die Argumente sind ungenau und nicht zuende gedacht (imho). Aber so ist das: 2 Leute, 2 Meinungen. So, jetzt aber, Du Schuft :mrgreen: :
1. Mit Delphi schlampig programmieren. Absolut korrekt. Aber: It's not a bug, it's a feature. Ich kann mit Delphi sehr schnell ein funktionierendes und stabiles Programm zusammenklicken. Wirklich sehr schnell. Neulich habe ich einen Reportgenerator mit 1000 Bells&Whistles in 30 Minuten zusammen geklickt. Auf der anderen Seite wird man in Delphi auch absolut katastrophale Frickelsoftware erstellen können, die nich nicht mal das 'S' in 'Software' wert ist. Ist das eine Schwäche von Delphi? Nun, da kann man geteilter Meinung sein. Programmiersprachen, mit denen man zwangsweise stabile Programme schreibt, sind natürlich für Anfänger und Frickelchaoten die richtige Wahl, aber nicht für mich, denn ich programmiere seit 30 Jahren. Deine Argumentation impliziert, das ein DBMS eine Haufen Sch*** ist und SQL die schlimmste und unperformanteste DB-Sprache überhaupt. Warum? Weil ich mit SQL so dermassen langsame und grottenschlechte Datenbanken entwickeln kann, das jedes ordendliche Gericht die Todesstrafe (oder zumindest lebenslange Verachtung) verhängen würde. Ich hab hier gerade einen Studenten der kennt sich mit MySQL aus und hat eine MSSQL-DB hingezimmert, die mich wirklich verzweifeln lässt. "Man kann mit SQL ganz leicht hochperformante, elegante, robuste und leicht wartbare DB erstellen." man kann aber auch den größten Mist hinzimmern, den man sich vorstellen kan. Es kommt nicht auf das Werkzeug an, sondern auf den Anwender. Die besten Küchenmesser (ich bin auch Koch) sind sauscharf und man kann sich damit mal eben den Arm abschnippeln, ohne das man es merkt (nun ja). Sie sind aus weichem Stahl, sodass die Klinge unbrauchbar wird, wenn man damit das falsche Material bearbeitet. Ist damit das Messer Schrott? Nein! Der Anwender! Denn weichen Stahl kann ich am schärfsten schärfen. Idiotensichere Messer sind zwar idiotensicher, aber dafür kannst Du sie nach 2 Monaten wegschmeissen. Zurück zu Delphi: Gerade die Freiheit, zu frickeln, globale Variablen zu verwenden (was ist daran verwerflich? soll ich eine dämliche Klasse für eine globale Variable verwenden?), Assembler einzuschleusen etc. etc. etc. macht Delphi doch zu einem professionellen Tool, so wie eine SQL-DBMS oder ein richtig gutes Küchenmesser. Ich habe die Wahl! Hurra! Ich bin autark! Frei in der Wahl der Waffeln! Bei Java und den anderen reinen OOPS bin ich eingezwängt und muss zeitaufwändig auch die kleinesten Frickeltools 'designen', :kotz: . Die besten Werkzeuge lassen dem Anwender die größte Freiheit! 2. Die vielen Komponenten Ich hatte früher 100+ Komponentensammlungen installiert und fand mich richtig cool. Bis ich auf D4 wechseln musste. Dann war Schluss. Ich verwende eine 2 Sammlungen, aber die Richtigen. Ähnliches für C++ (VC++) kosten das 10 fache und sind dann nur halb so gut, ehrlich. Wie gesagt, ich muss die vielen Features nicht verwenden, aber ich kann. Ich kenne andere IDE nicht, aber die Komponentensammlungen sind nicht so verbreitet, oder? Mit .NET kann Alles anders werden (.NET wurde übrigens vom VCL-Erfinder Anders Heijlsberg entwickelt. Der wurde *gerade wegen der Eleganz der VCL* von Microsoft abgekauft, das nur mal so am Rande). Ich glaube, der VCL-Ansatz (eine ordendlich durchstrukturierte Klassenbibliothek) macht Code erst stabil. Was Du meinst, sind die 'SysUtils' etc. Units, die eben Prozeduren anbieten. Mein Gott, muss Alles gleich OO sein? Noch was zu OOP: "Die reine Leere, ist meistens die reine Lehre" |
Re: Vorteile von Delphi
Zitat:
|
Re: Vorteile von Delphi
@alle
Wollte Euch nicht Euer Delphi nehmen sondern nur mal die echten Probs ansprechen. Mir ist egal ob ich begin oder { schreibe. Selbst an die komische Syntax beim else mit und ohne Strichpunkt kann ich mich gewöhnen. Da gibt andere Probs: mäßiges exception handling schlechte Pointernutzung VCL nicht Threadfest Objekte können nur mit .create erzeugt werden und wieder gelöscht werden Klassen und Ausprogrammierung sind immer getrennt nicht ausgereifte Projektverwaltung keine STL keine echten Templates Das sind die Fakts die mir in Summe Delphi verleidet haben. Denn anfangs war ich durchaus begeistert von Delphi weil alles zu schnell und einfach ging. Aber mit der Zeit... Hubble |
Re: Vorteile von Delphi
Zitat:
Btw, Dein Bespiel mit automatischer Objektfreigabe kann man auch in Delphi 6 bauen. Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zugegeben, ich liebe Delphi, aber ich diskutiere auch gerne die Für und Wider von Delphi. Also, ich warte auf Deine Antworten :mrgreen: ...:cat:... |
Re: Vorteile von Delphi
Es *gibt* ja IDE die das eine oder Andere besser machen z.B. Templates, oder wenigstens einen Präprozessor, aber automatische Objektfreigabe ist ja wohl der größte Dreck, den ich kenne. Eine Java Applikation eines Praktikanten ist gerade deshalb nicht zu gebrauchen. Und das einzige Projekt, das ich nicht bugfrei bekomme, arbeitet mit automatischer Objektfreigabe.
Trotzdem sind die Argumente durchaus eine Überlegung wert, aber leider fängst Du mit der Sprache Delphi an und hörst dann mit der Borland IDE auf. Imho sind z.B. Templates keine Spracheigenschaft, sondern doch ehere eine Eigenschaft eines Präprozessors, oder? Welche IDE ist denn nun wirklich Besser? Ich steig ja gerne um, zumal D2005 wohl etwas wackelig daher kommt und D2006 die Marktreife noch nicht bewiesen hat.... |
Re: Vorteile von Delphi
So langsam wirds stressig. Ich glaub das nächste mal stell ich mich in unser Statdion und schweke die Bayern-Fahne, da gibts nicht so viel Haue. ;)
Mache erst mal Pause. Cu Hubble |
Re: Vorteile von Delphi
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Von wegen "unsauberes Programmieren" kann man sich jedoch auch streiten. Jede Sprache hat ihre Vorteile. In Delphi ist IMHO, dass man strukturiert Variablen immer an den Anfang setzen muss, für alles einen eigenen Bereich hat, und nichts "mal eben irgendwo" machen kann etc. Ob es ein Fluch oder ein Segen ist, soll jeder selbst entscheiden. Ich bekomme jedenfalls das Grauen, wenn ich einen C++-Quelltext sehe, in dem in jeder 15. Zeile eine Variable deklariert wird. Wenn ich ein wenig weiterlese, weiß ich gar nicht mehr, welche Variable was genau machen soll. Und wenn ich es nachlesen will, muss ich den gesamten Quelltext durchstöbern und suchen. In Delphi ist ein Nachteil (bei größeren Projekten hauptsächlich), dass man alles "mal eben" zusammenklicken kann. Da friemelt man irgendwie eine GUI zusammen, baut hier noch was ein, und da noch was ein... Aber wird man trotzdem in Delphi dazu verleitet, schlampig zu programmieren (im Vergleich zu C++)? Ich denke, ich C++ ist das noch schlimmer. Hingeschmierte Einzeiler sind oft schwerer zu lesen oder zu warten als ein strukturierter Delphi-Quelltext, finde ich. Was ich damit sagen will: Sowohl in Delphi, als auch in C++ wird man irgendwie zur schlampigen Programmierung verleitet. Aber das kann man weniger der Sprache zuordnen, sondern eher den Entwickler selbst. Denn der entscheidet ja, wie der Code aussehen soll. Und wenn er schlampig programmiert, ist das nicht die Schuld der Sprache, sondern die des Entwicklers. Und im Endeffekt ist Vieles auch noch eine Geschmacks- bzw. Gewohnheitsfrage... ;) |
Re: Vorteile von Delphi
Zitat:
|
Re: Vorteile von Delphi
Zitat:
|
Re: Vorteile von Delphi
Zitat:
Zitat:
Zitat:
Zitat:
Wie gesagt, die Allokierung mag beim Stack tatsächlich größer sein, ich würde den STack aber nicht für etwas größeres missbrauchen.Was mir an den Objekten auf dem Stack gefällt, ist, daß ich einfach mit arbeiten kann, ohne mir Gedanken zu machen. Ein wenn man sich einen Huafen Hilfsklassen deklariert hat, verwaltet man sich in Delphi erstmal einen Wolf. In C++ schreibt man einfach die Variable hin und gut iss, das ist sehr angenehm. Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Ich bin beispielsweise eher auf deiner Seite als auf der der Delphianer, aber ich bin kein Fanatiker, in keine der beiden Richtungen. Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Vorteile von Delphi
Zitat:
|
Re: Vorteile von Delphi
Zitat:
Es liegt an dieser komischen Eiweißstruktur, die da vor dem Bildschirm an der Tastatur sitzt, ob das Endprodukt eine Katastrophe wird. Da hilft auch die schönste Sprache nichts, wenn der Programmierer ein Chaot ist. Übrigens habe ich schon einige Beispiele in C++ gesehen, wo mir schlichtweg die Galle hochkam. Es ist (meiner bescheidenen Meinung nach) wesentlich einfacher in C++ irgendetwas zu schreiben, das keiner mehr durchblickt, als in Delphi. |
Re: Vorteile von Delphi
Oh man Jungs(und Mädels)
Ist ja echt klasse was man mit ein paar Kommentaren aus einem eingeschlafenem Thread alles machen kann. Geh jetzt schlafen und träum von C++ Monstern die gegen Delphi Mutanten kämpfen. :spin2: Hubble |
Re: Vorteile von Delphi
Zitat:
Hubble |
Re: Vorteile von Delphi
Zitat:
So wurde vor ca. 6-7 Jahren die Entscheidung getroffen die BDE mit Paradox zu verwenden. Die BDE war damals State of the art und sollte bis in alle Ewigkeit mit sämtlichen Datenbanken der Welt kompatibel und super wartbar sein. Jetzt haben wir die Kiste voll mit graphischen Elementen welche die BDE nutzen. Irgendwann sind wir aber gezwungen mal auf eine richtige Datenbank umzusteigen und das heißt das Superdelphitool von damals bricht uns jetzt den Hals. ( ich bin übrigens ein häufiger Nutzer von SQL und finde gute Datenbanken klasse ) Zitat:
Ich sehe auch die Vorzüge von Delhpi. Schnelle kleine Tools welche ein Aufgabe erledigen. Ein Bericht, eine Datenbankeingabe oder ein Scannertool für Barcode. Ich habe sogar schon überlegt ein Projekt mit Delphi und VC++ zu mixen und so beide Vorteile zu nutzen. Meiner Erfahrung nach, sobald man am Ende mit den Großen Aktionen ist und Übersicht und Flexibilität mehr zählt als Schnelligkeit, hab ich noch nie gute Ergebnisse mit Delphi gemacht. Liegt eventuell an den verschiedenen alten Projekten die mir verpasst wurden, ist bei mir aber so. Ich liege im übrgigen gar nicht so extrem weit von Deiner Position weg werde wohl aber nie ein überzeugter Delphianer werden. Wir haben uns gerade die neue Version bestellt, diese wird im neuen Jahr auch eingesetzt werden und ich hoffe auf Besserung aber überzeugt muß ich noch werden. Ich hab da was gehört: Ist Andreas Kosch nicht gerade vom Delphi Papst zum Visual Studio konvertiert? (korrigiert mich falls das falsch ist) |
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 17:17 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