# Wahl der Programmiersprache ...



## Fragile Heart (10. Juni 2011)

Hallo Leute,

ich stehe da gerade vor ein kleinen Problem. Ich möchte für ein privates Projekt eine Softwareentwicklen, diese sollen neben einigen kleineren Verwaltungsaufgaben auch ausgedehnte 3D Simulationen durchführen. Das Problem an der Sache ist jetzt, dass ich mich nicht auf eine Programmiersprache einigen kann! 

Ich hab in C++ den größten Erfahrungsschatz, befürchte aber, das ich von der Entwicklungszeit jeden vernüftigen Rahmen sprenge (ist ja nur ein Hobby) und das ich mir mit C# besser stehe, da ich auch noch auf einige Webdienste zu greifen muss. Auf der anderen Seite, befürchte ich aber auch, das C# mit WPF in der 3D Leistung bescheiden werden könnte und ich mit den Ergebnis nicht zu frieden sein werden. 

Was meint ihr zu diesen Problem? Wie würdet ihr euch entscheiden?


----------



## fadade (10. Juni 2011)

hey,

also ich würde erstmal prinzipiell zu der "sprache" greifen, womit du mehr erfahrung hast. Es bringt ja nichts, wenn du performanten Code brauchst und dazu das performante C++ nutzt, aber irgendwie nicht die richtigen Methoden oder sonstwas.

Was braucht man den unbedingt von C++ für die 3D-ARbeiten? Objektverweise? Zeiger? oder einfach nur die schnellere Ausführung? 
Weil sonst sollte C# eigentlich reichen.... (es sei denn du brauchst so ein richtiges Hardcore-Programm, wie AutoDesk oder Cinema 4D  )


----------



## Fragile Heart (10. Juni 2011)

Naja, dann müsste ich ja zu C++ greifen.  Aber wie gesagt, ich befürchte gerade einfach, dass das jeden Rahmen sprengen würde.


----------



## fadade (10. Juni 2011)

Was wäre denn so dein Rahmen? 

Weil sonst könntest du es ja mal mit C++ probieren und nach einer bestimmten Zeit (etwa 5% des Rahmens oder so xD ) dann umsteigen.
Oder genau andersrum: Erstmal mit C# anfangen und schauen, ob das mit der Performance so geht und wenn nicht, dann auf C++ setzen. Die Prinzipien kennst du dann ja schon, und dann sollte es auch schneller gehen 

.... so ähnlich hab ich es jedenfalls immer mit meine Hausaufgaben gemacht, als ich noch Schule hatte


----------



## Fragile Heart (10. Juni 2011)

Also ich rechne mit einer Entwicklungszeit von 2 Jahren+, was stark von der Arbeitszeit abhängt die ich wirklich zurverfügung habe und der Motivation. Es ist ein Hobby Projekt, da muss ich nicht so genau schauen. 

Problematisch finde ich allerdings auch noch Sachen die ich im Moment noch gar nicht kenne. Wie wird es bei den nächsten Windows Versionen aussehen mit nativen Code? Vorallen Windows 8 auf ARM CPUs wären für das Projekt von interesse, aber da ging ja mal was mit Java und HTML durch die runde ... Alles Fragen, die mir im Moment sorgen machen.


----------



## fadade (10. Juni 2011)

Fragile Heart schrieb:


> Also ich rechne mit einer Entwicklungszeit von 2 Jahren+, was stark von der Arbeitszeit abhängt die ich wirklich zurverfügung habe und der Motivation.


1) 2 Jahre sind dann doch ein bisschen mehr xD
2) mal eben als Hobby 2 Jahre programmieren ... also Leute gibts 
3) ich kann dir ja bei einfachen sachen helfen 
z.B. Fragile Heart sagt: "Du fadade ich brauch ne Methode die das und das argument annimmt und das und das zurückliefert" ^^
bei Sachen wie "Jetz hol mir mal bidde das Feierabendbier!" kann ich dann aber nicht helfen, außer du wohnst hier in Hannover 





Fragile Heart schrieb:


> Wie wird es bei den nächsten Windows Versionen aussehen mit nativen Code? Vorallen Windows 8 auf ARM CPUs wären für das Projekt von interesse, aber da ging ja mal was mit Java und HTML durch die runde ... Alles Fragen, die mir im Moment sorgen machen.


 
du hast Sorgen ey  
Ansonsten würde mein Informatiklehrer sagen "Nimm dir Stift und Papier und entwerfe [Fachbegriff für diese Ablaufdiagramme mit so Blöcken]!"
dann kannst du das ganze ja umsetzen, wenn die Zeit reif ist 

*So nu hab ich aber genug gelabert! Jetz dürfen auch mal andere  *


----------



## Crysis nerd (14. Juni 2011)

Ich würd C++ empfehlen, aber einfach nur, weil ichs cooler finde.
Nein echt.. also ich bin der Meinung, dass man nich zu schnell auf so HighLevel Sprachen umsteigen sollte... Und wenn du dir ein paar Bibliotheken, wie Boost holst, hast du auch schon wieder ne Menge vorgefertigte Funktionen.

Wichtig ist, dass je mehr C#, desto mehr MS. Also mir ist es eig recht wurscht, ob ich für alle Plattformen entwickle, oder nur für Windows, aber C# verwende ich trotzdem nich gerne..

Oke... ich denk wieder total unkoordiniert.. sry für diese unqualifizierte Antwort 

Aber ich lege dir einfach mal C++ nahe und behaupte, dass der Arbeitsaufwand durch C# nicht sooo extrem sinkt.


