2 Stimmen

Von C++ Tools zu .... ? Versuchen Sie, moderne Tools kennenzulernen

Ich bin ein langjähriger C++-Programmierer, der unter Windows entwickelt, und habe Visual Studio für die Entwicklung von nicht verwaltetem C++ verwendet.

In den letzten 2-3 Monaten bin ich zum ersten Mal mit der Welt von C# und Java in Berührung gekommen. Mann, ich bin erstaunt über den Produktivitätsgewinn!

Im Besonderen:

  1. C# und Java haben so viele coole Werkzeuge (TestDriven.NET, NetBeans IDE). Ich persönlich finde die Tools viel moderner moderner als die C++-Tools, die ich bisher verwendet habe.
  2. Alle Bibliotheken sind sind da und ich kann sie sofort benutzen, ohne dass ich Extras herunterladen muss (Boost, Qt, usw.)
  3. Rasend schnell Kompilierzeit. Die C#-Kompilierung ist superschnell. Jedes Mal, wenn ich Änderungen an Java-Code in meiner Netbeans IDE vornehme, muss ich muss ich nie auf das übliche Kompilieren/Verknüpfen warten. Es wird einfach direkt dort. Kein Warten! (Leute, die Boost verwendet haben, stimmen wahrscheinlich mit mir über die langsame Kompilierzeit überein, wie z.B. die Asio-Bibliothek)
  4. Einfaches Einsatzschema. Mir gefällt die Tatsache, dass ich den Code nur einmal schreiben muss und er auf verschiedenen Maschinen (Betriebssystemen) ausgeführt werden kann, ohne dass ich ihn neu kompilieren muss.

Nachdem ich all das gesagt habe, hier meine eigentliche Frage: Sind C# und Java gute Technologien, um die modernsten Tools und Bibliotheken zu lernen? Sind dies die beiden Technologien, die die besten Werkzeuge zur Verfügung haben? Ich möchte neue Tools kennenlernen, um meinen Blickwinkel zu erweitern. Auf diese Weise kann ich daraus lernen und versuchen, gleichwertige Werkzeuge in C++ zu finden.

Haftungsausschluss: Meine Absicht ist es nicht, C++ als Sprache zu disqualifizieren. Nachdem ich die für Java und C# verfügbaren Tools verwendet habe, habe ich einfach das Gefühl, dass die für C++ verfügbaren Tools ziemlich begrenzt sind (insbesondere Refactoring).

Ich verwende für meine C++-Entwicklung die folgenden Programme:

  • VS.NET 08
  • Visuelles Hilfsmittel X
  • Intel Parallel Studio (Profiler)
  • TeamCity
  • Ich plane, Bullseye und PC-Lint + Visual Lint für die Codeprüfung zu verwenden.

Klärung Als ich nach Tools fragte, meinte ich Tools wie IDE, Unit-Testing-Tools, Refactoring-Tools und dergleichen. TestDriven.NET ist wahrscheinlich das beste Beispiel dafür. Ich liebe die Tatsache, dass ich mit der Codierung meiner Unit-Tests beginnen kann und mit einem Rechtsklick diese Tests in meiner IDE ausführen kann! Es ist so schade, dass ich in unmanaged C++ nicht den gleichen Komfort habe!

4voto

Daff Punkte 42755

Das sehe ich auch so. Ganz gleich, ob es sich um C# oder Java handelt. Beide sind sehr moderne Sprachen und haben eine riesige Gemeinschaft, die neue Technologieimplementierungen und Frameworks beisteuert. Je nachdem, in welchem Bereich man mit C++ gearbeitet hat, kann der Umstieg auf z.B. C# ein großer Produktivitätsschub sein. Die Wahl der Sprache hängt auch von Ihrem Fachgebiet ab. Java ist im Bereich der Enterprise Webapplikationen riesig und für einen Anfänger scheint die Menge an verschiedenen Frameworks, Shortcuts und Technologien erdrückend zu sein (und einige neigen in der Tat dazu, die Dinge zu überspezifizieren und damit oft zu verkomplizieren). Für Java ist Eclipse wahrscheinlich die beste IDE (ich habe eine Zeit lang Visual Studio benutzt und vielleicht liegt es an meiner mangelnden Erfahrung dort, aber ich habe dort wirklich einige Funktionen vermisst, die Eclipse hat, besonders wenn es um Codegenerierung geht).

C# hingegen ist sehr auf das .NET Framework und - natürlich - auf Microsoft ausgerichtet. Wenn Sie früher in C++ für Windows programmiert haben, ist es wahrscheinlich sehr einfach, C# auszuprobieren (denn der Wechsel von C++ zu C# ist genau das, was Microsoft von C++-Entwicklern erwartet), und es ist definitiv die bessere Wahl für Desktop-Anwendungen (auch die Linux-Portierungen der .NET-Laufzeitumgebung werden ständig verbessert).

