Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : C, C++, C#? Wo geht was?



Prodegy
12.03.2005, 19:01
Vielleicht habe ich nur die Suchfunktion falsch eingesetzt, aber ich habe keinen Thread mit dem gleichen Inhalt gefunden, also...

Wo liegen jetzt eigentlich die gravierenden Unterschiede zwischen C, C++, und C#?
Und mit welcher der Sprachen sollte man ishc beschäftigen, wenn man ein-/umsteigen möchte?
Was kann man mit welcher am effektivsten umsetzten?
Kann man mit allem Spiele programmieren?

danke

Jesus_666
12.03.2005, 19:17
C ist die älteste der drei Sprachen. Sie hat keinerlei Objektorientuerung und ist für systemnahe Programmierung am besten geeignet.
C++ ist etwas jünger und wurde als abwärtskompatible objektorientierte Erweiterung von C entwickelt. C++ zeichnet sich dadurch aus, daß es mächtiger als C ist und du auf eine riesige Sammlung von Bibliotheken etc. zurückgreifen kannst. Diese Sprache würde ich auch am ehesten von diesen dreien empfehlen.
C# ist eine Microsoft-Sprache, die C++ ähnelt. Mit C# bist du an Windows gebunden uns hast weitaus weniger Bibliotheken zur Verfügung wie mit C++. Keine Empfehlung.


Spiele kannst du in allen dreien schreiben.

Freezy
12.03.2005, 20:49
C# ist eine Microsoft-Sprache, die C++ ähnelt. Mit C# bist du an Windows gebunden uns hast weitaus weniger Bibliotheken zur Verfügung wie mit C++. Keine Empfehlung.

C# Compiliert für das .NET Framework. D.h. kannst Otto-Normal-User deine Spiele nicht Spielen wenn er nicht dieses Framework installiert hat. NET ist der schritt nach den standart W32 Binarys und eigentlich nur eine art Quellcode der erst auf den rechnern der Enduser compiliert wird. Also entweder braucht dieser die Laufzeitdateien (von der MS Page) oder Windows Longhorn. C# bietet aber auch den vorteil (genauso wie Managed C++ bei Visual C++.NET) des Garbagecollectors, der dir nicht freigegebenen Speicher automatisch bereinigt... auserdem noch viele andere tolle sachen... trotzdem nicht zu empfehlen.

Prodegy
12.03.2005, 21:20
D'oh!
Ausgerechnet von C# wird mir abgeraten!
Aber soll nicht C++ relativ Kopmliziert sein im Vergleich zu den übrigen beiden?
Was wären denn diese anderen tollen Sachen?

Crash-Override
12.03.2005, 21:27
C++ bietet z.B. globale Variabeln (jedenfalls soweit ichgs aus OS-DEV weis), C ist an sich wohl leichter, aber etwas schwerer wenn man was damit proggen will, die Erfahrung musste ich machen....

Also wenn du mich fragst nimm das djgpp-Paket und die Eingabeaufforderung und du hast alles was du für C++ brauchst...

Jesus_666
12.03.2005, 22:06
Also wenn du mich fragst nimm das djgpp-Paket und die Eingabeaufforderung und du hast alles was du für C++ brauchst...
Soweit ich weiß hat MinGW (http://www.mingw.org/) eine bessere Implementierung der GCC.


Zum Thema Dotnet (.NET): Dotnet ist ein komisches Ding: Es bietet dir einige der Vorteile von Java (wie z.B. den Garbage Collector und den Umstand, daß du "portablen" Bytecode erzeugt), hat allerdings auch einige der Nachteile von Java (wie z.B. die vergleichsweise schlechte Geschwindigkeit dank Garbage Collector und Bytecode), erzeugt aber im Gegensatz zu Java keine portablen Programme, weil es das .NET Framework offiziell nur auf Windows gibt.
Mit Dotnet hast du im Wesentlichen ein Java, das du wahlweise wie Basic oder C++ programmieren kannst, das dafür aber nur unter Windows lauffähig ist. Wenn du direkt in C++ programmierst sind deine Programme portabler (weil man nicht-Dotnet-Programme teilweise auch unter Linux zum Laufen kriegt) und schneller. Wenn du in Java programmierst sind deine Programme nicht viel langsamer als mit Dotnet und laufen überall.

Longhorn wird vielleicht für Dotnet optimiert sein, so daß der Geschwindigkeitsverlust da geringer ist; trotzdem kommt mir Dotnet wie ein Java-Verschnitt vor, der das eine entscheidende Feature von Java nicht hat: Die Möglichkeit, ein Programm ohne jede Veränderung auf einem Dutzend Plattformen verwenden zu können.

MagicMagor
13.03.2005, 00:41
Aber soll nicht C++ relativ Kopmliziert sein im Vergleich zu den übrigen beiden?
Ich möchte hierzu ein par Worte loswerden. C++ erweitert im Grunde nur C, auch wenn einige Dinge in C++ anders gehandhabt werden als in C, so ist die Basis von C++ immer noch pures C. Über C# kann ich persönlich gar nichts sagen, aber ich wage mal die Behauptung aufzustellen, daß Entwicklung für .NET (oder Dotnet, wie Jeez es sagt), etwas ist, daß zumindest momentan für Hobbyentwickler nicht unbedingt beachtenswert ist. Das mag in fünf Jahren vielleicht anders aussehen, aber dann kann man immer noch C# lernen, oder was auch immer dann die aktuelle .NET Sprache ist.

Die Vorteile von C++ liegen eigentlich klar auf der Hand. Es ist so stark verbreitet, wie kaum eine andere Sprache, demnach findest du Unmengen an Dokumentationen und Tutorials im Netz. Desweiteren stehen dir viele Bibliotheken zur Verfügung, die die Programmierung durchaus erleichtern können, indem sie komplexere Dinge, wie das Initialisieren eines Fensters, für dich übernehmen. C++ ist Objektorientiert, und ich glaube, wenn du einmal ein größeres Projekt schreibst, wirst du die Vorteile von OOP lieben lernen. =)

