C++ Unterschied zwischen C# und C++

ali7566

Lieutenant
Registriert
Feb. 2007
Beiträge
980
Hallo,

ich habe eine kurze frage,

und zwar geht es darum das ich 2 Jahre lang in der Fachoberschule Java gelernt habe und ab dieses Jahr Technische Informatik studieren werde.

In der Hochschule in der ich Studieren werde, wird C# unterrichtet, was sich ja nicht allzu von Java unterscheiden soll. Nun jedoch zu meiner Frage, ich habe jetzt ca. 4 monate vor meinem Studium ein bisschen angefangen mich mit dem Programmieren auseinander zu setzen.

Jedoch war ich letztens in der Buchhandlung und habe ein Anfängerbuch zu C++ gefunden was sich vor allem mit der Entwicklung von kleinen Minispielen wie vier gewinnt, puzzle oder galgenmännchen auseinandersetzt. Das Buch hat meine interesse geweckt und so habe ich es mitgenommen.

Jetzt frage ich mich jedoch ob es überhaupt viel sinn macht mit c++ anzufangen wenn ich sowieso C# programmieren muss.

Sind die Sprachen ähnlich ?

Ich habe mal das Buch etwas angeguckt und mir ist aufgefallen das viele sachen genauso wie bei Java sind nur etwas komplexer meiner Meinung nach.

Kann ich mit C++ weitermachen oder sollte ich direkt mit C# beginnen ?

gruß Ali
 
Ach sicher lohnt es sich. Prinzipiell ist es ja eh so, dass Programmiersprachen sich was zumindest die Denkweise angeht ähneln. Kannste eine kannste alle hat mal nen Prof bei mir gesagt. Außerdem basiert ja eh C++ auf C .. das ist auch historisch recht interessant was sich da so geändert hat.
Das wird auch sicher nicht deine einzige Programmiersprache bleiben, die du in deinem Studium lernen wirst.

Und by the way was jetzt nicht böse gemeint ist: Mit der Einstellung immer nur den Minimalaufwand betreiben zu wollen kommt man nicht sehr weit im Studium.
edit: seh gerade ging um c sharp und nicht um c.. trotzdem alles das gleiche quasi.. du lernst nicht für die uni sondern für dich.. doofer spruch den man schon aus der schule kannte, der aber erst in der uni seine berechtigung bekommt
 
Zuletzt bearbeitet:
C++ lohnt sich immer. Finde ich unverzichtbar als Informatiker. C# ist zwar mein persönlicher Favorit und Java verabscheue ich total, aber C/C++ musst du wahrscheinlich sowieso irgendwann können, wenn du es in deinem späteren Beruf brauchst.
Außerdem, wenn du C/C++ verstehst, dann ist C# noch leichter, als es sowieso schon ist ;)
Etwas komplizierter ist es schon, aber es lohnt sich.
 
Zuletzt bearbeitet:
Also von den Syntax her ähneln sich die Sprachen aber da C++ schon sehr von "zeigern/pointern" geprägt ist entstehen da zum Beispiel zu Java schon große unterschiede.

Ebenfalls sind c++ und c# (da bin ich leider nicht so mächtig um große sprüche zu klopfen) auch unterschiedlich...

Ob es sich lohnt verschiedene Programmiersprachen zu lernen? Na dann frag dich doch auch mal was sich "schulisch" mehr lohnen würde. Nur deutsch zu lernen oder Englisch und eine weitere Sprache noch dazu??

Also negativ wirkt sich das wohl nie aus. (außer verwechslungen vielleicht^^)
 
Wenn du java kannst wird dir c# leichtfallen...

und c++ ist nie verkehrt, wenn du nicht grade webentwickler wirst, wirst du c++ garantiert brauchen...
 
