C++ vs C#
-
c++ gibt es doch schon recht lange , warum gibt es keine einheitliche lib ? wie zb .NET
ich habe mir eben dieses video angesehen
C++ and Beyond 2011: Herb Sutter - Why C++?
http://channel9.msdn.com/posts/C-and-Beyond-2011-Herb-Sutter-Why-CEs hat den anschein das C++ immer mehr in die Richtung => Produktivität geht.
-
kantaki schrieb:
c++ gibt es doch schon recht lange , warum gibt es keine einheitliche lib ? wie zb .NET
Bei C# macht Microsoft die Library. C++ ist da unabhängiger.
-
Das hat nicht nur mit Intellisense zu tun. Ich würde sagen, kleinere Anwendungen kann man mit C# auf jeden Fall deutlich schneller schreiben und besser warten. Und mit kleineren Anwendungen meine ich auch 90% der Standard Software, die kleinere/mittelgroße Softwaredienstleister schreiben. Bei größeren Projekten relativiert sich der Vorteil und dann kann C++ auch seine Stärken ausspielen.
-
C+# ist definitiv besser
-
Mechanics schrieb:
Das hat nicht nur mit Intellisense zu tun. Ich würde sagen, kleinere Anwendungen kann man mit C# auf jeden Fall deutlich schneller schreiben und besser warten. Und mit kleineren Anwendungen meine ich auch 90% der Standard Software, die kleinere/mittelgroße Softwaredienstleister schreiben. Bei größeren Projekten relativiert sich der Vorteil und dann kann C++ auch seine Stärken ausspielen.
Etwas schneller gehts schon, aber deutlich? C# erledigt auch nicht alles.
Alle Sprachvergleichsthreads die ich bis jetzt gesehem habe enden böse. Wahrscheinlich auch dieser.
-
IrgendeinName schrieb:
Etwas schneller gehts schon, aber deutlich? C# erledigt auch nicht alles.
Das kommt auf die Projektgröße an. Wenn es um ein zwei Mannwochen Projekt geht, lohnt es sich nicht mit C++ anzufangen. Da ist man mit C# schon lang fertig, bis man mit C++ die Buildumgebund eingerichtet und die ganzen benötigten Libraries installiert hat. Dann gibt es grad im Enterprise Bereich einfach wesentlich mehr Libraries für Java/.NET, als für C++. Wenns überhaupt was für C++ gibt, dann ist es oft veraltet oder hässlich. Und man kann mit C# dann oft ganz einfach irgendwelche netten Extrafeatures hinzufügen. Bei solchen Anwendungen sehe ich keinen Sinn, C++ einzusetzen.
-
:schland: Es ist eigentlich ganz einfach: Es kann nie schaden sich in C++ einzuarbeiten. Wenn du das tust, kannst du dir eine eigene Meinung bilden. :schland:
schrieb:
C+# ist definitiv besser
-
Steffo schrieb:
Es ist eigentlich ganz einfach: Es kann nie schaden sich in C++ einzuarbeiten. Wenn du das tust, kannst du dir eine eigene Meinung bilden
An sich gebe ich dir absolut Recht und halte auch nicht viel von Informatikern, die z.B. nur Java können. Aber ich muss auch sagen, es ist in der heutigen Welt kein Muss, C++ zu können. Es gibt viele Informatiker, die können das nicht und können damit auch nichts anfangen. Wenn man damit glücklich ist, sein Leben lang Enterprise Anwendungen in Java oder C# zu schreiben, dann muss man sich C++ auch nicht unbedingt antun. Wenn man das nicht freiwillig macht, wird man das eh nicht verstehen und nicht mögen.
-
Mechanics schrieb:
An sich gebe ich dir absolut Recht und halte auch nicht viel von Informatikern, die z.B. nur Java können.
Ich halte auch nichts von Informatikern, die sowohl Java als auch C++ und C# können. Ist doch alles 3 so gut wie dasselbe...
-
gastantwort schrieb:
Mechanics schrieb:
An sich gebe ich dir absolut Recht und halte auch nicht viel von Informatikern, die z.B. nur Java können.
Ich halte auch nichts von Informatikern, die sowohl Java als auch C++ und C# können. Ist doch alles 3 so gut wie dasselbe...
Mit Java und C# greift dein Argument vielleicht, aber auf C++ hat ein ganz anderes Spektrum an Anwendungsgebieten und ganz andere Codingstile.
In Java wirst du wohl kaum RAII brauchen, oder?
Wenn ich drüber nachdenke, bräuchte ein Informatiker eigentlich nur Pseudocode. Damit kann er ja alles modellieren. Das kann dann ein Code-Monkey abtippen.
-
Ähm, Ihr fangt an und vergleicht die Sprachen miteinander. Eigentlich wollte ich nur meine Fragen im ersten Post beantwortet haben
-
Deine anderen Fragen wurden ja quasi schon beantwortet, also wegen den Skriptsprachen und .Net:
Skiptsprachen kann man dazu verwenden, um Komponenten zu trennen, z.b die KI von der Engine. Außerdem bietet man Moddern eine schnelle Möglichkeit, Komponenten zu entwerfen. Nicht jede Firma wird Epics Weg gehen..Net unterscheided sich sehr stark von der C++ STL, falls du die gemeint hast.
Denn: Es ist eine Plattform! Keine Lib.
-
Warum sollte ein Informatiker mehr können müssen als Java, wenn er nicht gerade ein Programmieräffchen ist? Informatiker sind für mich spezialisierte Mathematiker und keine Programmierer.
-
IrgendeinName schrieb:
Deine anderen Fragen wurden ja quasi schon beantwortet, also wegen den Skriptsprachen und .Net:
Skiptsprachen kann man dazu verwenden, um Komponenten zu trennen, z.b die KI von der Engine. Außerdem bietet man Moddern eine schnelle Möglichkeit, Komponenten zu entwerfen. Nicht jede Firma wird Epics Weg gehen..Net unterscheided sich sehr stark von der C++ STL, falls du die gemeint hast.
Denn: Es ist eine Plattform! Keine Lib.okay das heißt:
Wenn ich zb A* für CryEngine implementiere, baue ich mir die basis in c++. zb
getpath() findpath() etcWenn ich nun eine AI baue die mein Pathfinding benutzen soll, kann ich funktionen aus c++ in einer script sprache miteinbinden (zb lua)
Richtig ?----
Wie gut funktioniert denn "Intellisense etc" für C++ im vergleich mit C#/Java etc ?
-
Ethon schrieb:
Warum sollte ein Informatiker mehr können müssen als Java, wenn er nicht gerade ein Programmieräffchen ist? Informatiker sind für mich spezialisierte Mathematiker und keine Programmierer.
Softwaretechnik hat eher weniger mit Mathematik zu tun.
-
Ethon schrieb:
Warum sollte ein Informatiker mehr können müssen als Java, wenn er nicht gerade ein Programmieräffchen ist?
Was machen Programmieräffchen?
-
Bananen schälen und dann das Innere in die Kühlungsöffnung des Laptopts drücken.
-
Ethon schrieb:
Warum sollte ein Informatiker mehr können müssen als Java, wenn er nicht gerade ein Programmieräffchen ist? Informatiker sind für mich spezialisierte Mathematiker und keine Programmierer.
Sorry, ich bin Informatiker und programmiere sehr gern in C++. Ich schreibe guten, wartbaren Code fuer eingebettete Systeme. Das wuerde ich keinem Programmieraffen ueberlassen. Und mit Java ist echt kein Blumentopf zu gewinnen.
-
knivil schrieb:
Das wuerde ich keinem Programmieraffen ueberlassen.
Es gibt gegenwärtig keine sinnvolle Arbeitsteilung zwischen einem reinen Informatiker und einem reinen Programmierer.
-
C++ bietet die Möglichkeit, unter die Haube zu gucken und im low-Level Bereich Dinge anders als im "default-mode" zu machen. Das fängt an bei eigenen Allokatoren und hört bei Bitgefrickel nicht auf. An viele dieser low-level Features kommt man in den managed Sprache einfach nicht heran (ich schiebe für die Diskussion Java und die .NET-Sprachen mal in eine Schublade, da sie sich was solche Dinge angeht ähnlich genug sind). Man muss aber auch immer im Hinterkopf behalten, dass man für das Verlassen der hohen Abstraktionsebene ("über" der VM) einen Preis zu zahlen hat: in C++03 muss man sich zwangsläufig mehr Gedanken über Objektlebenszeiten, Speicherverwaltung und weiß der Henker was noch alles mache. Das hat sich in C++11 um einiges gebessert, dennoch ist die Abstraktionsebene nunmal eine andere als in C#.
Wenn man eine Anwendung komplett in C# schreiben kann, ohne sich einen abzubrechen und ohne Performanceprobleme etc. zu bekommen, dann sollte man das auch tun. Das Codingtempo bekommt man mit der gleichen Sicherheit in C++ nicht ohne weiteres hin. Wenn die Sache kritischer wird, z.B. bei knappem Speicher im Embedded-Bereich oder anderen Problemen, bei denen man etwas tiefer in die Implementierungs-Trickkiste greifen muss, zeigt C++ dank der optionalen hohen Abstraktionsebene seine Stärken.lua ist ein ganz anderes Thema. Es ist nicht als eigenständige Programmiersprache konzipoert worden, sondern um schnell und einfach DSLs entwickeln zu können auf Basis eines Frameworks, das in einer GPL wie z.B. C oder C++ geschrieben worden ist. Das Beispiel von Kantaki geht schon gut in die Richtung.
Der Clou ist, immer das richtige Werkzeug für den richtigen Job zu benutzen - und mehr als nur ein Werkzeug im Koffer zu haben, um mehr Jobs ordentlich und sauber erledigen zu können.