Was die "Komplexität" von C++ angeht, die ja angeblich der größte Nachteil für Anfänger ist, kann ich zumindest aus meiner Erfahrung sagen, daß ich keine Programmiersprache als "kompliziert" bezeichnen würde. Das Programmieren an sich, oder das Lösen eines speziellen Problems, kann, als ganzes betrachtet, kompliziert erscheinen, aber letztendlich zerlegt es man es in kleinere, einfachere Schritte und Bausteine.
Genau so geht man beim Lernen der Sprache vor. Du machst kleine Schritte, lernst die einfachen Dinge, wie das Arbeiten mit der Konsole, das Hantieren mit Funktionen und Variablen. Du gehst immer ein kleines bischen weiter, fängst an mit Pointern rumzuspielen, komplexeren Datentypen und schließlich Klassen und Objekten. Und irgendwann, ist daß was dir am Anfang so wahnsinnig kompliziert erschien, vollkommen einleuchtend und eigentlich simpel zu lösen.
Das Lernen einer Programmiersprache ist nicht kompliziert, es ist langwierig und arbeitsintensiv, und je nachdem wie gut deine Fähigkeiten im logisch abstrakten Denken sind, fällt es dir einfacher, oder schwerer als anderen. Letztendlich ist Programmieren aber kein Mysterium, was den Freaks/Geeks/Nerds, oder wie immer man sie nennen will, vorbehalten ist. Irgendwie ist es ein wenig wie Schach, abstrakt/logisch und ein wenig schwierig einzusteigen, aber wenn man einmal drin ist, läßt es einen so schnell nicht mehr los.

Den größten Fehler den Anfänger machen, wenn sie C++ lernen, ist daß sie zu hohe Erwartungen, nicht an die Sprache, sondern an sich selbst stellen. Wer seine Fähigkeiten und die benötigten Fähigkeiten der Aufgabe, die er erfüllen will, einschätzen kann, der hat gute Karten. Ich habe erst letzten Freitag mit C++ angefangen und habe mich wie ein Schneekönig gefreut, als ich einfachen Text auf der Konsole ausgegeben habe, einfach weil ich das Beispielprogramm leicht modifiziert habe und es genau so funktioniert hat, wie ich es wollte.. In zwei Monaten werde ich über das, was ich heute in C++ tue, lachen, aber jetzt ist das mich für schon ein Erfolgserlebnis und Motivation weiterzumachen..

So wer den Sinn des letzten Absatzes bezüglich des Topics nicht verstanden hat, dem sei gesagt, er dient dazu dem lieben Threadersteller ein wenig Mut zu machen, C++ trotz der Gerüchte das es "kompliziert" sei, zu versuchen.

Prodegy
13.03.2005, 09:48
Das einsteigen in eine solche Sprache ist nicht das große Problem. Dank so hübscher Scriptsprachen wie PHP habe ich ja bereits hinlänglich Erfahrung mit Bedingungen, Schleifen, Variablen, usw. gemacht!