Ich musste an einem C++-Kompatibilitätsprojekt arbeiten und habe versucht, einige der Technologien, die ich von Java gewohnt war, wie z.B. die vielseitigen Logging-Frameworks oder die testgetriebene Entwicklung, an C++ anzupassen, aber es stellte sich heraus, dass es viel komplexer und zeitaufwändiger war, als ich erwartet hatte. Meine persönliche Schlussfolgerung war, dass einige Technologien nicht (oder nur mit unverhältnismäßigem Aufwand) so an C++ angepasst werden können, wie sie in den oben genannten Sprachen passen.

4voto

Casey K. Punkte 188

Mein Vater hat eine Garage voller Werkzeuge, und viele davon habe ich noch nie gesehen, wie er sie benutzt. Aber sie sind alle für einen bestimmten Zweck da. Ich halte es für ein lohnenswertes Unterfangen, mein Programmierrepertoire ebenso robust zu gestalten. Es wird Zeiten geben, in denen ich die großen Geschütze von C++ brauche, aber für viele Dinge komme ich mit C#, Java und Ruby oder Python gut zurecht, wenn ich es schaffe. Je mehr wir wissen, desto weniger sind wir der Gnade einer Sprache ausgeliefert.

2voto

rpg Punkte 7638

Die Werkzeuge spiegeln die Programmiersprache wider.

C++ ist eine ausgereifte Programmiersprache mit hervorragender Toolunterstützung, aber aufgrund der Art und Weise, wie die Sprache konzipiert ist, sind diese Tools möglicherweise nicht so schnell oder bieten nicht so viele Optionen wie die entsprechenden Java/C#-Tools.

  • Unit-Tests: Die C++-Gemeinschaft ist nicht so sehr an automatisierten Unit-Tests interessiert wie die Java/C#-Gemeinschaft. Dennoch ist UnitTest++ eine gute, leichtgewichtige Testbibliothek.
  • IDE: Sie verwenden bereits die beste C++-IDE, aber vielleicht möchten Sie auch QtCreator ausprobieren.
  • Bibliotheken: Sie werden diese wahrscheinlich nur einmal einrichten, also ist das keine so große Sache. Ich denke, dass Qt mindestens so gut wie die Java- und .NET-Standardbibliotheken ist.
  • Kompilierzeit: besseres physisches Design, vorkompilierte Header und bessere Hardware. Davon abgesehen werden C++-Kompilierungen wahrscheinlich nie so schnell sein wie die von Java/C#.
  • Einfaches Bereitstellungsschema: .NET und Java sind nicht einfach bereitzustellen, auch wenn es so aussehen mag. Im paint.net-Blog finden Sie einige .NET-Horrorgeschichten. Ich stelle ein Java-Projekt auf Linux bereit und packe eine JRE in das Installationsprogramm, um Konflikte zu vermeiden. Plattformübergreifende Entwicklung ist schwierig und WORA ist ein Mythos ;-)

1voto

Nun, ich denke, Sie haben Ihre eigene Frage beantwortet. Angesichts Ihres Hintergrunds in C++/Windows steht es außer Frage, dass der Kontakt mit zwei der reichhaltigsten Sprachen/Toolsets/Communities auf dem Markt - .NET und Java - ein Gewinn ist. Und die Sauberkeit der Tools für verwaltete Sprachen im Vergleich zu ihren nativen Gegenstücken ermöglicht es diesen Tools, sich auf die Problemlösung zu konzentrieren und nicht auf die Feinheiten des Umgangs mit DLL-Exporten und 7 Varianten nativer Stringtypen.

1voto

Matthieu Punkte 2683

Da bin ich anderer Meinung. Ich musste Desktop-Anwendungen in Java, C++ und C# entwickeln. Und die beste Sprache hängt von der Software ab, die Sie entwickeln müssen! Wenn Sie eine schnelle Software mit Echtzeit- und 3D-Problemen entwickeln müssen, ist C++ die beste Wahl. Liegt die Anwendung eher im Bereich Verwaltung oder Management, können Sie zwischen Java und C# wählen. Außerdem haben Sie bereits mit C++/ Qt entwickelt ?? dieses Framework steht jetzt unter LGPL-Lizenz! KDE, TortoiseSVN, Skype, GoogleEarth... einige Beispiele für mit Qt entwickelte Softs... Mit diesem Framework sind Sie genauso produktiv oder produktiver als mit Java oder C# UND Ihr Code ist auch plattformübergreifend!!!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X