Quote:
Originally Posted by WoWeger
welche sprache bietet welche vorteile?
welche nachteile haben sie und mit welcher lässt sich am meisten realisieren?
|
Es gibt dazu duzende Themen bereits in diesem Forum, aber ich fasse es kurz zusammen:
C++: Das Schweizer Taschenmesser unter den Programmiersprachen, kann alles, auch das (und vor allem das) was man nie braucht (wie Mehrfachvererbung). Damit ergeben sich einem Viele Möglichkeiten allerdings auch einige Fallen. So können 4 Leute den Selben Code komplett unterschiedlich schreiben und das nur weil C++ sehr viele Syntaktische Möglichkeiten für ein und das selbe bietet. Außerdem zieht C++ die lästige C kompatiblität mit sich, und ich denke ich kann problemlos behaupten dass C seit Jahren die Silbermedaille in der Kategorie Diarrhoea in Sprachform hält, einzig und allein getoppt von Fortran.
C++ hat eine große Community, man findet viele Snippets, und von der Sprache selbst versucht C++ einem das Systemnahe Programmieren so angenehm wie möglich zu machen. Allerdings ist es immernoch Systemnahes programmieren (das heist man arbeitet direkt auf dem Betriebsystem und der Hardware, und muss sich um jeden scheiß selbst kümmern) und man ist für viele dinge auf Externe Frameworks wie QT angewiesen da das selbst machen viel zu kompliziert wäre.
Auf der ganz anderen Seite des Spektrums haben wir Python. Python ist eine Skriptsprache die vor allem darauf ausgelegt ist einfach zu sein. Man kann sich sehr schnell kleinere bis mittelgroße Programme zusammenbasteln. Allerdings wird auf dem Zielgerät der Python Interpreter benötigt. Python versucht die Programme so weit wie möglich von dem System zu abstrahieren, sodass es dem Programmierer egal sein kann ob es sich jetzt um ein 64 Bit Linux System oder ein 16 bit arm DOS Rechner handelt. Ein toller Vergleich den ich mal gehört habe: Skriptsprachen sind die Paralympics des Programmierens.
Damit hätten wir die zwei extreme, die Native Sprache (C++) bei der man jeden Spaß selbst machen muss, und die Skriptsprache mit der sogar unterentwickelte Primaten (z.B. BWL Studenten) in der Lage sind Spaceshuttels zu landen. Irgendwo dazwischen befindet sich dann C#.
C# ist eine "Bytecode" Sprache, das heißt der Quellcode wird nicht wie in C++ in Maschinensprache für eine bestimmte Architektur übersetzt, und auch nicht wie bei Python einfach von einem Interpreter ausgeführt, sondern in einen Code für eine Virtuelle Maschine übersetzt, welche diesen Code dann ausführt.
Damit ist man nicht so langsam und Resourcefressend wie ein Interpreter, muss sich aber auch nicht darum kümmern ob man jetzt ein 32 Bit Windows oder ein 64 Bit Linux System hat (also gut indirekt schon da unter Linux nur Mono läuft, das ist aber eine andere Geschichte).
Das wichtigste Argument von C# ist allerdings das .Net Framework. Zum einen bietet es einen Haufen cooles Zeugs, sehr einfach zu benutzen, zum anderen ist man allerdings auf dieses angewiesen (Kein .Net installiert -> Kein C#). C# ist vor allem aber auch eine sehr Idiotensichere Sprache, man kann sich eigentlich nicht so dumm anstellen und kaputte Programme produzieren wie es eventuell bei C++ möglich ist.
Jede der Drei Sprachen bedient ein anderes Gebiet und damit sind sie nicht unbedingt vergleichbar. Leuten die schnelle Ergebnisse brauchen für Mathematische Anwendungen, Simulationen, etc. oder Leuten die einfach zu blöd sind einen PC zu bedienen (z.B. die oben genannten BWL'ler) würde ich Python empfehlen.
Jemand der schnell und einfach Komplexe Programme mit Userinteraktion (die eventuell auch noch schön sein sollen) entwickeln möchte, oder wer einfach gerne Fehler macht (bzw zu blöd ist mehr als eine Zeile über die Konsequenzen seines Codes hinauszudenken), dem würde ich C# empfehlen.
Wer Services oder Spiele programmieren, also Programme die entweder viele System oder Hardware zugriffe benötigen, oder die viel Optimierung benötigen, oder einfach ohne einen gigantischen Overhead durch Interpreter oder Frameworks zu produzieren möchte, oder Leuten die einfach ein wenig Masochistisch veranlagt sind, denen würde ich zu C++ raten.
Alles in allem gibt es nicht die beste Sprache, es ist alles eine Frage der Domäne. Aber wenn du zu den ganz coolen Kidz gehören willst solltest du auf jeden Fall auch mal funktionale Sprachen wie Haskell in betracht ziehen, diese haben eine etwas "intuitivere" Struktur und sind was Wartbarkeit und Leserlichkeit angeht den Imperativen Sprachen deutlich vorraus.