Es geht mir eher um (siehe was ich gerade geschrieben habe) um die Wahl der Sprache. So hört man, (was MagicMagor grade dementiert hat) immer wieder von C++ als der "Masochistensprache" usw.
Des weiteren ist mir auch schon oft gesagt worden, das C++ am "gehen" ist und C# am "kommen"!
Da das erlernen einer solchen Sprache viel Zeit kostet, wäre es doch möglich, dass, bis ich z.B. C# erlernt habe, das .NET Framework weit verbreitet ist!
Oder?

Freezy
13.03.2005, 09:55
Glaub ich kaum das das Framework bis dahin weit verbreitet ist. Selbst wenn... hast du mal C++ begriffen ist der Umstieg auf C# kein ding mehr, da es ja eigentlich fasst das selbe ist (bis auf die Bibliotheken und die Methodenaufrufe).

Wenn ich eine Klasse habe die von Shape<-DrawableObject<-Object abgeleitet ist konnte man in C++ einfach Shape.Draw(arg); aufrufen. In C# muss man das von grundauf schreiben Object.DrawableObject.Shape.Draw(arg);

Mmhh... der [*tt]-Tag ist verdammt klein ._.

Jesus_666
13.03.2005, 12:25
Des weiteren ist mir auch schon oft gesagt worden, das C++ am "gehen" ist und C# am "kommen"!
Um es mit einem Slashdot-Spruch auszudrücken: Netcraft bestätigt: C++ stirbt.
C++ wird vorerst nicht von C# verdrängt werden; C# ist bis auf Teile der Syntax ganz anders als C++ und spricht eine andere Zielgruppe an. Nur mal als Beispiel: Java ist etwa um den Faktor 4 langsamer als C++, was hauptsächlich daran liegt, daß der Bytecode interpretiert werden muß und daß Java einen Garbage Collector hat. C# wird auch interpretiert und hat auch einen GC, also ist nicht damit zu rechnen, daß es annähernd so schnell ist wie C++. Also wird es für Programme, bei denen es auf die Geschwindigkeit ankommt, kaum gegen C++ einen Stich machen.
Wenn Dotnet einer Sprache Konkurrenz macht, dann Java, allerdings liegt Java in Bereichen wie der Portabilität ganz weit vorne und hat auch den Applet-Markt fest in der Hand.

Es wurde auch schon prognostiziert, daß C von C++ verdrängt wird, daß C++ von Java verdrängt wird und daß Java sich nie durchsetzen würde. Die Prognosen waren allesamt falsch.
Um meine eigene Prognose aufzustellen: Dotnet wird einen gewissen Marktanteil haben, bei Leuten die Windows verwenden und keine absolute Geschwindigkeit brauchen. Auf allen anderen Plattformen (und bei Software, die portabel sein soll) wird Java weiterhin dominieren, weil Windows sich nicht bemüht, dort Fuß zu fassen. Solange der Marktanteil von Windows im Heimuser-Markt nicht unter 75% geht wird Microsoft nichts tun, um Dotnet auf anderen Plattformen lauffähig zu machen.

DFYX
13.03.2005, 12:43
Ich hab zwar noch nich selber mit C# gearbeitet, aber das was ich an Code schon gesehen hab, sieht auch nicht unbedingt einfacher aus, als C++. Nur eben etwas anders. Aber lernen muss mans genau so.

Das Gute an C++ is halt, dass es wirklich unmengen an Bibliotheken gibt, die dir Arbeit abnehmen. Wenn du mal die Grundkenntnisse hast, wie man objektorientiert oder mit Pointern arbeitet, isses auch nich anders zu lernen als andere Sprachen. Du suchst dir ein Gebiet aus, auf dem du Arbeiten willst (z.B. Netzwerk, 2D Grafik, 3D Grafik, Anwendungen), suchst dir ein paar Tutorials und vielleicht noch Beispielcode, lernst die Befehle (Die kommen mit der Zeit eh von alleine) und experimentierst rum. Wenn du nicht alles selber machen willst, kannst du komfortabel fremden Code einbinden. Ich experimentier zum Beispiel grad mit Allegro rum. Das übernimmt Grafikausgabe, Inputs, Sound und noch ein paar andere Sachen für dich, falls du willst. Dadurch KANN man wie mit einer simplen Scritpsprache programmieren, kann aber auch komplexe Sachen selber machen, wenns nötig ist. Ich würd sagen, das kann man etwa (natürlich nicht ganz) mit den Extensions in PHP vergleichen.

Ineluki
13.03.2005, 16:23
Aloa

Ich mische mich auch mal ein ...

