Versucht mal, mich zu überzeugen!



  • Zur Zeit entwickel ich meine Spiele in C++. Ich glaube jedoch, dass C++ auf Dauer an Bedeutung verlieren wird, sogar in der Spieleentwicklung (die ja immer recht konservativ ist). Ich weiss nur nicht, ob zugunsten von C# oder Java.
    In der Uni lerne ich Java, das würde dafür sprechen, mein nächstes Projekt in Java zu schreiben. Problem: Ich habe Probleme damit in Java vernünftig OpenGL zu benutzen, da es in Java auch nichts wirklich offizielles dafür gibt außer Java3D.
    Außerdem bin ich eh mehr so ein DirectX Fan und da schauts bei Java noch düsterer aus. Das würde also eindeutig für C# sprechen. Java hat aber natürlich gegenüber C# auch Vorteile, der wichtigste ist Plattformunabhängigkeit und mir gefallen einige Schlüsselwörter dort besser, bzw. sind mir vertrauter.
    Außerdem habe ich gelesen, dass ne lokale Variable in ner for-Loop in C# auch nach der loop noch gültig ist. Stimmt das?! Das finde ich gelinde gesagt, schlecht.

    Da ich mich aber nur ein bisschen mit Java auskenne und kaum mit C#, sagt mir mal bitte ein paar Sachen, die in der Spieleentwicklung für C# sprechen, besonders im Gegensatz zu Java.



  • Optimizer schrieb:

    Außerdem habe ich gelesen, dass ne lokale Variable in ner for-Loop in C# auch nach der loop noch gültig ist. Stimmt das?! Das finde ich gelinde gesagt, schlecht.

    nein. eine var ist in c# auch nur in seinen scope gültig.

    ein "vorteil"(?!) ist der gc und das c# im allgemeinen "leichter" als c++ ist aber sonst fällt mir eigentlich kein grund zum wechsel ein.



  • Mich würden insbesondere Vorteile von C# gegenüber Java interressieren. 🙂
    Warum ich mein Gewicht von C++ mehr auf eine neuere Sprache verlagern werde, darüber bin ich mir selber schon im Klaren.



  • Sinnlos so einen Vergleich jetzt zu machen.

    Bald kommt Java 1.5 und das neue .NET ist auch schon auf dem Weg... also sprechen wir uns wenn beide da sind. Denn sowohl Java 1.5 als auch das neue .NET werden ordentlich Features bringen.



  • Ich glaube nicht, dass die Entscheidung von den Features der neuesten Versionen von C# oder Java abhängen sollte. Die beiden Sprachen sind eh relativ ähnlich.

    Viel wichtiger halte ich das Umfeld der Sprachen. Wenn du dich auf Windows/DirectX spezialisieren möchtest, dann wird für dich kein Weg an .NET (und C#) vorbeiführen. Wenn du dich nicht dauerhaft auf die Plattform festlegen möchtest, dann ist .NET keine Alternative zu Java. Auch nicht mit Mono. Dann kannst du DirectX aber auch gleich vergessen.

    Zu OpenGL mit Java: Es gibt verschiedene OpenGL-Wrapper für Java, die beiden wichtigsten sind wohl JOGL und LWJGL. Die sind sich sehr ähnlich und werden beide schon von einigen Projekten genutzt. LWJGL wird zum Beispiel von Tribal Troble oder auch Alien Flux genutzt. JOGL wird hingegen von Wurm Online genutzt. Magicosm nutzt Xith3D, welches auf JOGL basiert, welches aber eher auf einer Ebene mit Java3D einzustufen ist.



  • Wow. Dieses Trible Trouble sieht echt nicht schlecht aus.



  • Ok, also ich habe jetzt mal Direct3D mit C# angetestet und ich bin wirklich begeistert!
    Damit ist meine Entscheidung zugunsten von C# ausgegangen. Java ist ne super Sprache, aber ich kann leider kein OpenGL und VS.Net gefällt mir auch noch besser wie Eclipse, besonders der Object Browser hat es mir angetan.
    Überhaupt hab ich den Eindruck, dass C# extends Java. 😉

    Ich wollte mal versuchsweise ein Spiel mit einer modernen "managed" Sprache entwickeln und werde das nun in Angriff nehmen. Wünscht mir Glück. 🙂



  • Wenn du auf .Net setzt spricht doch nichts dagegen einen Teil in C#, einen In managed C++ und einen Teil in VisualBasic zu schreiben.

    Vor allem seit ich diesen Artikel gelesen habe schein die Möglichkeit manche Teil in C++ zu schreiben garnicht so schlecht zu sein.



  • Ne lieber nicht, mir gefallen C#/Java sprachlich viel besser als C++. Und in C# gibt es auch einen usafe Mode, wenn ich mal wirklich aus Performancegründen was zusammenh4Xx0rn muss. 😉
    Und von VB hab ich mich schon vor 3 Jahren verabschiedet. 🙂



  • Also ich persönlich könnte mich bei einer neuen .Net-Version mit dem Gedanken anfreunden die UI in C# zu machen und im Hintergrund Standard-C++ zu verwenden. Dann hat man den Vorteil, dass man schnell eine akzeptable UI zusammenbauen kann (ohne die scheiß MFC) und trotzdem im Hintergrund schnellen Code hat.



  • Wie gesagt, wenn ich schnellen Code brauch, würde ich den unsafe Mode verwenden. Ich halte nicht soviel davon, Sprachen zu mischen, außerdem müsstest du glaub ich mit "Managed C++" coden, außer du willst es über DLLs lösen...



  • Ne lieber nicht, mir gefallen C#/Java sprachlich viel besser als C++. Und in C# gibt es auch einen usafe Mode, wenn ich mal wirklich aus Performancegründen was zusammenh4Xx0rn muss.

    Was ist mit Templates. Darum ging es mir hauptsächlich. (Und nein Generics der folgenden C# Version sind keine Ersatz, nichtmals Ansatzweise.)

    Und von VB hab ich mich schon vor 3 Jahren verabschiedet.

    Das war ja auch nur ein Beispiel. Du kannst auch Eiffel.Net verwenden oder was weiß ich.

    Ich halte nicht soviel davon, Sprachen zu mischen, außerdem müsstest du glaub ich mit "Managed C++" coden, außer du willst es über DLLs lösen...
    

    Warum nicht. gerade das ist es, was mir an .Net gefällt: Ich kann problemlos Sprachen mischen, ohne dass es jemand merkt. Ich schreib ne Klasse in Delphi 8, leite mir in VB was davon ab. Die Klasse spezialisiere ich dann nochmal in C# und schließlich verwende ich sie dann in Eiffel.Net.



  • Helium schrieb:

    Was ist mit Templates. Darum ging es mir hauptsächlich. (Und nein Generics der folgenden C# Version sind keine Ersatz, nichtmals Ansatzweise.)

    Bei C# weiss ich es nicht, aber bei Java versprech ich mir einiges von den Generics. Es ist ja unbestritten, dass C++ den größten Funktionsumfang bietet, aber so wahnsinnig oft brauch ich Templates jetzt nicht. Die Generics sind insofern in Java interressant, weil man sich damit dann das nervige typecasten sparen kann (wobei das typecasten dort im Gegensatz zu C++ wenigstens sicher ist 🙄 ).

    Helium schrieb:

    Warum nicht. gerade das ist es, was mir an .Net gefällt: Ich kann problemlos Sprachen mischen, ohne dass es jemand merkt. Ich schreib ne Klasse in Delphi 8, leite mir in VB was davon ab. Die Klasse spezialisiere ich dann nochmal in C# und schließlich verwende ich sie dann in Eiffel.Net.

    Klar, wenn du damit glücklich bist, dann kannst du dich ja über diese Möglichkeit freuen. 🙂



  • Bei C# weiss ich es nicht, aber bei Java versprech ich mir einiges von den Generics. Es ist ja unbestritten, dass C++ den größten Funktionsumfang bietet, aber so wahnsinnig oft brauch ich Templates jetzt nicht. Die Generics sind insofern in Java interressant, weil man sich damit dann das nervige typecasten sparen kann (wobei das typecasten dort im Gegensatz zu C++ wenigstens sicher ist ).

    Ist es in C++ auch (dynamic_cast).
    Das einzige, was Generics in Java und C# machen ist, casten zu ersparen und Fehler zur Compilezeit zu bringen, falls ein Objekt falschen Typs verwendet wird.



  • Optimizer schrieb:

    Es ist ja unbestritten, dass C++ den größten Funktionsumfang bietet, aber so wahnsinnig oft brauch ich Templates jetzt nicht.

    Nein? Ich wüsste nicht mehr wie ich leben sollte ohne Templates 😃 .



  • Optimizer schrieb:

    Es ist ja unbestritten, dass C++ den größten Funktionsumfang bietet

    Ist das so? Wo sind denn meine drei "Lieblingsfunktionen" in C++?

    reflection
    dynamic class loading
    annotations (...und zwar Reflection-fähige)



  • Du kannst sie dir selber schreiben. 😉
    Naja den größeren Umfang wie Java hat C++ auf jeden Fall, das kannst du nicht abstreiten (auch C# hat nen größeren Funktionsumfang wie Java). Das heisst ja nicht, dass C++ "besser" ist. Sonst hätte ich diesen Thread hier nicht aufgemacht.



  • Ist das so? Wo sind denn meine drei "Lieblingsfunktionen" in C++?

    Und wo sind in Java meine:
    Partielle Templatespezialisierung, Templatetemplates und automatisch aufgerufene Destruktoren?



  • Ich wollte nicht darauf hinaus, dass Java mehr Funktionen bietet als C++, sondern dass man nicht sagen kann, dass C++ einen deutlich höheren Funktionsumfang bietet als Java. Beide Sprachen bieten Funktionen, die die andere nicht bietet. Es ist IMHO falsch zu sagen, dass man mit C++ mehr Ausdrucksmöglichkeiten hat. Man hat einfach nur andere.



  • Hallo!

    Folgendes ist aus einer Seminaraufgabe von 2 Schülern von meiner Schule, bin persönlich nicht sehr begeister davon, aber seht selbst:
    http://www.fh-wedel.de/~hu/semwork/csharp/index.html

    Code-Hacker



  • Wie wäre es eientlich mit D? Irgendwie habe ich das Gefühl, das die Sprache recht gut den geforderten Ansprüchen gerecht wird.


Anmelden zum Antworten