Hallo zusammen,
C++ ist um ein vieles mächtiger als Delphi. Allein die Template Möglichkeiten gehen bei weitem über die der Generics von Delphi hinaus.
Oder die Möglichkeit der Mehrfachvererbung: Ok, man muss schon aufpassen, was man da wie vererbt, das kann sehr schnell unübersichtlich und fehleranfällig werden, lässt einem aber doch weite Freiheiten. Die Interface sind da nur ein fadenscheiniger Ersatz.
Mit Boost bzw. jetzt dem neuen Standard kann man viele schöne Sachen machen, Multithreading z.B. ist reltiv schnell und sicher umgesetzt.
Ja und da ist noch die Sache, dass ich fast jede Klasse auch lokal instanziieren kann und nicht immer mit new einen neuen Speicherplatz dynamisch anfordern muss. In Delphi gibt es da ganz schnell diese häßlichen try..finaly Verschachtelungen, wenn ich mal etwas mehr in einer Methode brauche, ok, etwas am Design verändert, kann ich das vielleicht auch vermeiden.
Ich persönlich mag C++ sehr gerne und kann damit auch recht gut um, es bedarf allerdings eine lange Lernphase, aber wenn man es drauf hat, dann kann man recht dolle Sachen damit machen.
Persönlich fehlt mir in C++ aber die with-Anweisung, da hat Delphi was voraus
Ich finde, das vergleichen der Sprachen ist aber nur eine seite der Medallie. Zum proggen brauche ich auch noch einen Compiler und am besten eine ordentliche
IDE. Und da geht es schon los.
Wenn ich das richtig verfolgt habe, sind die neuen C++ Features nur im 64 Bit Compiler verfügar, man belehre mich, wenn ich mich irren sollte. Für 32 Bit werkelt immer noch der alte. Die Produktivität ist mit dem C++ Builder nicht mit Delphi zu vergleichen, ein Hauptgrund warum ich als One-man-Tastaturhämmerer auf Delphi setze, wegen z.B.
- keine Refaktorings, außer Umbenennen, und das nur sehr oberflächlich
- keine Klassenvervollständigung ala Strg-shift-C, man muss immer in zwei Dateien, Header und Code, die Funktionen einfügen und bearbeiten (ok, mit UML gehts auch so, der Klassenbrowser regt mich in den akuellen Versionen nur auf)
- VCL wird halt irgendwie mit rein operiert, VCL Klassen müssen dynamisch angelegt werden, statisch geht nicht
- der Experte für vorcompilierte Header ist tricky, man muss schon selbst Hand anlegen, damit ordentliche precomiled Headers heraus kommen, die auch was bringen in Bezug auf Compiliergeschwindigkeit. Und da kommen z.B. die DevExpress Compos, die haben in einem Header Daten stehen und die zerschießen den precomiled Header so, dass er nicht verwendet werden kann. Ich hab das schon mehrmals denen geschrieben, ist aber in jeder Version wieder drinne... (Ich habs dann mal rausoperiert...)
- der Delphi Compiler ist um Welten schneller, ok für den Builder gibt es TwineCompile, da sieht man mal, was ginge, aber Delphi bleibt schneller (single-pass)
- Code-completion funktioniert nur mit einem ordentlichen precomiled Header und auf einem schnellen Rechner ordentlich, sonst passiert es schon mal, dass man über eine Sekunde wartet, bis die Code completion angezeigt wird, und ist sie einmal angestossen muss man auch warten und kann nicht weitertippen
Also, der Emba Compiler (ich rede jetzt mal nur vom 32er) ist wie schon gesagt, meilenweit hinter den aktuellen Compilern zurück. Aber es gibt noch ein Problem: Welches Tool nimmt man für die Oberflächenprogrammierung? Ok, QT fällt mir gerade ein,
VCL braucht die Builder
IDE und die ist grottig, MFC ist doch eh fast
WinAPI, ja und dann?
Also meine Meinung: Für "Backboxen" würde ich C++ mit einem vernünftigen Compiler nehmen, kommt eine
GUI dazu, dann entweder in Schichten mit verschiedenen Systemem arbeiten oder eben auf das Brot- und Wassertool Delphi ausweichen. (Um .net habe ich bis jetzt einen Bogen gemacht und Java mag ich persönlich nicht so...)
So, nun denn, frohe Weihnachten!
Gruß Pixfreak