Ich glaube, die Entscheidung liegt einigermassen klar auf der Hand ...

Lernst du C#, dann kannst du halt am Ende C#.
Lernst du C++, dann kannst du am Ende C, C++ und hast keine (grossen) Probleme auf C# oder auf Java umzusteigen.

Wenn du einmal gelernt hast, wie eigenes Speichermannagement und Pointer usw funktionieren, dann nimmt dir ein Garbage Collector (moeglicher weise) die Arbeit ab. Hast du nur mit dem Garbage Collector gearbeitet, kannst du noch lange nicht selber Speicher verwalten.

Wenn du C++ lernst, hast du Zugriff auf eine Sprache, die sehr schnell ist. Du kannst aber immer noch bei bedarf schnell auf Java oder C# umsteigen, kannst aber jederzeit bei performance problemen zurueck kommen.

Um alles in drei Saetze zusammen zu fassen ...

Lerne zuerst C++, dann, wenn du das sehr gut beherrscht, eigne dir noch Java an, und wenn dann das Dotnet sich wirklich etabliert hat (obwohl ichs fuer Schwachsinn halte), kannst du immer noch C# dazunehmen.

Fuer die einfache Entwicklung von GUI-Programmen unter Windows ist Delphi aber auch nicht zu verachten.

MuadDib
14.03.2005, 19:32
Aloa

Ich mische mich auch mal ein ...

Dito :)

Fuer C# spricht zum einen sicher der sehr einfache Einstieg. Die Sprache ist IMO sehr gut strukturiert und hat einige nette Konzepte, die das Programmieren doch sehr vereinfachen. Die Klassenbibliothek vom .NET Framework bringt dir darueber hinaus noch eine Menge netter Funktionen mit, die du in deine Programme einbauen kannst. Ausserdem kannst du dir nicht ins Knie schiessen: C# Programme sind sicher, du kannst also quasi kaum was damit anstellen. Wenn du Windows-GUI-Programme schreiben willst, und dich nicht mit unnoetigem Speichermanagement herumschlagen willst, nimm C#.
Aber, einen großen Nachteil hat das ganze: Das Speicher und Ressourcenfressende .NET Framework, ohne dem dir die schoene Sprache nichts bringt. Darueber hinaus sind .NET Programme bei weitem noch nicht so verbreitet, wie andere. Zusatzbibliotheken ausserhalb des Frameworks gibt es kaum.

C# ist uebrigens keine Weiterentwicklung von C++. Es ist quasi Microsofts Antwort auf Suns Java.

Fuer C++ spricht natuerlich die weite Verbreitung, und die unglaubliche Systemnaehe. C++ Programme sind schnell und koennen auf so ziemlich jede Komponente deines PCs zugreifen. Noch dazu kannst du auf Linux entwickeln - dem Betriebssystem fuer C und C++. Compiler gibts auch zu Genuege, und du kannst sowohl einfache, rein funktionale Programme, als auch komplexe, objektorientierte Programme schreiben, und beliebig hin und her wechseln. C++ ist sehr maechtig, was allerdings nicht unbedingt immer ein Vorteil sein muss. Templates koennen sehr, sehr unangenehm werden (bei den Typen von Reachin.se muss ich mich bei Zeiten fuer ihre unglaublich "umfangreiche" API beschweren), und es ist nicht unmoeglich, dass man sein System ordentlich in die Knie zwingt, bzw. es zum erbarmungslosen Stillstand zwingt (was mit C# auch moeglich ist, allerdings hat da weniger die Sprache was mit zu tun, eher das Betriebssystem).
Fuer Grafikdinge fuehrt kein Weg dran vorbei, persoenlich bin ich allerdings schon ziemlich von der Sprache angewidert, viel lieber habe ich da

C - meine Lieblingssprache. C hat keine Objektorientierung, wer sich nach ANSI Standard haelt hats schwer mit Kommentaren, und man ist auf ekelhafte globals angewiesen. Ausserdem erzwingt es die Modulasierung nicht, wie beispielsweise Java oder C#. Dafuer ist das IMO die Sprache fuer kleine Arbeiten. Wenn ich schnell einen Parser oder irgendein Systemtool schreiben moechte, starte ich vi und programmiere mir ein paar Funktionen runter. Auch fuer Grafikdinge sehr zu empfehlen, genauso wie fuer irgendandere High Performance Sachen. Auch wenn man bei Weitem nicht derartig maechtig ist, wie mit C++, kann man doch ordentlich viel damit anstellen.
Ausserdem, wenn du kompletter Anfaenger bist, der sich noch mit grundlegenden Algorithmen herumschlagen musz, soll diese einfach damit eintippseln.

Nunja, entscheiden musst du es selbst :)

Latency
14.03.2005, 19:48
C# ist uebrigens keine Weiterentwicklung von C++. Es ist quasi Microsofts Antwort auf Suns Java. Ist das nicht J#?

MuadDib
14.03.2005, 20:29
Ist das nicht J#?
Wie man es sieht. J# ist Microsofts Java Implementierung, die sie halt ins .NET Framework integrierten, aus welchen Gründen auch immer (IIRC hat Microsoft ja damals mit Sun zusammen an der Sprache entwickelt). Die Antwort allerdings darauf ist C#, mit der sie angebliche Fehler bzw. Umständlichkeiten von Java ausmerzten (nachdem sich IIRC Sun von Microsoft getrennt hat). Richtig müsste es also heissen: .NET zusammen mit C# ist die Antwort auf Suns Java Virtual Machine :)

(Was solls, J# verwendet eh keiner...)

Jesus_666
14.03.2005, 20:37
Richtig müsste es also heissen: .NET zusammen mit C# ist die Antwort auf Suns Java Virtual Machine :)
Und mit VB.NET, das an sich C# mit Basic-Syntax ist. Die Dotnet-Sprachen unterscheiden sich hauptsächlich durch die Syntax; intern tun sie im Wesentlichen alle das Gleiche.

Prodegy
14.03.2005, 21:29
Orginalzitat von Ineluki:
Lernst du C#, dann kannst du halt am Ende C#.
Lernst du C++, dann kannst du am Ende C, C++ und hast keine (grossen) Probleme auf C# oder auf Java umzusteigen.

Geht das andersherum nicht? Ich meine, wenn ich C# kann, kann man etwa nicht, vielleicht mit ein paar mehr Schwierigkeiten als andersherum, auf C++ umsteigen? Ich höre immer wieder dass C# leichter zu erlernen ist als C++. (Schließlich fährt man auch erst mit Stützrädern und nimmt diese dann weg und nicht andersherum.) Oder?


Orginalzitat von MuadDib:
Aber, einen großen Nachteil hat das ganze: Das Speicher und Ressourcenfressende .NET Framework, ohne dem dir die schoene Sprache nichts bringt. Darueber hinaus sind .NET Programme bei weitem noch nicht so verbreitet, wie andere.

Aber das wird sich doch vermutlich ändern. Spätestens ab Longhorn wird afaik sich das .Net Framework rasch verbreiten, und Longhorn soll bereits 2006 erscheinen. Als, Quereinsteiger bin ich vor diesem Zeitpunkt sowieso nicht in der Lage Sinnvolle Programme zu erstellen, und bis ich soweit bin ist das sicher im Umlauf. Oder?


Orginalzitat von MuadDib (im Bezug auf C++):
Fuer Grafikdinge fuehrt kein Weg dran vorbei

Was fällt genau unter den Bereich "Graphikdinge"?

MuadDib
14.03.2005, 21:39
Geht das andersherum nicht?
IMO ja. Ich hab (erst nach Basic und Pascal) mit Java angefangen, dann C, C++ und C# gelernt, und irgendwie tat ich mir leichter, mit Restriktionen in der Sprache und deren Eigenheiten umzugehen, als andersrum :). Ausserdem bin ich immer noch der Meinung, dass "Programmieren koennen" ziemlich sprachunabhängig ist.


Als, Quereinsteiger bin ich vor diesem Zeitpunkt sowieso nicht in der Lage Sinnvolle Programme zu erstellen, und bis ich soweit bin ist das sicher im Umlauf. Oder?

Moeglich - .NET wird sich auf der Windows Plattform so oder so durchsetzen, immerhin machen die Leute in Redmond ihre GUIs ja auch schon damit... . Du bezeichnest dich uebrigens immer wieder als Quereinsteiger, hast du denn schon Programmiererfahrung?


Was fällt genau unter den Bereich "Graphikdinge"?
3D Grafik. Also Dinge, die High Performance brauchen. Fuer hardwarenahe Grafik sind einfach Frameworks wie Java oder .NET zu langsam - auch mit ihren nativen Bibliotheken. Der Overhead, der durch die Virtual Machine entsteht, ist einfach noch zu grosz.
Fuer Bildverarbeitung und Pixeldinge reichts allerdings aus.

Jesus_666
14.03.2005, 21:51
Aber das wird sich doch vermutlich ändern. Spätestens ab Longhorn wird afaik sich das .Net Framework rasch verbreiten, und Longhorn soll bereits 2006 erscheinen. Als, Quereinsteiger bin ich vor diesem Zeitpunkt sowieso nicht in der Lage Sinnvolle Programme zu erstellen, und bis ich soweit bin ist das sicher im Umlauf. Oder?Allerdings wird sich Longhorn nicht schnell verbreiten. Der Betriebssystemmarkt ist gesättigt und 90% der User sind mit dem, was sie haben, absolut zufrieden. Longhorn wird sich nicht annähernd so schnell verbreiten wie 95 das getan hat. Außerdem wird nicht mit dem Erscheinen von LH plötzlich alles auf Dotnet umgestellt; ich rechne mit einer Übergangszeit von 12 bis 18 Monaten.

Bei Dotnet stellt sich auch die Frage, ob die Entwicklergemeinde es annehmen wird. Immerhin dürften Dotnet-Anwendungen auch bei starker Integration des Frameworks in das Betriebssystem langsamer als ihre C++-Gegenstücke sein; dazu kommt noch, daß alle Anwender, die nicht LH benutzen, erst das Framework installieren müssen.
Dann ist da noch das Problem, daß Java bereits jetzt in etwa das ist, was Dotnet mit Longhorn sein soll. Man könnte also auch Java lernen und eventuell später auf J# umsteigen; es werden mit sicherheit mehr Java- als Dotnet-Programmierer gesucht.



Was fällt genau unter den Bereich "Graphikdinge"?Animationen. Spiele. Alles, was über Schaltflächen und Fenster hinausgeht. Das kann man auch alles in Java oder Delphi machen, in der Regel ist C++ aber die beste Sprache dafür.

Ineluki
15.03.2005, 09:02
Geht das andersherum nicht? Ich meine, wenn ich C# kann, kann man etwa nicht, vielleicht mit ein paar mehr Schwierigkeiten als andersherum, auf C++ umsteigen? Ich höre immer wieder dass C# leichter zu erlernen ist als C++. (Schließlich fährt man auch erst mit Stützrädern und nimmt diese dann weg und nicht andersherum.) Oder?


Ich will es mal etwas bruesk formulieren ....

Mit C# lernst du eine Programmiersprache.
Mit C++ lernst du eine Philosophie.

Wenn du C++ lernst, lernst du automatisch essenzielle Konzepte mit, die du in nahezu jeder anderen Sprache auch brauchen kannst, oder zumindest beruecksichtigen musst.
Bei C# ist alles viel mehr ein schwarzer Kasten, an dem irgendwelche Knoepfe sind, und der dann irgendetwas macht. Mit C++ hast du einen Blick in das Getriebe. Du lernst automatisch, wie ein Computer funktioniert. Das einzige, was dazu noch besser ist, ist Assembler.

C++ ist nicht schwer zu lernen.
Den Syntax der Sprache hast du in zwei Tagen intus.
Das was viele bei C++ als "schwer" empfinden, sind die Konzepte, die da hinter stehen.
Allerdings wirst du um diese Konzepte nicht herum kommen, wenn du mit anderen Sprachen arbeitest, allerdings wird dir dort oft viel Arbeit abgenommen und in den Hintergrund verschoben, so dass die Konzepte nicht so klar heraus kommen.

Es hat schon seinen Grund, warum C++ die weitverbreitetste Programmiersprache weltweit ist.

Noch eine Bemerkung zu C.
C ist im Prinzip eine echte Untermenge von C++. Du kannst mit C++ genau so schnelle und einfache C Programme schreiben. Es zwingt dich doch keiner C zu verwendene ^^

Schlussendlich ist es uns ziehmlich egal, welche der Sprachen du lernst. Du hast nach unserer Meinung gefragt, und ich tendiere darin eindeutig zu C++. Was du letztlich nun mit diesem Wissen anfaengst, ist dir ueberlassen. Wenn du meinst C# ist trotzdem besser, dann lerne halt das. Nur wuerde ich mich nicht auf die Aussage von anderen verlassen, die behaupten C++ sei um groessenordnungen schwerer als C#. Finde es selber raus, befasse dich ein paar Tage mit den Syntaces der drei Sprachen und entscheide dann selber.

Prodegy
15.03.2005, 19:28
Sicher, schließlich muss ich mich dann selber entscheiden, was ich benutze!
Mir ging es ja nicht darum, welche leichter ist, erlernen kann man sie sicher alle1

Aber ich wollte/will nur in Erfahrung bringen (siehe Thread titel) was man mit welcher Sprache am besten, oder gar nicht machen kann, sodass ich mir später keine Möglichkeiten verbau, weil ich die falsche Sprach erlernt habe!

Deshalb wüsste ich (hab ja schon aller hand erfahren) gerne, was halt mit welcher Sprache am besten geht! (Scheinbar mit C++ alles!)

Дlυсаrδ
22.03.2005, 16:46
also...

C
Wurde damals in den 1970er Jahren für das Betriebssystem Unix erfunden. Sehr stabile Sprache, mit der man manche Programme schreiben kann, die sonst nur mit Assembler realisierbar wären.

C++
C++ erweitert die Programmiersprache C im Prinzip um einige Funktionen. Dazwischen gab es noch Sachen wie "C with classes". Bjarne Stroustrup entwickelte schließlich C++. Neu sind hier die Möglichkeiten zu Objektorientierten Programmierung (OOP), Klassen, die Standard Template Library und noch so einiges. (ich selbst code C++)

C#
Erste Ansetze im Jahre 2000, wirklich offiziell wird C# (gesprochen C sharp) Januar 2002, als .NET samt SDK und Visual Sudio 2002 vorgestellt werden. C# soll die Standard-Sprache für .NET - ein Satz von microsoft-eigenen Technologien - werden. C# (und .NET) sind vor allem gegen SUN Java gerichtet, jedoch nur für Windows verfügbar (okay, es gibt derzeit Projekte unter Linux). C# ähnelt C und C++ natürlich etwas, jedoch laufen damit geschriebene Programme meiner Meinung nach wesentlich langsamer, wer kein besonderes Interesse an .NET hat sollte die Finger von C# lassen.

Soweit, so gut. Übrigens gibt es dann noch "Managed Extensions for C++", um .NET direkt in C++ zu implementieren (von Microsoft natürlich...). Doch es gibt auch zahlreiche Programmiersprachen in denen kein C vorkommt...

C++ ist meiner Meinung nach die empfehlenswerteste Sprache, weil sie OOP bietet, aber nicht erzwingt und gleichzeitig keine Sprache ist, die sich NUR aus fertigen Funktionen zusammensetzt. Wenn man C++ (oder auch C) einmal einigermaßen beherrscht, kann man schnell eine andere Programmiersprache lernen.

altertoby
06.04.2005, 18:19
so da hier fast durchweg c# als lahme nicht zu empfehlende sprache dargestellt wird:
>:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:(
werde ich c# und das .net framework verteidigen!
:eek: :eek: :eek:
das sind alles unterschiede von c# zu c++/c
- Zwischencode für Laufzeitumgebung,
- JIT (Just-In-Time-Compiler),
- Garbage Collection (automatische Speicherfreigabe),
- Sicherheitssystem mit Autorisierung,
- Exceptions (statt Fehlermeldung per Return-Code),
- Inspection (Schnittstellenbeschreibung in der Komponente, keine Einträge in Windows-Registrierung).
- strengere Objektorientierung,
- keine Mehrfachvererbung (multiple Inheritance), nur Einfachvererbung,
- Schnittstellenkonzept,
- sicherere Typprüfung,
- keine direkten Zeiger (nur Referenzen),
- die Operatoren '::' und '->' entfallen, nur '.' wird verwendet,
- boolsche Variablen werden nicht mehr durch ein int repräsentiert, sondern haben einen eigenen Typ,
- char ist ein 16 Bit breites Unicode-Zeichen,
- Arrays sind managed Types mit Bereichsüberprüfung,
- es gibt keine globalen Funktionen, Variablen oder Konstanten mehr,
- es gibt keine .h-Header-Dateien mehr (Deklaration und Definition sind kombiniert),
- es gibt keine Präprozessor-Makros mehr und
- es gibt keine Lib- und keine Obj-Dateien mehr.
und jetzt der für mich größte vorteil:
man kann mit c# sowohl windowsapplication, webapps und spiele programmieren http://www.multimediaxis.de/images/smilies/old/sm_12.gif
die spiele programmierung ist zwar erst im kommen (s. z.b. Aximo) aber besonders bei größeren spielen dürfte der GC einen performance GEWINN mit sich bringen, da nicht benötigte ressourcen wieder freigegeben werden! dies kann man meines achtens auch bei c++ manuel machen, dann ist es aber immernoch eine starke erleichertung des progrmmierens...
habe ich eigentlich schon die enorme stabilität aufgeführt? :p
und das mit der portierbarkeit: da habe ich gerade auch ein kleines problem, der user muss einmal ganze 23 mb mehr runterladen, das ist besonders im zeitalter von dsl und isdn ein enormes problem :confused: :confused:
und wegen umstieg auf andere programmiersprachen: als ich auf der messe (GC [habe leider keine c# programmierer gefunden, aber dafür ein paar tolle webseiten^^]) c++ Code gesehen habe, wusste ich fast immer was dieser "schnippsel" machen soll...
verstehen und selber proggen ist zwar noch etwas anderes aber trotzdem ;)

@all vorposter: auf die plätzte, feritg, **diesen artikel zerfetztend** los :eek:

EDIT: habe vorhin irgendwo als nachteil gesehen dass man yy.xxx.eee.r() statt nur r() schreiben muss! mit der using anweisung yy.xxx.eee kann man dann auch alle funktionen, eigenschaften direkt verwenden! das ist nunmal das system von der wiederverwendbarkeit http://www.multimediaxis.de/images/smilies/old/s_009.gif

Jesus_666
06.04.2005, 19:04
so da hier fast durchweg c# als lahme nicht zu empfehlende sprache dargestellt wird:
>:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:(
werde ich c# und das .net framework verteidigen!
:eek: :eek: :eek:
das sind alles unterschiede von c# zu c++/c
[Liste von Unterschieden]
Die treffen zum größten Teil auch auf Java zu.


und jetzt der für mich größte vorteil:
man kann mit c# sowohl windowsapplication, webapps und spiele programmieren http://www.multimediaxis.de/images/smilies/old/sm_12.gif
Das ist sowohl mit C++ als auch mit Java genauso gut möglich. Zugegeben, die Webprogrammierung mit C++ (via ActiveX) ist absolut nicht empfehlenswert, aber es ist möglich.


besonders bei größeren spielen dürfte der GC einen performance GEWINN mit sich bringen, da nicht benötigte ressourcen wieder freigegeben werden!
Eher nicht. Das Überwachen der Referenzen, wie es der GC tut, macht die Anwendungen in der Entwicklung schneller und in der Ausführung theoretich sicherer, geht aber auf die Ausführungsgeschwindigkeit. Neben dem Bytecode-Interpreter ist der GC einer der Hauptgründe, warum C++ viermal schneller als Java ist - und bei Dotnet wird sich das nicht anders verhalten.


habe ich eigentlich schon die enorme stabilität aufgeführt? :p
Dotnet-Applikationen sind zwar gegen Speicherlecks relativ gut geschützt (einen vollständigen Schutz bietet auch ein GC nicht), können aber bei schlampiger Programmierung immer noch Ärger machen. Wenn man Pecht hat erwischt man eine Schwachstelle in der VM und alle laufenden Dotnet-Programme schmieren ab.
Mit Java geht das genauso gut... Jede Programmiersprache ist letztendlich nur so sicher wie der Programmierer kompetent ist und jedes System kann einem im Ernstfall Probleme bereiten.


und das mit der portierbarkeit: da habe ich gerade auch ein kleines problem, der user muss einmal ganze 23 mb mehr runterladen, das ist besonders im zeitalter von dsl und isdn ein enormes problem :confused: :confused:
Mono (http://www.mono-project.com/Main_Page) ist 28 MiB groß und läuft nur auf x86, s390, SPARC, HPPA, StrongARM und PowerPC. Außerdem unterstützt Mono nicht die gesamte Dotnet-API - man kann Dotnet-Anwendungen also nicht immer ausführen oder sie verhalten sich nicht korrekt.


EDIT: habe vorhin irgendwo als nachteil gesehen dass man yy.xxx.eee.r() statt nur r() schreiben muss! mit der using anweisung yy.xxx.eee kann man dann auch alle funktionen, eigenschaften direkt verwenden! das ist nunmal das system von der wiederverwendbarkeit http://www.multimediaxis.de/images/smilies/old/s_009.gif
Es war zu erwarten, daß Microsoft sowas implementiert - das gibt es in jeder brauchbaren OO-Programmiersprache.


Ich bin nach wie vor der Ansicht, daß Dotnet einfach das imitiert, was Java bereits ist - und ich betreue lieber Sun (die es mit der Portierberkeit wirklich ernst nehmen) mit der Entwicklung einer global portierbaren Programmiersprache als Microsoft. Allein schon deshalb weil Microsoft einer der großen Betriebssystemhersteller ist und Sun weder mit Solaris noch mit JDS genug Marktpräsenz hat, um sich so aufzuführend, wie es der Gorilla aus Redmond öfters tut.


BTW, willkommen im Forum, speziell in unserer kleinen Ecke hier. Viel Spaß im Ring.