Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Visual Express als Representant für Visual Studio zu nehmen ist in etwa ein Vergleich wie Windows 95 zu testen um zu erkennen wie Windows 7 ist. Express hat nahezu keine Features und Extensions sind deaktiviert. Das Konzept von Microsoft ist für VS, dass man eine Entwicklungsumgebung bekommt und speziellere Features als Extensions nach kauft oder frei installiert. Eine menge Funktionen liefert MS mit zusätzlichen Extensions, z.B. Power Tools, Concurrency Visualizer, highlight all occurrences, Profile Guided Optimization, SpeedCop und Windows Phone 8 SDK. Ich selber hab mir noch Visual Assist X und VisualGDB gekauft. Das ist so das selbe Prinzip wie bei Eclipse, unmengen an freien Erweiterungen aber für höhere Qualität oder Komplizierte Dinge zahlt man dann mal. Das ist übrigens ein Vorteil von VC#, dort kann man sich Visual Assist X sparen, weil intellisense mit der C# syntax wesentlich besser klar kommt und entsprechend die meisten Refactoring Features von MS mit geliefert werden. VS2013 hat viele C# Features in die C++ Welt gebracht aber zufrieden stellend ist das immer noch nicht. Die Komplexität der C++ Syntax beschreiben Toolentwickler, wie QT, Microsoft, Clang, gcc und doxygen als das größte Problem für die lange Entwicklungszeit und Bugs.
Unter linux gibt es Geany und Code::Blocks, damit hab ich früher Entwickelt und war völlig zufrieden. Die C++ Variante von Eclipse war unter aller Kanone, jeder klick hat spürbare verzögerungen gehabt und wenn ich mal ein größeres Projekt mit mehr als 100 Files geladen hab ist mir das entweder gleich abgeschmiert oder hat sich nach wenigen klicks verabschiedet.
Wenn man bedenkt wieviele IDE auf dem Markt sind und wieviele jedes Jahr dazu kommen oder verschwinden und wieviel darüber geschimpft wird, scheint es bisher wohl keiner richtig zu machen.
Mal was zu C++11. Ich hab die Woche in einem Blog eine Compiletime String Hash Lösung gefunden die constexp umschifft. Constexp erlaubt es normale C++ funktionen zur kompilierzeit aus zu führen, dafür müssen alle Bestandteile bereits bekannt sein. Das ist die gleiche Mechanik wie z.B. Constant folding("Hello"+"World"=="HelloWorld"), branch reduction, templates und so weiter. constexp makiert die Funktion, dass diese keine Variablen Informationen benötigt und kann somit beim kompilieren aufgerufen werden und ersetzt den Aufruf mit den Rückgabewert. Man kann eine StringHash Funktion schreiben und dann diese für String literals verwenden.
Im Programm gibt es dann auch den String nicht mehr, also die Binary wird kleiner und der Code kann mit einer Ganzzahl arbeiten statt immer den Hash aus dem String zu berechnen und diesen zu verwenden. Leider kann VC++13 noch kein constexpr, clang und gcc schon und daher hat jemand den Murmur Hash als Makro nach gebebaut und nutzt diesen
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
mathias hat geschrieben:
Zitat:
Entwicklungsumgebung, unter Windows Visual Studio?
Ich habe mir Visual Studio Express installiert, aber dies kommt nicht mal annähernd an Lazarus/Delphi heran.
Naja ich glaube du hast einfach in den falschen Bereichen nachgeschaut. In der Express kannst du dir zum Beispiel einfach mal folgende Geschichten auf Youtube anschauen (es sei denn du willst C# lernen, denn C++ ist ein echter Krampf mit der Express):
- Forms: Ist in etwa das was man auch aus Delphi und Lazarus kennt. Und funktioniert auch in etwa gleich. Sprich schöner grafischer Editor und Code-Behind, nix besonderes. - WPF: Im Prinzip genau das gleiche wie Forms nur halt in allen denkbaren Punkten besser. - ASP.NET: Ist die komplette Web Geschichte auf Basis von .NET. Sprich hiermit machst du hauptsächlich Web Services und Web Seiten. Die Web Seiten selbst haben dann auch wieder einen tollen Editor wie Forms und WPF. - T4 Templates: Das sind Microsofts Variante von code-generierenden Scripten. Im Gegensatz zu anderen Lösungen werden diese aber zur Design-Time ausgeführt und nicht erst beim Build. Sprich man kann gleich den generierten Code, mit Intellisense und co, im Projekt verwenden und muss sich keine Gedanken mehr machen
Hihi, mach mal ein C++ Projekt unter Mono oder Xamarin.
Mono ist für eine .Net Umgebung. C++ ist eine native Sprache. Das passt ohne krank komplizierte nicht empfohlene Verbiegungen wie C++/CLI gar nicht zusammen.
Visual Studio ist die beste IDE, die ich kenne. Das sage ich ohne Unsicherheit und ich habe bereits mit Code::Blocks, Eclipse und anderen gearbeitet. Ich habe keine Ahnung von Delphi oder dessen verschiedenen IDEs, allerdings unterstelle ich rein schon aufgrund des Alters einen weit geringeren Funktionsumfang. Die Express-Variante fehlt die Möglichkeit von AddIns was schon eine merkliche Einschränkung ist. Nichts desto trotz ist sie meiner Meinung nach immer noch vorne. Intellisense und in der neueren Version die Autoformatierung arbeiten ziemlich zuverlässig.
Es gibt CTP Versionen von VS2013 und "VS14" die bereits eine abgespeckte Version von "constexpr" unterstützen. Mit Abgespeckt meine ich aber noch nicht einmal die Erweiterungen von C++14. Und das Makro. Oh mein Gott. Da weiß bekommt man direkt vor Augen geführt warum Constexpr längst überfällig ist. Richtig schlimm ist es, wenn das einmal einen Syntaxfehler auswirft oder Debugging erfordern würde. Und richtige Strings nimmt das auch noch nicht an.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Im MSDN gibt hab ich eine Diskussion über VS2014 gelesen gehabt, da ging es um die C++11 Fähigkeit und da hat einer der Entwickler gesagt, dass die mit VS2014 Beta ein neues Konzept fahren. Man baut alle Keywörter und Syntax Sugar ein und lässt die Implementierung leer. So kann man dann per Updates die Implemetierungen noch nach reichen. Ich gehe davon aus, dass die auch gleich Neuerungen von C++14 und C++17-Draft mit ein beziehen, wenn auch nicht implementieren. VS2013 hat sein Augenmerk für mein Geschmack auf zuviele Lager verteilt und C++ ist am kürzesten gekommen. Das neue Windows8 API Konzept, Windows Phone8 SDK, Windows Hyper Visor integration in VS für W-Phone8 Emulierung, ein massiver umbau und erweiterung von Parallize, Threading für .net, finalisierung von VS UI auf WPF, Statische Code analyze, CPU,Memory und Threading Profiler und da sind noch viele weitere dinge. Ich find es auch blöd, dass man .net immer noch für VB und C++CLI portiert, die Ressourcen könnte man besser woanders ein setzen.
Ich stimme auf jeden Fall zu, wenn man sagt, dass VS Express die beste kostenlose C++, VB und C# IDE ist. Wobei es bei VB und C# wenig bedeutet, XCode ist auch die beste Objective-C IDE einfach weil keiner sonnst sich Konkurrenzfähige Alternativen bieten kann. Xamarin könnte allerdings über die Zeit an bedeutung gewinnen und ich wette, dass Unity3D es auch bald kostenlos machen wird.
Dieses Jahr ist ja wohl das Jahr der Samarita in der Spielebranche ^^ Facebook/Oculus kauft Raknet und macht es OpenSource und kostenlos, Unity3D kauft Xamarin und liefert es kostenlos zu Unity3D, Google hat ein MPEG plugin für alle Browser bereit gestellt und bezahlt dank Vertragslücke kaum mehr und die anderen müssen gar keien Gebühr mehr zahlen. Microsoft hat mit Ogg zusammen Opus entwickelt und seine Skype Patente und Code einfliessen lassen. Microsoft hat ein Indie Game Programm gestartet, wo jeder mit nen guten Konzept MSDN-Pseudo Gold und Unity3D kostenlos bekommt und die Liste ist noch wesentlich länger.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
Naja ob Visual Studio nun unbedingt die beste ist, kann man sich wohl streiten. In Verbindung mit .NET Entwicklung sicherlich. Aber da finde ich koennte man genauso gut auf Eclipse und Java setzen.
Fuer reines C/C++ finde ich Netbeans und DevCpp am coolsten. Mit der 8er Version hat Netbeans auch endlich Unterstuetzung fuer C++ UND C 11 (wird ja immer mal wieder gerne uebersehen) eingebaut. Ausserdem liefert NB etwas besseres Syntax Highlighting und wesentlich besseres Autocomplete als die beiden Grossen. Letzteres ist uebrigens bei VS unter aller Sau und fuer mich persoehnlich der wichtigste Faktor.
@Tak
und nicht zu vergessen was Epic und Crytek gerade fuer einen Sozi schieben
Als ich arbeite mit VS 2010 und 2013 und Autovervollständigung und Syntaxhighlight funktioniert bei mir hervorragend. Kann es sein, dass deine Erfahrung etwas älter ist? Ich habe vor sehr langer Zeit nur kurz mit der 2008er Version zu tun gehabt und da hat Autovervollständigung eigentlich ziemlich versagt, soweit ich mich noch erinnere.
Um in modernen C zu entwickeln ist VS ungeeignet. Das hängt irgendwo zwischen C95 und C99, soweit ich weiß. Allerdings habe ich noch nirgends mitbekommen, dass irgendjemand C11 verwenden würde. Im Gegenteil. Ich habe mein Eindruck das viele C-ler eher noch an dem Syntax vor Jahrzehnten festhalten. Das fängt schon mit dem puren Verwenden von Multiline-Kommentaren an. Ich denke, das liegt auch daran, dass viel C Code schon viele Jahre auf dem Buckel hat bzw. neuer Code hauptsächlich dann in C geschrieben wird, um eine möglichst umfassende Kompatibilität(das heißt älterer Standard) zu erreichen.
Es gibt immernoch einen beträchtlichen Anteil an VB Entwickler wovon immernoch ein erschreckend großer Teil an VB6 festhält. Ich kam ja ursprünglich auch aus der VB(A) Ecke überhaupt zum Programmieren. Ich denke das ein Abschießen von VB.Net momentan nicht gut für Dot.Net wäre. Ich persönlich frage mich ja da schon eher bei F#... C++/CLI ist möglicherweise aus Interop-Zwecken notwendig.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Zitat:
Inline namespaces
das wird für mich sehr schön, weil ich dann die tiefen namespaces wie RadonFramework::Core::Types::Utils::StringBuilder z.B. über RadonFramework::StringBuilder erreichbar machen kann
Zitat:
User-defined literals in the language and standard library: You can append numeric and string literals w...
Darauf warte ich auch, dass ist sehr nützlich aber ohne VS support macht es nicht Sinn zu implementieren.
Allerdings warte ich am meisten auf constexp.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
OpenglerF hat geschrieben:
Als ich arbeite mit VS 2010 und 2013 und Autovervollständigung und Syntaxhighlight funktioniert bei mir hervorragend. Kann es sein, dass deine Erfahrung etwas älter ist? Ich habe vor sehr langer Zeit nur kurz mit der 2008er Version zu tun gehabt und da hat Autovervollständigung eigentlich ziemlich versagt, soweit ich mich noch erinnere.
Ich meine mit besser nicht das es ausfaellt oder bestimmte Dinge einfach nicht existieren (bei vielen IDEs werden z.B. gerne mal typedefs ausgelassen und man hat keine chance da etwas zu machen), sondern schlicht und einfach das es angenehmer ausschaut und anpassen laesst. Und wenn wir mal zum Beispiel Netbeans nehmen, dann findet hier Out-of-the-Box einfach eine staerkere Differenzierung statt. Sprich man hat zum Beispiel eine andere Farbe fuer Variable und Member dieser Variable. Wenn ich das dort anpassen will. Dann gibt es dort ein, nach Sprache sortiertes, Menu und ein Code-Snippet wo man einfach auf das entsprechende Element anklicken kann. Zugegeben das ist sehr von den persoehnlichen Vorlieben abhaengig aber fuer mich, und viele andere, halt auch sehr wichtig.
Im Prinzip ist es auch bei der Autovervollstaendigung genau das gleiche, nur halt wesentlich objektiver lol Bei Netbeans ist diese in etwa auf den Niveau von C# in VS. Nimm zum Beispiel die moeglichkeit zur Dokumentation. Bei Netbeans hast du halt zum Beispiel Doxygen Kommentare die dann aehnlich wie bei C# halt mit eingeblendet werden. Bei VS 2013 ist mein letzter Stand, das hier einfach ein bisschen Text der vor deinen Zeug steht angezeigt wird.
OpenglerF hat geschrieben:
Um in modernen C zu entwickeln ist VS ungeeignet. Das hängt irgendwo zwischen C95 und C99, soweit ich weiß. Allerdings habe ich noch nirgends mitbekommen, dass irgendjemand C11 verwenden würde. Im Gegenteil. Ich habe mein Eindruck das viele C-ler eher noch an dem Syntax vor Jahrzehnten festhalten. Das fängt schon mit dem puren Verwenden von Multiline-Kommentaren an. Ich denke, das liegt auch daran, dass viel C Code schon viele Jahre auf dem Buckel hat bzw. neuer Code hauptsächlich dann in C geschrieben wird, um eine möglichst umfassende Kompatibilität(das heißt älterer Standard) zu erreichen.
Ja, das trifft aber auf eigentliche alle Tools zu. Ich hatte hier ja zum Beispiel mal bemerkt das viele Editoren dir Fehler anstreichen die eigentlich gar keine sind und all solche Scherze. Noch schlimmer ist es bei so manchen Compiler und den Standard Libraries. Da kannst du wenn du dich mal ein bisschen damit beschaeftigst Tonnen an Fehler finden. Setz zum Beispiel einfach mal in den Dialekt Optionen alles auf C89 und kuck mal auf wie vielen Compilern ein Single-Line Kommentar durchlaeuft. Besonders beliebt sind hierbei auch immer wieder die String Funktionen.
Fuer mich stellt sich dann natuerlich die Frage wie das Ganze bei C++ aussieht. Ich meine mal, wenn die selben Leute das einfachere und noch dazu weiter verbreitetere Zeugs versaubeuteln, wie koennen die dann etwas komplexeres in ordentlichen Zustand abliefern? Und wenn es tatsaechlich genauso Schlimm ist, warum sollte man bei C++ sich ueber C++11 stuerzen und als C Entwickler nicht das gleiche tun?
Also zumindest Typedefs gehen in Visual Studio. Doxygen fände ich auch interessant.
Ich glaube, dass C11 wenige interessiert, liegt hauptsächlich an den Gründen die ich auch schon genannt habe. Die Leute schreiben hauptsächlich in C für maximale Kompatibilität oder wegen älteren Code. Außerdem ist C11 einfach weit weniger revolutionär. Ich habe gerade mal nachgeschaut. Klar, ein paar nette Sachen. Für die meisten Dinge gibt es wirkungsvolle Workarounds oder Extensions der Compiler auch ganz ohne C11. Die für mich einizige wirklich entscheidende Neuerung in C11 scheint mir das Multithreading zu sein.
In C++11 kamen halt echt einige Dinge dazu, die das Programmieren mit C++ revolutioniert haben. Es wurden viele Probleme gelöst die vorher nahezu unlösbar waren. (Move Semantik! exception_ptr? Static init? einige der Typetraits? Extern Template? Variadic Templates? Auto/Decltype? NoExcept? Alias Template? Atomics?, ...) Und dann gibt es viele Neuheiten die das Programmieren in einigen Fällen signifikant vereinfachen. (Lambdas? Smart Pointers? Range Loop?, Override? Constexpr? ...) Einen eher kleinen Teil der Dinge kann man Wordarounds komplett unnötig machen oder es wäre sehr aufwendig. Außerdem denke ich das mehr Leute in C++ klare Anforderungen an kompakten Code und sauberen Syntax haben, wo man in C vielleicht auch eher mal darüber hinwegsieht. C++11 hat die Sprache entscheidend gewandelt. C11 sind ein paar nette Ergänzungen.
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
Da hast du was falsch Verstanden. Es geht nicht um die Features. Das Hauptproblem von C99 ist halt das wir hier eigentlich keinen Standard haben. Die wenigsten Tools haben es vollständig umgesetzt und einige Hersteller, nicht nur MS, haben sich quasi verweigert. Damit war der bisherige Standard nach wie vor, eindeutig C90.
Durch C11 hat man vor allen den Vorteil das beide Teams jetzt mal zusammengearbeitet haben. Dadurch steigt zum einen die Chance das die Sachen umgesetzt werden, und zum anderen hast du so größere Kompatibilität zwischen den Beiden. Gerade wenn man mal an solche Geschichten wie Atomics oder Bound-Checks denkt, halte ich das durchaus für sehr gute Nachrichten. Außerdem hat ja auch C++ dadurch noch etwas Syntax Sugar bekommen
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.