C# oder Java?
-
Nunja, wie gesagt, müsste ich bei C# wohl eher auf Mono zurückgreifen, da ich nur Wochenends am PC sein kann. (es sei denn, ich klatsch mir ein Bootcamp drauf... was ich aber irgendwie nicht so gern würde)
Ich werde mir wohl mal eine Liste von Vor- und Nachteilen der Sprachen erstellen und dann lässt es sich evtl. besser abschätzen. Was mich aber noch interessieren würde:
- ist C# für Spieleprogrammierung eigentlich geeignet (für diese doch relativ kleine Dimension, wie ich es halt will)? In dieser Hinsicht habe ich eigentlich noch nie was gelesen/gesehen.
- wie stark würde sich der Griff zu Mono bemerkbar machen? Oder wäre es im Endeffekt wirklich klüger extra für C# ein Windows draufzuknallen?Kommt drauf an wie dringend für dich die Plattformunabhängigkeit ist. Wenn du alle C#-Sachen, die du brauchst, irgendwie auf allen deinen Plattformen zum Laufen bekommst, dann nimm C#. Java wäre als Sprache imo komplett überflüssig, wenn C# eine wirklich platformunabhängige Sprache wäre.
Wenn ich das nur wüsste
-
Ich würde nicht auf Mono setzen. Es ist zwar ganz nett und auch erstaunlich wie gut das funktioniert, hat auch paar interessante Sachen hervorgebracht, wie Cecil, aber es hinkt doch ein gutes Stück hinterher und das wird in der Linux Welt sicherlich nicht ankommen. Wenn ein Linuxer sieht, dass er für ein Programm Mono braucht, ignoriert er das Programm meist. Also, wenn du wirklich Plattformunabhängigkeit willst, dann Java.
-
Mechanics schrieb:
Ich würde nicht auf Mono setzen. Es ist zwar ganz nett und auch erstaunlich wie gut das funktioniert, hat auch paar interessante Sachen hervorgebracht, wie Cecil, aber es hinkt doch ein gutes Stück hinterher und das wird in der Linux Welt sicherlich nicht ankommen. Wenn ein Linuxer sieht, dass er für ein Programm Mono braucht, ignoriert er das Programm meist. Also, wenn du wirklich Plattformunabhängigkeit willst, dann Java.
Wie es gibst Cecil auf Mono? Ach ne, das ist ne ECMA CIL enginerring library. Gibst auch für .NET: http://ccimetadata.codeplex.com/ (ohne Gewähr - ich hab nie getestet)
-
Mechanics schrieb:
Ich würde nicht auf Mono setzen. Es ist zwar ganz nett und auch erstaunlich wie gut das funktioniert, hat auch paar interessante Sachen hervorgebracht, wie Cecil, aber es hinkt doch ein gutes Stück hinterher und das wird in der Linux Welt sicherlich nicht ankommen. Wenn ein Linuxer sieht, dass er für ein Programm Mono braucht, ignoriert er das Programm meist. Also, wenn du wirklich Plattformunabhängigkeit willst, dann Java.
Es geht mir bei Plattformunabhängig gar nicht so sehr um Linux, sondern eher mehr um OS X (da mein Bekanntenkreis zum Großteil Macs besitzt). Sie zum Testen meiner Programme zu zwingen wäre dann halt eher bescheiden ;)...
Sprachtechnisch gefällt mir C# doch ein bisschen mehr als Java; keine Class-Namespace-Vergewaltigung, einige Sprachelemente selbst (structs, ...), Systemprogrammierung möglich... Im Gegenzug dazu ist Java halt wesentlich verbreiteter und portabler.
Hach, ich verzweifle langsam...
-
Inwiefern ist Systemprogrammierung mit C# möglich?
Und wozu brauchst du structs?
-
Es ging nicht explizit um structs, nur darum, dass die Sprache "mehr bietet".
Zur Systemprogrammierung: laut dem, was ich rausgefunden habe, so weit wie ich es benötige - und dafür tut es, was ich ja schon bei Python gesehen habe, WMI ziemlich gut. Und WMI wird es unter Java wohl nicht geben. Nachteil ist zwar, dass WMI nicht portierbar ist, aber es geht ja ausnahmsweise mal nur ums Prinzip.
-
Unentschlossen schrieb:
- ist C# für Spieleprogrammierung eigentlich geeignet (für diese doch relativ kleine Dimension, wie ich es halt will)? In dieser Hinsicht habe ich eigentlich noch nie was gelesen/gesehen.
Sehr gut sogar, google mal nach XNA.
-
Gerade vorhin schon gefunden, danke aber trotzdem. Sieht sehr interessant aus!
-
Unentschlossen schrieb:
Sprachtechnisch gefällt mir C# doch ein bisschen mehr als Java; keine Class-Namespace-Vergewaltigung, einige Sprachelemente selbst (structs, ...)
Also, dass bei den ganzen C# Features jemand structs erwähnt find ich schon lustig ^^ Da gibts schon interessantere Sachen, wie Lambda Ausdrücke oder Linq.
-
Unentschlossen schrieb:
Zur Systemprogrammierung: laut dem, was ich rausgefunden habe, so weit wie ich es benötige - und dafür tut es, was ich ja schon bei Python gesehen habe, WMI ziemlich gut. Und WMI wird es unter Java wohl nicht geben. Nachteil ist zwar, dass WMI nicht portierbar ist, aber es geht ja ausnahmsweise mal nur ums Prinzip.
Das ist ja nicht wirklich Systemprogrammierung und zudem ist WMI sowieso nur auf Windows vorhanden. Das wirst du auch in Mono nicht verwenden können. WMI ist von Windows. Heisst ja auch Windows Management Instrumentation. Und aus diesem Namen hörst du eigentlich auch schon, um was es da hauptsächlich geht: Administration von Windows-Computersysteme.
Grüssli
-
Wenn du unbedingt WMI unter Windows mit Java machen wollen würdest, wär das natürlich auch möglich. Du müsstest halt einen Teil in C++ oder irgendeiner anderen nativen Sprache schreiben und über JNI ansprechen. Macht natürlich keinen Sinn, wenn es einen entscheidenden Teil deines Programms ausmacht, aber wenn das nur ein kleines Zusatzfeature ist, kein Problem.
-
Mechanics schrieb:
Wenn du unbedingt WMI unter Windows mit Java machen wollen würdest, wär das natürlich auch möglich. Du müsstest halt einen Teil in C++ oder irgendeiner anderen nativen Sprache schreiben und über JNI ansprechen. Macht natürlich keinen Sinn, wenn es einen entscheidenden Teil deines Programms ausmacht, aber wenn das nur ein kleines Zusatzfeature ist, kein Problem.
Dafür gibst bestimmt irgendwo schon eine Library.
-
ich befürchte du musst dich mal entscheiden, was du nun machen willst. einerseits willst du plattformunabhängigkeit, andererseits aber auch systemnah programmieren!? das schließt sich halt aus.
aber zur beruhigung: man kann auch durchaus mit einer sprache anfangen und dann später noch eine andere sprache lernen.
syntax und sprachelemente hat man eigentlich recht schnell drin, vor allem bei sprachen die sich so ähneln wie java und c#. schon mehr zeit beansprucht das finden und lernen der richtigen APIs. das hängt aber vor allem auch von den problemen ab, die du lösen willst.
fazit: überlege was du als erstes programmieren willst und such danach die erste sprache aus. was danach kommt ist schnee von übermorgen.
-
Unentschlossen schrieb:
- ist C# für Spieleprogrammierung eigentlich geeignet (für diese doch relativ kleine Dimension, wie ich es halt will)? In dieser Hinsicht habe ich eigentlich noch nie was gelesen/gesehen.
XNA wurde schon genannt. Darüber hinaus gibt es für Low-Level es eine sehr gute OpenGL Schnittstelle: http://www.opentk.com/
Unentschlossen schrieb:
- wie stark würde sich der Griff zu Mono bemerkbar machen? Oder wäre es im Endeffekt wirklich klüger extra für C# ein Windows draufzuknallen?
Wenn Du mal mit Visual Studio gearbeitet hast, willst Du sowieso nicht mehr unter Mac programmieren. Außerdem wird Plattformunabhängigkeit von Anfängern oft maßlos überschätzt. Klar, jeder will mal seinen Freunden ein cooles Programm zeigen, aber der Weg dahin ist sowieso lang und steinig.
-
Wenn Du mal mit Visual Studio gearbeitet hast, willst Du sowieso nicht mehr unter Mac programmieren.
Nicht "wollen", sondern müssen. Ich bin von Montag bis Freitag nicht zu Hause und habe für unterwegs ein MacBook.
Aber:
Ich bedanke mich bei allen für die Ratschläge und Hinweise. Ich habe mich gestern noch bisschen mit beiden Sprachen beschäftigt und werde wohl zuerst mal C# lernen. Ich sehe einfach mal von der Plattformunabhängig ab. Wie lolhehe schon schrieb, hält mich ja nichts davon ab, irgendwann auch Java zu lernen.
Aufs MacBook kommt mir ein Windows und fertig.Danke nochmals allen
-
Unentschlossen schrieb:
Ich habe mich gestern noch bisschen mit beiden Sprachen beschäftigt und werde wohl zuerst mal C# lernen.
Gute Entscheidung
Obwohl die beiden Sprache sich ähneln, fühlt sich Java krank an. C# ist imho sehr viel angenehmer. Und die BCL sowie das Framework sehr viel durchdachter.
-
Unentschlossen schrieb:
Wenn Du mal mit Visual Studio gearbeitet hast, willst Du sowieso nicht mehr unter Mac programmieren.
Nicht "wollen", sondern müssen. Ich bin von Montag bis Freitag nicht zu Hause und habe für unterwegs ein MacBook.
sich jetzt nur wegen visual studio für .NET zu entscheiden, wäre ja mal ein selten dämlicher grund.
für java gibts zufällig die beste IDE der welt (Intellij IDEA) und mit eclipse noch eine sehr gute freie alternative. im gegensatz zu visual studio laufen die alle sowohl auf mac osx, linux als auch windows.