----------



## Fragile Heart (14. Juni 2011)

Wieso unqualifizierte Antwort? Ich habe doch nach eurer Meinung gefragt und soweit ich das sehe, kann eine Meinung nicht unqualifiziert sein.


----------



## mauorrizze (17. Juni 2011)

Hmm, wenn du Lust hast ein bisschen Sprachen dazu zu lernen würde ich vielleicht auch Java hernehmen. Wo es langfristig mit der Sprache hingeht mag dank Oracle zwar nicht ganz gewiss sein, aber kurz bis "mittellang"fristig schaut es ziemlich rosig aus.

Vergleich mit C++
Nachteile

"neue alte" Sprache (für dich neu zu lernen, wenig moderne Konzepte)
langsamer (je nach Meinung mehr oder weniger)
keine Ahnung ob man die GPU zur Berechnung nehmen kann
Vorteile

ähnlicher Aufbau, ähnliche Syntax -> für dich schnell zu erlernen
gute kostenlose IDEs
großes Repertoire an Klassen und Bibliotheken im 3D und Webservice-Bereich
passable 3D-Darstellung
portierbar für Browser und Android

Wenn du in der x86/PC-Welt bleiben willst und an möglichst performanten Algorithmen feilen willst bist du mit C++ sicher auf einer guten Seite. Da du die Sprache schon gut beherrschst, macht das den eventuellen Mehraufwand zum suchen oder selberschreiben benötigter Funktionen womöglich auch wieder wett.


----------



## Bauer87 (17. Juni 2011)

Es gibt für C++ genügend gute Libs, um das genau so schnell runterzuprogrammieren wie Java. Die meisten im Bereich 3D-Simulation dürften aus der Wissenschaft kommen, die wiederum C++, manchmal auch C verwendet. (OpenCL lässt sich z.B. am einfachsten mit C nutzen.) Von da her kannst du schon bei dem bleiben, was du kannst, und es vielleicht mit etwas C anreichern.


----------



## Crysis nerd (17. Juni 2011)

mauorrizze schrieb:


> passable 3D-Darstellung / langsamer / keine Ahnung ob man die GPU zur Berechnung nehmen kann


 !=


> ausgedehnte 3D Simulationen




Ich würde von Java abraten, alleine schon, weil ich die Sprache irgendwie nicht mag. Außerdem: ibash.de - Zitat #89


----------



## Skysnake (19. Juni 2011)

Fragile Heart schrieb:


> Also ich rechne mit einer Entwicklungszeit von 2 Jahren+, was stark von der Arbeitszeit abhängt die ich wirklich zurverfügung habe und der Motivation. Es ist ein Hobby Projekt, da muss ich nicht so genau schauen.
> 
> Problematisch finde ich allerdings auch noch Sachen die ich im Moment noch gar nicht kenne. Wie wird es bei den nächsten Windows Versionen aussehen mit nativen Code? Vorallen Windows 8 auf ARM CPUs wären für das Projekt von interesse, aber da ging ja mal was mit Java und HTML durch die runde ... Alles Fragen, die mir im Moment sorgen machen.


 Mit C++ bist du recht flexibel, und eignet sich auch recht gut für solche Sachen. Du hast halt absolut freie Hand was du machen willst. Wenn man den Umfang noch nicht abschätzen kann empfinde ich das als SEHR großen Vorteil, da es einem nicht passieren kann, das man gegen Ende plötzlich dasteht und dann mega beschissene Workarounds erfinden muss. Das suckt...

Was den Code anbelangt, so ist das absolut scheis egal mit OS. Die CPUs verstehen den fertigen C/C++ Code und damit ist Sense. Um solche Sachen müssen sich eventuell Compiler-Entwickler sorgen machen, weil sich die Traps oder sonst was ändern, aber ich bezweifle mal SEHR stark, dass du dir Assembler geben wirst. Von daher für dich absolut wayne, das schlimmste was passieren könnte ware ein neu compilieren, wobei das schon SEHR unwahrscheinlich ist. Das OS ist immer abwärtskompatibel.



Bauer87 schrieb:


> Es gibt für C++ genügend gute Libs, um das genau so schnell runterzuprogrammieren wie Java. Die meisten im Bereich 3D-Simulation dürften aus der Wissenschaft kommen, die wiederum C++, manchmal auch C verwendet. (OpenCL lässt sich z.B. am einfachsten mit C nutzen.) Von da her kannst du schon bei dem bleiben, was du kannst, und es vielleicht mit etwas C anreichern.


 Jup, so sehe ich das auch. Wirklich reines C++ programmiert eh keiner (kaum einer). Ich schreib auch immer einen C/C++ misch Code, hau dann noch etwas von anderen Programmiersprachen wie OpenCL, CUDA, OpenMP, MPI oder sonst noch was mit rein. Da ist man halt absolut frei.

OpenGL wäre hier wohl auch ganz interessant, je nach dem was du genau machen willst. Vor allem kannst du das dann auch mit OpenCL gut kombinieren.

Was auch noch einen Blick wert sein könnte ist QT. Damit kannst du Grafikausgaben machen sowohl für Linux als auch für Windows.


----------



## Fragile Heart (20. Juni 2011)

Danke für eure Vorschläge und Meinungen zum Thema.


----------



## chickahoona (25. Juni 2011)

Würd dir auch empfehlen da dann eher C++ zu verwenden, lässt sich doch wie gesagt mit der Menge an libs dies da atm gibt schon alles bewerkstelligen was man will und das auch in "kommodem" Zeitrahmen.


----------