Wenn du etwas sinnvolles lernen möchtest, dann mach dich in OOP allgemein fit. Das kannst du auch anhand Java gut weiterbetreiben und dann auf C# und andere übertragen.
Nach meinen Erfahrungen mit Schulischen Programmierunterricht kam dabei wahrscheinlich auch bei euch sehr wenig herum wie man komplexe Softwaresysteme entwirft. Interessant sind da neben Grundlagen Objektorientierter Programmierung auch Objektorientierte Analyse und Entwurf, Entwurfsmuster, Domain Driven Design um ein paar Themen zu nennen.

Wie wäre es denn wenn du kleine Projekte machst um deine Grenzen auszuloten?
Gut für die Motivation ist da immer Spieleentwicklung. Dafür bietet gerade Java alles was man braucht aus einer Hand und gut dokumentiert, und man kann sich auf das wesentliche Lernziel konzentrieren, d.h. möglichst sauberen Entwurf hinzubekommen (stark koheränt u. lose gekoppelt, Schichtenarchitektur, ...).

Ich bin aber ebenfalls der Meinung, dass man nie genug Programmiersprachen kennengelernt haben kann. Im Berufsleben kannst du dir je nach Bereich auch nicht immer aussuchen womit du gerade programmieren möchtest und musst dich für Projekte in neue Sprachen einarbeiten.
 
C# wird leichter zu lernen sein als C++.
Ob man C++ garantiert brauchen wird sei mal dahingestellt. Garantieren kann man nichts...

Aber man sollte auch nicht vergessen: Programmieren ist wie Autofahren. Am Anfang fühlt man sich nur in einem Auto wohl (dem eigenen, das der Eltern, halt das Auto, das man ständig fährt). Mit zunehmender Erfahrung kommt man aber auch besser mit anderen Autos zurecht...

Es stimmt schon: Je mehr Sprachen man kennt, desto besser. Sich heute für C# zu entscheiden heißt nicht, dass man nie C++ lernen kann. Mit zunehmender Erfahrung fällt es leichter, sich in anderen Sprachen zurechtzufinden. Wichtig ist aber am Anfang erst mal ein grundsätzliches Programmierverständnis zu bekommen. Das kann leichter fallen, wenn man - wie beim Autofahren - erst mal beim bekannten bleibt... wenn du dich in Java sicher fühlst, dann dürfte der Schritt zu C# nicht allzuschwer fallen und du kannst es durchaus probieren, dich selbst in C++ einzuarbeiten.

Du kannst dir auch XNA anschauen, wenn du gerne in die Richtung Spiele gehen willst...
 
Im dir auch mal aus der Sicht eines Anfängers was mitgeben zu können. :)

C++ und C# haben viel gemeinsam, was die Syntax angeht.
Aber genauso unterschiedlich ist es in anderen Bereichen, finde ich.

Zeiger kannst mal gleich wieder wegpacken, weitestgehend.
C# hat da zwar auch was, aber das kannst du nicht vergleichen.

Spaß machts auf jeden fall, wenn du von der Windows API Gebrauch machen willst.
Nicht alles ist in .NET umgesetzt und du musst Funktionen aus den C/C++ APIs aufrufen.
Geht eigentlich auch recht einfach, gibt aber hier und da ein paar Stolperfallen.

Gibts nicht auch J# für .NET? Ich weiß aber nicht wie stark das am original Java dran ist.

Lern C und C++, es macht Spaß und scheint ja hier auch empfohlen zu werden. :D
 
Mit 2 Jahren Java-Erfahrung kannst du sicher schon genug - ich würd eher Mathe wiederholen für dein Informatikstudium.
Die einzig große Lücke trotz Java-Erfahrung wirst du beim Thema Pointer und Referenzen haben. Die sind in C# nämlich auch Möglich.
Diese in C++ zu lernen wäre wahrscheinlich die ideale Vorbereitung.
Das kann man auch ohne viele andere C++-Kenntnisse machen
 
Zuletzt bearbeitet:
Zeiger sind in C# zwar möglich, aber sollten möglichst nicht verwendet werden. Zeigerarithmetik macht jegliche Typsicherheit zunichte.
 
Zeiger sind der größte Mist, Java ist in Sachen Crossplatform natürlich vorteilhafter, wobei das mit QT und C++ auch funktioniert, mit C#, kenne ich mich nicht aus, aber wenn ich mich erinnere ist es .Net. Somit ist das Crossplatform technisch sowieso nicht drin. Was heute eher wert gelegt wird.

Sobald man sehr tief in die Hardware geht, ist C++ oder C# besser als Java. Java finde ich noch komplexer als C++, aber ist reinste Gewöhnungssache.
 
C# und Hardware?

Bei C# hast, wie bei Java, nach dem übersetzen des Programms Bytecode.
.NET basierte Software ist somit ebenso portabel, die Spezifikationen sind offen.
Als Beispiel sei mal Mono genannt: http://www.mono-project.com/What_is_Mono

Okay es ist von M$. Aber hey, nicht alles ist Schrott was die Leute da produzieren. :)

@SheepShaver
Kann man in C# auch so viel mit Zeigern machen, dachte es ist sehr eingeschränkt?
Referenzen im Sinne von Ref und Out oder was hast du gemeint.

Muss ich mir wohl doch nochma ansehen. :)
 
Zuletzt bearbeitet:
C# ist im Prinzip erstmal leicht zu lernen. Bis man es beherrscht vergeht aber sehr sehr viel Zeit, dies liegt vor allem am .Net Framework.
Was das alles bietet ist großartig, wenn man aber nur einen Bruchteil kennt, macht man es sich wirklich schwer.

Die Syntax mag an C angelehnt sein, die größten Übereinstimmungen findet man aber bei Delphi/Turbo Pascal, dies liegt unter anderem daran, dass C# mit vom Entwickler von Trubo Pascal designed wurde.

Ob Java Kentnisse einen bei C# soviel weiter bringen würde ich auch in Zweifel ziehen, sicherlich auch hier gibt es einige Übereinstimmungen und doch ist das Net Framework eine Sache für sich.

Schon daran ist vor allem, dass man mit C# + XAML sowohl Silverlight als auch WPF Applikationen schreiben kann und auch der Bezug zu Webservices und ASP.Net macht es einfach auf Basis der Windows Plattform zu variieren.

Solange man sich strikt an die standardisierten Methoden hält, ist auch eine Kompatibilität durch Mono gegebenen, man sollte aber mindestens eine Framework Generation abwarten.

Ob man C++ in Zukunft noch soviel brauchen wird wage ich in Zweifel zu ziehen, Prozessoren erhalten immer mehr Einheiten zur Unterstützung der VMs die managed Code Sprachen ihre Vor sowie Nachteile geben.
Eingrundlegendes Verständnis von C sowie C++ schadet allerdings nie - wobei ich eher funktionale Programmiersprachen in die nähere Auswahl nehmen würde, auch hier sehr schön: Mit F# bleibst du beim gewohnten Net Umfeld.

Welche Uni lehrt denn C# statt Java?
 
Mein ziel ist es später einmal Spieleprogrammierer zu werden, deshalb bin ich ziemlich unschlüssig. Denn für das XNA wird ja C# zum programmieren verwendet. Ich will eben nur sicherstellen das ich später nicht durcheinander komme wenn ich C++ lerne und in der Schule dann mit C# beginne.

Obwohl ich aber sagen muss das ich mit meinen Java kentnissen den C++ code in den Büchern ganz gut verstehe.
 
Wo wir wieder bei "kannste eine, kannste alle" sind. :)

Durcheinander wirst schon nicht kommen, mit bissel Übung wird das schon.
Lad dir mal Visual Studio Express runter. Hast C++ und C# IDE mit bei.
Kostet auch nichts. Bei C++ fehlen dann halt die MFC Bibliotheken, aber denke mal für den Anfang wirds reichen.

Dann kannst gleich C++ lernen und lernst auch schonmal mit Visual Studio umgehen.

Halt dich nit auf mit überlegen, mach was. :)
 
wenn du eine sprache kannst, dann kannste alle. Das stimmt auch.
Die Logik bleibt ja immer die selbe. ein IF ist immer ein IF, eine FOR ist immer eine FOR, egal weche sprache.
Ich lerne in der Schule delphi. Dann hab ich mir kurz mal C++ runtergeladen und konnte sofort loslegen mit proggen,ist ja nur die Syntax die ändert.Klar musste die neuen befehle halt kennen(internet^^) aber es bleibt immer das selbe
 
Bei simplen Dreizeilern mögen die Unterschiede gering sein. Zwischen objektorientierten Sprachen sind die Unterschiede oberflächlich gesehen oft vergleichsweise gering, kratzt man etwas mehr als nur an der Oberfläche, dann sind aber durchaus größere Unterschiede vorhanden. C# hat eigentlich am meisten mit Java gemeinsam und nicht mit C++. Angefangen bei strikter Objektorientierung (Javas primitive Datentypen außen vor), Mehrfachvererbung nur über Interfaces, Adressierung über Referenzen, Boxing etc.

Der Unterschied in der Syntax und in geringerem Umfang der Semantik zwischen den Sprachen mag manchmal gering sein, konzeptionell sind die Unterschiede aber erheblich.
 
Eine neue Syntax zu lernen geht schnell, keine Frage. Ein sehr umfangreiches Framework wie das .NET wirklich gut zu kennen ist allerdings eine ganz andere Sache dich sich ganz schön in die Länge ziehen kann. ;)
 
Du solltest dich wie bereits Vorgeschlagen erstmal auf Mathematik konzentrieren.
Die höhere Mathematik die du dort haben wirst, ist mit der Kindergartenmathematik nicht gleichzusetzen. (wirst du außerdem beim Programmieren benötigen, vor allem bei Berechnung ala Kollision etc.)

Programmiererfahrung hast du bereits und das Verständnis auch, also wird der Sprung zu C# nicht schwer fallen.

Lade dir Visual Studio Express edition hinunter (c#, c++) und probiere einfach aus. (google)

Daher du ja schon mit Java Programmiert hast und dadurch OOP dir schon ein Begriff sein sollte, ist der Rest nur noch nachlesen, die meiste Zeit wirst du nämlich damit verbringen dir einen "Überblick" über das mächtige .NET Framework zu verschaffen. (Im Sinne von raus suchen was du brauchst)

Anfangs kannst du ja ganz simple Programme machen um ein "Gefühl" für C# und vor allem für Visual Studio zu bekommen, viel Erfolg :)

P.S Bleib bei einfachen C#, zusätzliche Dinge ala XNA werden dich nur verwirren (oder eher verunstalten) und sollten erst angewendet werden wenn du schon bereits gut mit C# und VS umgehen kannst. (Damit du es auch richtig lernst)
 
Meiner Meinung nach ist C ganz gut als erste Programmiersprache in einer längeren Ausbildung, um einmal die Grundlagen zu lernen. Danach würde ich auf C#/VB.NET oder Java umsteigen, wobei Java eigentlich nur den Vorteil hat, dass es auch auf Linux läuft. Wenn man darauf nicht angewiesen ist, dann ist man mit .NET besser dran. Ich bevorzuge hier VB.NET, weil sich meiner Meinung nach die Syntax besser mit den Möglichkeiten einer aktuellen Entwicklungsumgebung verträgt (z.B. IntelliSense für Groß/Kleinschreibung, automatische Erkennung von Strichpunkten etc.)

C++ hat meiner Meinung nach keine Daseinsberechtigung mehr außer für bestehende Projekte. Wilde Pointerei in Kombination mit objektorientierter Programmierung verträgt sich meistens nicht wirklich. Zum Lernen ist es auch absolut ungeeignet, da man mehr mit der ganzen Speicherverwaltung, Pointerei, Prüfen von Rückgabewerten beschäftigt ist, als mit der objektorientierten Programmierung an sich.
 
Zurück
Oben