C++ VS C# ? Was nutzt ihr?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • JanNIS schrieb:

    "basieren auf" =/= kompiliern ...
    tut mir leid aber da am Anfang (heutiger PCs) Assemble war (A0 etc. nicht mitgerechnet, da es für "unmoderne PCS" da war und nur mathematische log. umwandelte), als erster Versuch den unlesbaren Maschienncode zu symbolisieren

    JanNIS schrieb:

    Ich frag mich welche höhere Sprache direkt auf Maschinencode übersetzt XD
    Das wär als würdest du japanische Schriftzeichen mit deutschen Buchstaben vertauschen, es gibt zwar im japanischen auch
    Nonsiblen, a,o,u,e,i aber Automobil wär nicht Automobil sondern "ōtomobiru"

    Öhm, so gut wie fast jede? Wenn du beispielsweise beim gcc nicht das -S flag setzt, dann wird zu Maschinencode übersetzt, nicht zu Assembler.
    Und so ganz nebenbei: a, o, u, e und i sind im Japanischen Silben. Selbst das einzelne n ist eine Silbe. Besonders wichtig bei Konstruktionen wie 愛 (あい) (ai), was ebenfalls als 2 Silben zählt da es im Japanischen keine Diphtongierung gibt.

    JanNIS schrieb:

    Sicherlich gibt auch komp. mit direktem Weg aber die wandeln nicht einfach "x=1" in "10111011" um sondern analysiern erst mal den gesamten Code
    und "bauen ihn um" sodass er fehlerfrei übersetzt werden kann.

    Das habe ich ja auch nicht bestritten. Der Code wird meist in eine Zwischendarstellung übersetzt und von dort aus dann in der letzten Stufe in Maschinencode. Trust me, ich schreibe selber Compiler.

    JanNIS schrieb:

    selbst das ist lesen und schreiben und logische Operation sind rechnen, Dualesrechnen funktioniert im Rechenregister des HP nur
    mit OR/AND/XAND/NEG sowie alles andere auch.

    Soso, wir können natürlich noch ne Ebene tiefer und uns nur die Elektronen angucken, das bringt aber nichts. Der Punkt war dass man bei purem Assembler z.B. die Typinformationen verliert bzw. gar nicht erst zur Verfügung hat.

    JanNIS schrieb:

    klar kannst auch in C machen, aber da Hochsprachen definitiv langsamer sind und mehr Speicher brauchen und nur Assemble so Hardware nah ist das es die kompletten Bandbreite ausnutzt - (der Compiler einer höheren Programmiersprache erzeugt meistens mehr Code, weil er stark generalisiert geschrieben werden muss) Ich weiss das manche Treiber von Linux in C geschrieben sind, aber dass nur weil Linux das "erlaubt" und umwandeln kann.
    Das Problem ist du willst einem Chip grade sagen (C) dass er leuchten soll, dabei weiss er garnicht was "leuchten" bedeutet er ist ein CHIP!
    Dazwischen muss ja irgendwas passiern grenzt ja an einem Computer-Qualia problem XD


    Du kannst also optimierten Assemblercode schreiben als ein Compiler ihn erzeugen kann? Wieviel Speicher ein Programm in einer Hochsprache verbraucht ist abhängig von der Qualität des Compileres un den Fähigkeiten des Programmierers. Und nur manche Treiber von Linux sind in C geschrieben? Schnapp dir mal die Sourcen und werf einen Blick in den Kernel. Um deinem Beispiel zu folgen: um dem Chip zu sagen dass er "leuchten" soll kann man die API des Kernels nutzen. Es ist sogar möglich einen ganzen Kernel und Treiber in C# zu schreiben und dennoch die volle Kontroller über Chips zu besitzen.

    JanNIS schrieb:

    Das mit Kernel (s.o) Der Typ der alles organsiert, auf dem alles basiert soll also deutsch reden, aber seine Mitarbeiter sind Computerchips?
    "Arbeitet ihr Chips!!" "Wieso hört ihr nicht!" :D

    Der Kernel organisiert lediglich wer was darf und was er an Resourcen bekommt.

    JanNIS schrieb:

    Bluescreen => meistens Treiberfehler meistens "irql_not_less_or_equal" bedeutet meistens ein Treiber greift auf ein Datensegment zu auf das er nicht zugreifen darf (da ist dein Schutz)

    Das war dann beispielsweise ein Aufruf des falschen Interrupts. Das kann dir in Assembler, C, C++ oder sonst einer Sprache passieren.

    JanNIS schrieb:

    OS Sicherheit =/= Hardwaresicherungen
    Assemble -> Maschinencode = Hardwaresprache
    Zur Sicherheit: Man kann mit Tricks viel erreichen, Sicherheiten werden immer durchbrochen werden
    BSP: "Belagerung" des HPs mit Lesebefehelen / oder eine Kreisrechnung
    Nicht umsonst gibt es den BScreen, wenn nur ein Rad auf dieser Ebene falsch läuft, geht alles zubruch,
    der wichtigste Schutz des Computers.

    Nun schnappen wir uns die Intel Programmer Manuals und lesen uns durch Mechanismen wie PMode und Ringe. Da kann man auch auf Hardwareebene einiges absichern.

    JanNIS schrieb:

    Soweit ich informiert bin hat C# deutliche Einflüsse aus C, C++, Delphi, Java
    => nicht so "steriel" wie C, deutlich objektorientierter

    Viele Einflüsse aus C++ mi der Syntax und viele aus Java mit der Grundidee einer VM und einer Stackbasierten Zwischensprache. Aber Delphi eher weniger.

    JanNIS schrieb:

    Aja: Lang lebe die Stringtheorie ;D Niemand weiss dass ein Elektron negativ geladen ist, oder ein Proton positiv,
    man wird es auch nie herrausfinden, aber es ist so definiert. Definitionen ist was anderes als Wissen.
    Wer wird schon je das Verhalten von Lichtquanten verstehen? Der Mensch versteht nichts und wird es auch nie tun...(Qualiaproblem)
    Also: Galaxy-cluster=>Galaxy=>Sternensystem=>Welt=>Haus=>Holz=>Moleküle=>Atome=>(...) das reicht mir als Definition^^
    ich mags nunmal nicht das man alles sehr genau nimmt... Wenn Gott exestieren würde und er mir irgendwann sagt
    das ein Meter ein Meter lang ist, dann glaub ich das ;)

    Der Mensch versteht schon einiges. Er beschreibt und untersucht, dazu gibt es ja die Wissenschaften, damit der Mensch mehr versteht als vorher.

    JanNIS schrieb:

    mfg nis so jetzt geh ich aber in den Garten meine Freundin nervt mich D: hat kb mehr zu schreiben, armer Threadersteller D: D: D:

    Na wenn man schon so Argumentationen vorlegt dann sollte man sich nich verziehen ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von rootnode ()

  • Generell geht es hier auch um Coder vs. Programmierer.
    Der Coder ist hierbei das Äffchen, der einfach nur irgendwie eine Problemstellung löst, ohne Rücksicht auf Verluste.
    Produktivät steht beim Coder weit über Effizienz oder seiner persönlichen Weiterbildung.

    Was ist dann der Programmierer? Wie rootnode schon ganz am Anfang sagte: Es geht nicht darum eine Sprache zu lernen sondern darum, Konzepte und Strukturen zu verstehen.
    Natürlich unterscheiden sich diese in ihren Details auch von Sprache zu Sprache, aber man trifft ständig auf alte Bekannte.
    Wenn man die Grundkonzepte erst beherrscht, lernt sich eine Sprache binnen weniger Tage. Wissen lässt sich einfach übertragen und mit den Erfahrungen, die man in jeder Sprache sammelt, lässt sich bei zukünftige Projekten einfacher entscheiden, welche Sprache die besten Werkzeuge für die Problemstellung bietet.


    Java ist zum Lernen solcher Konzepte auch meiner Meinung nach ganz mies. Wie rootnode schon andeutete, kann man in Java den größten Mist machen und trotzdem funktionierts.
    Scriptsprachen im Allgemeinen (der Game Maker gehört ja auch dazu) tendieren dazu einem eine krumme Vorstellung davon zu geben, worauf es am Ende tatsächlich ankommt und was man vernachlässigen kann.

    Ich persönlich bin vom Game Maker zu C/C++ übergegangen. Dabei ist es wichtig, C von C++ unterscheiden zu können. C++ ist, ähnlich wie Java, anfällig für schlechten Stil.
    Der Sprung von GML auf C fällt recht einfach, im Wesentlichen muss man zusätzlich verstehen was Datentypen, Referenzen und Pointer sind. Hier ein schönes Buch zu C.
    Mit C++ kommt dann primär die Objektorientierung hinzu.
    Fühlt man sich darin sicher, sind es nur noch Katzensprünge zu C#, Python, Lua und Java (C# kann ich nicht beurteilen, das ist hier einfach nur geraten. rootnode wirds wissen).

    Exotisch wirds dann noch mit funktionalen Sprachen (z.B. Haskell) und logischen Sprachen (z.B. Prolog), die auf den ersten Blick ganz anders funktionieren als das, was man für gewöhnlich so kennt.
    Definitiv etwas, was man sich anschauen sollte, wenn die Zeit reicht.


    Der Nachteil von dem Ganzen? Du darfst erstmal eine gewisse Zeit mit Lernen und Verstehen verbringen und hast keine Gelegenheit dabei mal eben ein Spiel zu veröffentlichen. Aber es zahlt sich aus.
    Auch darfst du am Ende immer noch ein paar Bibliotheken lernen - sei es jetzt OpenGL, DirectX oder irgendwelche Frameworks. Aber auch hier zahlt es sich aus, ein solides Basiswissen zu haben.
    Der Vorsprung des Coders, der stumpf eine Sprache und eine Handvoll Bibliotheken gelernt hat ist ab diesem Punkt schnell aufgeholt.


    Aber wie man es dreht und wendet: Es gibt nicht den einen richtigen Weg. Aber es gibt genug Leute, die Code schreiben können und trotzdem unfähige Programmier sind. Ganz viele sogar.
    Und noch eine Warnung von mir: Nehmt nicht irgendein Buch oder irgendein Tutorial, um eine Sprache zu lernen. Bei Sprachen wie C++ ist es ganz einfach die "falsch" beigebracht zu bekommen.
    Wenn es euch wirklich interessiert, studiert Informatik. Macht euch vorher schlau, welche Sprachen die lernen und was sonst aufm Plan steht. Fragt hier im Forum.

    Edit: Und der Programmierer bekommt am Ende auch die Prinzessin. Der Coder ist mit Ende 30 geschieden.
  • MewX schrieb:

    C# kann ich nicht beurteilen, das ist hier einfach nur geraten. rootnode wirds wissen.

    C# ist relativ einfach zu erlernen da die Konzepte sehr durchgängig und konsistent sind.

    MewX schrieb:

    Exotisch wirds dann noch mit funktionalen Sprachen (z.B. Haskell) und logischen Sprachen (z.B. Prolog), die auf den ersten Blick ganz anders funktionieren als das, was man für gewöhnlich so kennt.
    Definitiv etwas, was man sich anschauen sollte, wenn die Zeit reicht.

    Ganz ganz definitiv. Haskell ist für den Anfang etwas Overkill. Aber als Einstieg eignet sich beispielsweise F# da es nebenbei auch mutables und OOP erlaubt. Eine Stufe weiter kann man mit Clojure gehen. Haskell sollte man sich in seiner Laufbahn auf jeden Fall ansehen. Eine sehr schöne, elegante und besonders hinsichtlich des Typsystems und der Verifizierbarkeit, aber gerade das Typsystem kann einen Anfangs überfordern. Jedoch zwingen funktionale Sprachen einen zum Umdenken und man denkt klarer und übersichtlicher über Algorithmen nach. Auch wenn man sie erst in einer funktionalen Sprache umsetzt und dann nach C/C++/C#/Java portiert lohnt es sich.

    MewX schrieb:

    Der Nachteil von dem Ganzen? Du darfst erstmal eine gewisse Zeit mit Lernen und Verstehen verbringen und hast keine Gelegenheit dabei mal eben ein Spiel zu veröffentlichen. Aber es zahlt sich aus.
    Auch darfst du am Ende immer noch ein paar Bibliotheken lernen - sei es jetzt OpenGL, DirectX oder irgendwelche Frameworks. Aber auch hier zahlt es sich aus, ein solides Basiswissen zu haben.
    Der Vorsprung des Coder, der stumpf eine Sprache und eine Handvoll Bibliotheken gelernt hat ist ab diesem Punkt schnell aufgeholt.

    Vollste Zustimmung. Auch wenn man sich auch dort besser mit der Theorie hinter Computergrafik auseinandersetzen sollte um zu verstehen was man da macht.

    MewX schrieb:

    Aber es gibt genug Leute, die Code schreiben können und trotzdem unfähige Programmier sind. Ganz viele sogar.

    Oracle?

    MewX schrieb:

    Wenn es euch wirklich interessiert, studiert Informatik. Macht euch vorher schlau, welche Sprachen die lernen und was sonst aufm Plan steht. Fragt hier im Forum.

    Naja, auf die Sprache kommts ja eher nicht an. Man lernt eine aus jedem Bereich (Imperativ/Funktional/Logisch) und danach gehts ja eher um Informatik, und nicht ums Programmieren. Da bin ich etwas penibel ;)

  • Manche Unis/FHs lehren aber nur Java und streifen nichtmal Haskell/Prolog. In Deutschland kann man da vermutlich noch nicht sooooviel falsch machen, aber in den USA heulen die Entwicklungsleiter rum, dass manche Unis nur noch Deppen produzieren.

    Und achja: Meine Definition von Coder/Programmierer habe ich mir selbst so zurechtgelegt. Ich brauchte einfach einen Weg um die zwei zwei größten Gruppen von Informatikern zu kategorisieren: Die, die eher wissenschaftlich rangehen und die, die nur irgendwie Ergebnisse sehen wollen.

    Edit: Glowing Orb sagt, ich sollte statt Programmierer einfach Entwickler sagen. Das sei verständlicher. Hat er recht mit.
  • MewX schrieb:

    Und achja: Meine Definition von Coder/Programmierer habe ich mir selbst so zurechtgelegt. Ich brauchte einfach einen Weg um die zwei zwei größten Gruppen von Informatikern zu kategorisieren: Die, die eher wissenschaftlich rangehen und die, die nur irgendwie Ergebnisse sehen wollen.

    Die würde ich jetzt nicht alle als Subset von Informatikern bezeichnen. Gibt ja auch viele Coder / Programmierer die keine Informatiker sind. Unter Informatik würde ich eher Dinge wie Verifikation / Data Mining Algorithmen / CG Theorie / Graphentheorie / Model Checking etc. zählen und nicht die programmierende/codende Tätigkeit.

  • C# ist relativ einfach zu erlernen da die Konzepte sehr durchgängig und konsistent sind.

    Wie durchgängig und konsistent?

    Nichts anderes? Verdammt, warum muss OpenGL nur unter C++ nutzbar sein....das is echt ne Schande und eine Frechheit!

    Unter C# geht es nicht?? Oder kannst du es nicht leiden?
    Ich finde den Vorschlag von Gleich knallt's eigentlich ganz gut.
  • Ja, wollte nur so Leute wie beispielsweise mich davon trennen. Meine Programmiertätigkeiten beziehen sich auf Nebenjob und Freizeitprojekte wie MOSA. Aber im Longshot ziele ich als Informatiker eher auf forschende Tätigkeiten ab, nicht auf programmierende ^^

  • Mr. Diesel schrieb:

    C# ist relativ einfach zu erlernen da die Konzepte sehr durchgängig und konsistent sind.

    Wie durchgängig und konsistent?

    Nichts anderes? Verdammt, warum muss OpenGL nur unter C++ nutzbar sein....das is echt ne Schande und eine Frechheit!

    Unter C# geht es nicht?? Oder kannst du es nicht leiden?
    Ich finde den Vorschlag von Gleich knallt's eigentlich ganz gut.


    Zum Beispiel bei Generics. Du kannst für Generics jeden Datentyp einsetzen, ob primitiver Datentyp wie int, double, string etc, oder ob Klasse oder Struct, das ist egal. Bei Java geht das nur mit Klassen (für Details: Java ist nicht in der Lage Generics aufzulösen und "löst" dieses Problem indem anstelle des Typparameters intern einfach alles durch object ersetzt wird und dann alles gecastet wird, daher können keine primitiven Datentypen eingesetzt werden da diese nicht von object erben).

    Klar geht das auch unter C# (TaoGL). Das war nur ein sarkastischer Hinweis dass man bei OpenGL nicht auf C++ angewiesen ist. Natürlich nur mit Wrappern wie TaoGL oder Wrappern für andere Sprachen. C++ geht nur "nativ" weil C ein Subset von C++ ist (ganz genau betrachtet ist OpenGL ja eine C-Library, keine C++ Library).

  • Ich kann dir für den Anfang c# oder VB.Net empfehlen, leicht zu erlernen und du kannst mit wenig Aufwand viel erreichen. Je nach dem was du machen möchtst gibt es Unterschiedliche Sprachen aber wenn du Spiele entwickeln willst bleib bei GM, nehmlich Spiele in Programmmiersprachen zu schreiben die allgemein gehalten sind ist ziemich Aufwendig da du dich um alles selbst kümmern musst und es keine Spezielle Funktionen für Spieleentwicklung gibt
  • Im Ernst, ich halte nicht viel von C#.

    Ich finde, man darf auf keinen Fall C++ und C unterschätzen, es gibt einen Grund, wieso diese Sprachen sich so lange zu halten haben.
    Zugegeben. Wer ein einfaches Programm programmieren will, da reicht Java oder sonst eine Sprache vollkommen aus - der Aufwand lohnt sich nicht, dafür gleich C++ auszupacken.

    Aber gerade bei Spielen sind C und C++ nach wie vor eine der Königsklassen. Bzw. die gesamte C-Familie, Objective-C (ich verweise mal auf das iPhone) ist auch nicht zu unterschätzen, jedoch für außerhalb des Macs fast unbrauchbar.

    Klar. C++ und C ist sehr schwer und komplex, aber die Möglichkeit sehr nahe am Arbeitsspeicher zu arbeiten, erlaubt einem eine Ressourcenverwaltung, die so schnell unter keiner anderen Programmiersprache nachzubauen ist. Man denke mal an den schönen Heap, wie einfach und simple das mit C++ vonstatten geht.

    Wer jetzt sagt, die meisten C++ Codes sind compiler abhängig, sorry, aber der hat einfach nur einen schlechten Stil. Wer die Standartbibliotheken verwendet, bzw. plattformunabhängig Bibliotheken, und dann einen richtigen Compiler (es gibt wirklich schlechte C++ Compiler, aber auch sehr, sehr gute) auswählt, wird seine Programme überall hin übertragen können, ohne Probleme.

    Für Programme gibt es mittlerweile dutzende, sehr, sehr gute plattformübergreifende C++ Bibliotheken, allen voran z.B. Qt - simple, kann wirklich fast alles und läuft überall, selbst auf Handys.

    Für Spiele - kein Problem OpenGL verträgt sich grenzgenial mit der Ressourcenfreundlichkeit von C++ :)



    Aber letzendes, mal im Ernst:
    Die Diskussion über die Beste Programmiersprache (für Spiele, aber auch generell) gibt es schon, seit es mehrere Programmiersprachen gibt. Es gibt im Grunde nichts daran zu diskutieren, man wird sowieso nie eine Lösung finden.

    Mein Vorschlag? lern C++. Es ist hart, aber lohnt sich. Und wer etwas erreichen will, muss auch gewillt sein, einen steinigen Weg zu gehen ;)
  • Michaelp800 schrieb:


    Edit: Es ist ein sehr langwieriger und schwieriger Prozess so eine Sprache zu lernen, überleg gut ob es dir wert ist!
    Is halt wie Französisch, ne? :D

    Wir reden von Sprachen?!

    Abschließend lässt sich eigentlich nur sagen:
    Wenn ihr noch in der Schule seid, dann macht was ihr wollt, mit welcher Sprache ihr wollt, Hauptsache ihr macht was und schaut dabei über'n Tellerrand hinaus. Ich selbst glaube von mir schon wenig gemacht zu haben, aber wenn ich mich im Studium so umgucke, fehlt den meisten Leuten echt Übung und Fingerspitzengefühl beim Programmieren und Entwickeln - was ihnen das Leben schwer macht.

    Wenn euch Programmieren dann zwischendurch nicht langweilig wird und ihr irgendwann euren Schulabschluss habt, studiert Informatik. Darauf läuft's dann halt sowieso hinaus, wenn ihr nirgendwo größere Ambitionen habt.
    Alternativ gibt es natürlich noch die Ausbildung zum Fachinformatiker, aber jemand aus meinem Umfeld, der das gemacht hat und jetzt noch studiert, rät davon ab. Es hat ihm wohl nicht soviel vermittelt, wie er sich erhofft hatte. Außerdem sieht sein Code furchtbar aus, auch wenn er funktioniert.
    Nichsdestotrotz würdet ihr mit so einer Ausbildung danach an einer FH studieren können (zumindest hier in Deutschland), wäre also für die ohne Abi ein Weg.
  • MeRobin schrieb:

    Im Ernst, ich halte nicht viel von C#.

    Irgendwelche spezifischen Gründe dafür?

    MeRobin schrieb:

    Aber gerade bei Spielen sind C und C++ nach wie vor eine der Königsklassen. Bzw. die gesamte C-Familie, Objective-C (ich verweise mal auf das iPhone) ist auch nicht zu unterschätzen, jedoch für außerhalb des Macs fast unbrauchbar.
    Die mittlerweile auch langsam aber sicher umsteigen.

    MeRobin schrieb:

    Klar. C++ und C ist sehr schwer und komplex, aber die Möglichkeit sehr nahe am Arbeitsspeicher zu arbeiten, erlaubt einem eine Ressourcenverwaltung, die so schnell unter keiner anderen Programmiersprache nachzubauen ist. Man denke mal an den schönen Heap, wie einfach und simple das mit C++ vonstatten geht.

    Hier reagiere ich einfach mit meinem Avatar. Andere Sprachen haben keinen Heap und arbeiten nur aufm Stack oder wie?

    MeRobin schrieb:

    Wer jetzt sagt, die meisten C++ Codes sind compiler abhängig, sorry, aber der hat einfach nur einen schlechten Stil. Wer die Standartbibliotheken verwendet, bzw. plattformunabhängig Bibliotheken, und dann einen richtigen Compiler (es gibt wirklich schlechte C++ Compiler, aber auch sehr, sehr gute) auswählt, wird seine Programme überall hin übertragen können, ohne Probleme.
    Auch die sehr guten Compiler sind nicht kompatibel untereinander.

    MeRobin schrieb:

    Für Programme gibt es mittlerweile dutzende, sehr, sehr gute plattformübergreifende C++ Bibliotheken, allen voran z.B. Qt - simple, kann wirklich fast alles und läuft überall, selbst auf Handys.
    Und man ist abhängig davon ob es eine Portierung von Qt auf die jeweilige Plattform gibt. Qt ist intern höchstgradig Plattformabhängig. Und man muss auch dort auf die Benutzung spezieller Features achten die einem die Unabhängigkeit zerschießen können. Das ist aber ein inhärentes Problem aller Sprachen.

    MeRobin schrieb:

    Aber letzendes, mal im Ernst:
    Die Diskussion über die Beste Programmiersprache (für Spiele, aber auch generell) gibt es schon, seit es mehrere Programmiersprachen gibt. Es gibt im Grunde nichts daran zu diskutieren, man wird sowieso nie eine Lösung finden.

    Das unterschreibe ich mal. Der Einsatz der Programmiersprache ist eigentlich egal. Wichtig ist der Part der sich ca. 30-60cm vom Bildschirm entfernt befindet. Gute Algorithmen wählen und die Sprache ist (fast) egal. Die ein oder andere bietet dann Vorzüge die einem die Arbeit erleichtern und dementsprechend muss man je nach Aufgabe einfach die passende Sprache lernen.

    MeRobin schrieb:

    Mein Vorschlag? lern C++. Es ist hart, aber lohnt sich. Und wer etwas erreichen will, muss auch gewillt sein, einen steinigen Weg zu gehen

    ...und über die Programmiersprache hinausschauen. Ich kann C++, ziemlich gut will ich sogar behaupten. Nutze ich es? Selten. Warum? In C#, F# oder Haskell bin ich meistens schneller. Ich würde es höchstens noch einsetzen wenn der Job es verlangt oder ich auf einem Embedded System unterwegs bin. Ich optimier da lieber die Algorithmen und erzeuge klaren, kurzen, verständlichen Code.

  • Auch wenn sich die eigentliche Frage eventuell schon erledigt hat, will ich dennoch mal meinen Senf dazugeben.

    Selbstverständlich wirst Du mit einer Scriptsprache wie GML, JavaScript, etc. nie die Performace erreichen können, wie mit einer Hochsprache wie C++. Mit Java habe ich zwar noch keinerlei Erfahrung gesammelt, allerdings lässt sich C# eher mit Java als mit C++ vergleichen ;). Da Java- und C#-Code, anders als C++ Code, zur Laufzeit Kompiliert werden, hat man da zwangsläufig eine "schlechtere Performance".

    Dafür kommt man solchen Sprachen wesentlich schneller zum Ziel, da man sich mit vielen Dingen nicht rumärgern muss. Und für manche Probleme sitzt man (in C++), meiner Erfahrung nach, oft viele Stunden über Tage verteilt, vor der IDE, weil man sich dafür wieder mit viel mehr Themen auseinandersetzen muss, die damit zusammenhängen.
    Man muss also sehr frustresistent, geduldig und motiviert sein und sich vor allem auch durchbeißen können wenn ein Thema total trocken und langweilig ist.
    Gerade am Anfang fängt man da oft von vorn an, muss nochmal alles umschreiben, etc. ...

    C# ist da beispielsweise nicht ganz so empfindlich. Vor allem nicht bei Datentypen, etc. . Dafür ergeben sich Fehler oft erst zur Laufzeit und oft sind die nicht immer sofort ersichtlich. Durch, zwangsläufig, penetrant penible C++ Compiler bekommt man die meisten Fehler und Warnungen schon beim Kompilieren (Bekommt man bei C# natürlich auch, aber wie gesagt, lässt dieser viele Dinge "durchgehen").

    Und in Punkto HighEnd AAA Spiele; wirst Du allein oder in einem kleinen Team nicht mit C++ zustande bringen. Vor allem nicht in deiner Freizeit. Ich bin in vielen Hobby-Communitys unterwegs, und es wäre mir wirklich neu, dass ein kleines Team aus Hobbyisten derartiges auf die Beine stellt.
    Für 2D Spiele solltest Du aber definitiv einen Blick drauf werfen, wenn Du gewillt bist viel zu lernen. Ein sehr schönes Buch zum Einstieg in C++ ist "C++ für Spieleprogrammierer" (Tolle Beispiele, gut erklärt und gut geschrieben. Und vor allem kannst Du auf spieleprogrammierer.de auch direkt Fragen zum Buch stellen. Dort ist auch der Autor unterwegs.). Wenn Du das konsequent durcharbeitest und viel rumprobierst, hast Du auf jeden Fall sehr gute Grundkenntnisse, mit denen Du dich dann an weiterführenden Themen probieren kannst.

    Für AAA 3D Spiele rate ich dir aber zu einem Autorensystem oder einem Framework, was auch immer. (Kostenlose bzw. Engines im Preisrahmen für Normalsterbliche: )Unity, Torque, Leadwerks Engine, Unreal Engine, Cryengine, XNA etc. .... Viele von denen bieten auch neben Mac, Linux und Windows auch Android und iOS als Plattform an.

    Und eine Sache zum Thema performance; nur weil ein Spiel in C++ entwickelt wird, muss die Performance nicht automatisch besser sein ;). Gerade mit C++ kann man sehr viel falsch machen. C# nimmt einem viel Arbeit ab und gerade in Verbindung mit XNA braucht man sich da kaum Sorgen um die Performance machen. Mit XNA kam zwar auch noch kein HighEnd AAA 3D Spiel zustande (soweit ich weiß) aber sowohl im 2D als auch im 3D Bereich kann man damit sehr anspruchsvolle Dinge vollbringen ;).

    Aber da muss man selbst abwägen, ob man lieber programmiert oder "Spiele macht". Aber allein zu diesem Thema könnte man ganze Romane schreiben. Deshalb belasse ich es jetzt mal hierbei. Will aber noch gesagt haben, dass ich viele Programmiersprachen "gelernt" habe. C (benutze ich für Microcontroller) , C++, C#, JavaScript, QBasic(In der Schule :)), BlitzBasic(Amiga) und PHP (benutze ich aber nur beruflich) und sehr viel Erfahrung mit den meisten dieser Sprachen habe. Dennoch bin ich jetzt beim Gamemaker gelandet, weil der Zeitaufwand einfach enorm ist, für ein Spiel. Und mit einigen Tricks, walkarounds, etc. kann man eigentlich immer die nötige Performance rausholen, wenn man es nun nicht gerade übertreibt ;).
    combobreaker.de - Indiegame Blog, News und Tests