Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#33

AW: C++ Builder oder Visual C++

  Alt 4. Nov 2015, 20:56
Einzig und allein das RAII basierte Exception Handling geht mir vom Konzept her ziemlich gegen den Strich.
Komisch - RAII ist das, was ich in Delphi so ziemlich am meisten vermisse.
RAII ansich ist schon recht cool. Nur finde ich das Exception Handling recht umständlich. Mir fehlt sowas wie das gute alte try . ScopeGuards finde ich unintuitiv, da hier der finally Block praktisch vor dem try Block steht und sämtliche Resourcen in extra Klassen zu kapseln (z.b. alle möglichen Arten von Handles bei Verwendung der WinAPI) ist aufwändig und unübersichtlich.

Copy/Move-Semantics-Verstehe ich nicht?
Zu komplex, um das jetzt mit eigenen Worten zu erklären, aber C++ allocated Objekte auf dem Stack und nicht (wie z.b. Delphi) auf dem Heap. Hier hast du jetzt die Möglichkeit Objekte zu "moven" statt zu kopieren. Das hat unter anderem Performance-Vorzüge und ist auch oft semantisch sinnvoll (unique_ptr, etc).
Wenn es dich sehr stark interessiert, dann findest du hier eine ausführliche Erklärung im Rahmen des Copy-Swap-Idioms:
http://stackoverflow.com/a/3279550

Templates - Für was was man mit anderen Sprachfeatures nicht genauso gut lösen kann.
Das Template System ist eine komplette funktionale Programmiersprache, die in C++ eingebettet ist. Normale Generics können hier einpacken und die Delphi Generics erst recht
Sehr mächtig sind auch Template-Spezialisierungen. Grob gesagt hat man ein Grund-Template mit einer bestimmten Signatur und darüber definiert man beliebig viele spezialisierte Templates, die z.b. eine bestimmte Klasse / einen bestimmten Datentyp matchen. Die STL hat beispielsweise eine Art Array Implementation namens std::vector, die man über
Code:
std::vector<int>
deklarieren kann. Wie ein normales Array in Delphi reserviert die Klasse intern dann für jedes Element sizeof(int) an Speicher. Verwendet man aber einen
Code:
std::vector<bool>
nimmt der Compiler das für bool spezialisierte Template und arbeitet intern mit Bitfields, weshalb 8 Werte nicht mehr 8, sondern nur noch 1 Byte belegen.

Was spricht denn wirklich gegen den C++ Builder?
  1. Kostet Geld.
  2. Steinzeitliche IDE (schlechte Code-Completion, schlechtes Highlighting, keine intelligenten Hints, etc). Das ist ganz schlecht für C++ Neueinsteiger.
  3. Kompatibilität. Viele Libraries machen sich wie gesagt nicht die Mühe den C++ Builder und seine Eigenarten per #ifdef abzudecken.
  4. Code Optimierung & Performance des Kompilats hängt anderen Compilern um Jahre hinterher. Das kann grade bei komplexen Berechnungen durchaus einen Unterschied machen.

Und mal speziell im Kontext dieser Masterarbeit: Braucht deine Tochter wirklich eine komplexe GUI? Ein Fenster mit zwei Buttons, das ein Bild anzeigt bekommt man doch selbst mit purer WinAPI in 10 Minuten zusammengebastelt
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat