C# oder C++? Womit macht der Anfang Sinn



  • Okay es ist wiDmen. Einer der Fehler die mir durch die Umgangssprache hin und wieder vorkommen ( genauso wie desto was hier desdo ausgesprochen wird ^^)
    Aber ohne Hinweis darauf lernt man es ja nicht.

    Aber ja, mein Wissen in diesem Bereich ist noch sehr oberflächlich. Ich weiß auch gar nicht alles was er dort noch alles gibt, da ich selbst aber ein intensives Interesse daran habe etwas selbst zu entwickeln und umzusetzen, zu sehen wie es abläuft und was daraus auch ohne mein einwirken gemacht wird - empfinde ich als höchst interessant.

    Aber gut, ja da habe ich aus den Seiten wohl einige Fehler direkt mit übernommen. Aber die Korrektur dadurch ist wichtig. Es fehlt mir natürlich auch die tiefe in diesem Bereich

    EDIT: Mit dem smartphone zu schreiben ist teilweise echt happig wenn dauernd der Text gelöscht wird wegen Auto logout

    Aber daher auch die Frage auf was man sich stürzen sollte als totaler Neuling. Wenn es überhaupt keinen Spaß letztlich macht ist es das falsche. Aber mir sagt der Gedanke nun mal sehr zu, eigenes für andere auch zu erschaffen



  • Die Frage ist warum du Programmieren lernen willst. Bei den meisten Menschen ist es das Interesse an der Technik, was kann man machen und wie wird es gemacht. Man fängt mit Kleinigkeiten an und versucht Probleme zu lösen. Für jemanden der sich wirklich für Programmieren interessiert,k stellt sich nicht die Frage welchen Sprache er lernen soll, sondern wie er ein bestimmtes Problem am besten lösen kann. So war es bei uns früher mal. Heute scheint das anders zu sein. Man liest Kommentare von irgendwelchen Leuten und bildet sich eine Meinung auf Grund seines Halbwissens. In der Zeit wo man sich damit beschäftigt irgend einen Unsinn zu lesen hätte man versuchen können die Probleme zu lösen die man hat. Was ist es für ein Problem, wie könnte man es lösen, welche Werkzeuge braucht man dafür.
    Ich habe mal aus Spass Star Basic für Openoffice 'angeeignet', nur soviel wie ich dachte das ich brauche, weil ich ein Problem hatte das ich effektiv lösen wollte. Wenn man mich heute fragt weiss ich garnicht mehr genau wie das geht, was solls, ich hab es hinbekommen. Aber heute will man ja keine Zeit mehr verschwenden, man will die "beste Sprache" lernen, sich nicht auseinandersetzen mit der Technik und NUR das Lernen was man für sinnvoll erachtet. Wenn man Interesse für was hat wird man bald wissen was für eine Sprache man lernen will, das kommt dann nämlich von alleine. Das kann dir keiner sagen und keiner zeigen.
    Mein Rat ist, schau dich ein wenig um und versuche alltägliche Probleme zu lösen mit einfachen Werkzeugen. Eigne dir Grundkenntnisse der Informatik an und schau wie dein Computer was macht. Manche Sachen sind erstaunlich einfach. Oder verschwende Tage und Wochen damit andere Leute zu fragen was für dich am besten sein könnte.



  • Spiele programmieren zu wollen ist eine starke Motivation und die solltest du nutzen. Man kann Menschen nämlich nicht motivieren, sondern nur demotivieren. Motivation ist ein Feuer das NUR von dir kommen kann, von Außen kann man höchsten Funken setzen, ob es dann brennt liegt nur bei dir.

    Ich würd auch mit einer einfach Sprache wie C# oder Java anfangen und einer fertigen Engine. Da bist du erst mal gut ein Jahr beschäftigt. Tiefer in die Materie eintauchen kannst du immer noch. Viele Spiele werden ja auch in Java geschrieben, siehe Minecraft oder viele Android-Sachen, die Sprache oder halt C# sollte schon für die ganzen Grundlagen mehr als reichen.

    Schneller, höher und weiter kannst du dann immer noch machen.

    Melde dich in Spieleprogammierforen und C#, und oder Java-Foren an und lasse dich beraten. Suche dir gute Tuts und/oder Bücher und dann los mit ganz einfach Sachen wie Würfelspiel, Roulette, Pong, Snake etc auf Konsolenbasis und dann vielleicht etwas 2D mit SDL, SFML usw und zum Schluß dann 3D mit fertigen Engines oder roh per OpenGL oder so. C++ sollte dann auch irgendwann auf dem Programm stehen, aber alles in kleinen Schritten.

    Es gibt keinen Shortcut zum Spieleprogrammierer.



  • Erst schon mal vielen Dank, ich denke C# ist dann wohl die Sprache an die ich mich heran trauen werde 🙂

    Aber ja, als ich 12-16 Jahre alt war, war das ganze auch noch anders. Da habe ich mir meine Scripte selbst geschrieben. Habe in cstrike 1.3-1.6 im Grundcode selbst gesucht und die Einstellungen zur Hardware modifiziert um bestmöglichen Ergebnisse zu erzielen. Auch habe ich es mit "shortcuts " probiert, mit dem Erfolg das ich aufgrund der mangelnden Möglichkeiten eher unzufrieden war und habe mir andere Möglichkeiten gesucht. Mit 17-18 kam es dann leider zu einem Umstand, welcher mich die nächsten 6 Jahre von allen Ideen die ich hatte, mich von dem ganzen zurücktreten ließ.

    Mittlerweile sind wir aber ja schon viel weiter. Die Suchmaschinen wie Google können speziell genutzt werden und auch die neuen Entwicklungen sind schon etwas begrenzt. Ich denke, wäre ich 10 Jahre früher geboren währe ich wohl auch in dem Bereich wo noch alles "neu erfunden" wurde.

    Da es einfach heute sehr selten nötig ist noch mal selbst Hand anlegen den Code zu legen, das meiste gibt's über Google.
    Daher auch meine Frage mit der Programmiersprache anstatt selbst drauf los zu legen. Welche da am sinnvollsten ist für einen kompletten Neuling.

    Ich organisier mir jetzt jedenfalls mal ein paar Fachbücher zu C# und werde mich am WE direkt dran setzen
    🙂 euch noch einen letzten schönen Weihnachtstag!



  • NoShortcut schrieb:

    Spiele programmieren zu wollen ist eine starke Motivation und die solltest du nutzen. Man kann Menschen nämlich nicht motivieren, sondern nur demotivieren. Motivation ist ein Feuer das NUR von dir kommen kann, von Außen kann man höchsten Funken setzen, ob es dann brennt liegt nur bei dir.

    Das stimmt nicht.
    In der Gruppe zu Programmieren kann durchaus die Motivation fördern, weil dies den inneren Schweinehund, der sagt, lass dich gehen, bekämpft.



  • Kael schrieb:

    Erst schon mal vielen Dank, ich denke C# ist dann wohl die Sprache an die ich mich heran trauen werde 🙂

    Trau dich besser an Java heran.

    C# ist KEIN C++ und auch KEIN C, auch wenn es wegen dem Buchstaben C ähnlich klingen mag ist es nicht ähnlich.

    Java solltest du nehmen, weil zur Zeit die ganze Industrie und das gilt auch für die Spieleindustrie zu Linux wechselt und Java durch Android sowieso hier schon führend ist.

    Mit C# klebst du dir einen fetten Klotz an Bein, man nennt ihn Windows.
    Windows für sich betrachtet ist jetzt nicht so schlecht, ich bin kein Windows Hasser, aber ich sehe auch was auf dem Markt passiert und Microsoft schwimmen so langsam die Fälle davon.
    Das ist momentan zwar nicht akut, aber in 2020 könnte Windows ein totes OS sein, tot in dem Sinne, dass neue Software immer weniger dafür entwickelt wird, weil der ganze Markt umgeschwenkt ist.
    Und auch im mobilen Markt gewinnt MS keinen Boden, also, wo willst du da C# nutzen?

    Mittlerweile sind wir aber ja schon viel weiter. Die Suchmaschinen wie Google können speziell genutzt werden und auch die neuen Entwicklungen sind schon etwas begrenzt. Ich denke, wäre ich 10 Jahre früher geboren währe ich wohl auch in dem Bereich wo noch alles "neu erfunden" wurde.

    25 Jahre früher.

    2004 war im Prinzip schon alles gereift. Was folgte war nur noch eine Verfeinerung und mehr Javascripts und Webzeugsgedöns.

    Wenn dir die Systemprogrammierung wichtig ist, dann ging mit C und C++ etwa Anfang 1989 die Post ab.

    Da es einfach heute sehr selten nötig ist noch mal selbst Hand anlegen den Code zu legen, das meiste gibt's über Google.

    Ja, ein klarer Motivationskiller, was das das Programmieren anbelangt.

    Daher auch meine Frage mit der Programmiersprache anstatt selbst drauf los zu legen. Welche da am sinnvollsten ist für einen kompletten Neuling.

    Java weil es eine große API bietet und dir daher Arbeit abnimmt. Die Objekt Programmierung lernst du damit auch und am Ende bist du schneller mit dem Lösen des Problems fertig.

    Python weil es als Scriptsprache noch einmal ein Stückchen einfacher ist als Java und man damit noch schneller ans Ziel kommt, allerdings abstrahiert es stärker, so dass man weniger mitkriegt was unter der Haube abläuft.

    Wenn du mutig bist und dir Low Level Sachen zutraust, dann wäre C sinnvoll, weil der Sprachumfang überschaubar und schnell zu lernen ist.
    Aufgrund der Beschaffenheit gehst du tief ins Low Level runter und fängst so an zu verstehen, wie das alles so unter den Abstraktionsebenen funktioniert.
    Das Problem ist allerdings um fertig zu werden, brauchst du viel mehr Zeit und C kann auch sehr demotivierend sein.
    Auch besteht die Gefahr, dass man später schlechten C++ Stil entwickelt, wenn man später mit C++ die Dinge in C Manier löst und das ist nicht gut.

    C++ selbst ist zu umfangreich. Es bietet viele Programmierparadigmen und Konzepte die alle zu lernen, kann überfordern und man kann sich gehörig in den Fuss schießen wenn man falsch abbiegt.
    Bei Java kannst du dich dagegen auf die Objekt Orientierte Programmierung konzentrieren, und so nach und nach die Konzepte lernen.



  • C# ist nicht auf Windows begrenzt, sondern es gibt zum einen Mono für Linux und gerade für die mobilen Geräte (Android, iOS, WinPhone) gibt es Xamarin (vom selben Entwickler).



  • Und das Motivation nur von einem selbst kommt ist falsch. Einfach mal nach folgendem suchen - intrinsische und extrinsische Motivation



  • Th69 schrieb:

    C# ist nicht auf Windows begrenzt, sondern es gibt zum einen Mono für Linux und gerade für die mobilen Geräte (Android, iOS, WinPhone) gibt es Xamarin (vom selben Entwickler).

    Ich denke du weißt was ich meine.

    Wenn er C# lernt, dann nimmt er wahrscheinlich ein Buch in dem API Funktionen von .NET verwendet werden und davon sind einige Windows only und lernen wird er es höchstwahrscheinlich mit einer .NET Runtime Umgebung und schon ist er im Windows Sumpf verfangen.

    Zumal Mono im Vergleich zur .NET Runtime nicht besonders schnell ist.
    Das motiviert nicht gerade.

    Die Java Hotspot Engine gibt's dagegen auch für Linux.

    @motivatooor

    Sag ich doch.



  • .NET wird demnächst Open Source und von Microsoft selbst auf Linux, OsX etc portiert.



  • Zumal Windows wohl eher nicht zu unseren Lebzeiten vom Markt verschwinden wird. Grund sind nicht der Ottonormalverbraucher, sondern die Firmen. Da wird heute noch MS-DOS-Software eingesetzt und man sieht wie schwer es fällt ein WindowsXP zu Grabe zu tragen und das ist mittlerweile 15 Jahre alt. Firmen brauchen seeeeehr lange um sich umzustellen, genau wie alter C und C++ - Code noch seeeehr lange existieren wird. Eine Umstelle würde viele einfach in die Insolvenz treiben, weil die die Zeit und damit das Geld nicht haben um zurüsten "Never change a running system". Ich denke, selbst wenn Microsoft totalen Mist baut, wird es locker 50 Jahre dauern bis es komplett nicht mehr genutzt wird, ähnlich wie C und C++.

    Windows10 sieht danach aus, als würde wieder mehr auf den Kunden eingegangen und wenn das Windows dann noch günstiger wird(Eigentlich ist es eh kostenlos, da bei jedem PC mit dabei), dann wird es den Markt nicht gerade schwächen. Wenn Linux in den nächsten 10 Jahren über 2% Marktanteil kommt, bin ich tief beeindruckt und wenn es irgendwann so verbreitet ist wie OSX, dann wäre dies fast schon ein Wunder. Allerdings sollte man nicht erwarten, dass es Windows jemals auch nur Ansatzweise den Rang ablaufen wird.

    Einen großen Marktanteil hat Linux bei den Mobilen durch Android. Im restlichen Desktop-Markt sehe ich keine großen Run von Linux, auch wenn Spielfirmen da jetzt ein wenig probieren was geht. Wenn die Kunden nicht kaufen, wird das auch ganz schnell wieder eingestampft und welche Firma kann es sich schon leisten auf Dauer nur 1% der PC-Nutzer derart zu supporten?

    Wer "nur" für Windows und Android entwickelt hat die meisten Kunden im Sack. Das heißt mit C# und Java ist man schon gut im Rennen und kann auch schnell und unkompliziert entwickeln, allein schon durch die genialen Stdlibs der beiden.

    Und darum geht es doch, dem Programmierer so viel Arbeit abzunehmen wie es geht. Denn eins ist immer noch begrenzt und das ist die Lebenszeit. Ich denke in 90% der Softwareprojekten braucht es kein C oder C++, da es dort einfach nicht auf die ultimative Geschwindigkeit ankommt.



  • Nur dass der Desktop Markt immer uninteressanter wird bzw schon ist. Laptops gehen noch halbwegs aber mal sehen wie lange noch.
    Tablets und Smartphones laufen ihnen den Rang ab und da sind die Big Player Google und Apple und nicht Microsoft.



  • Wenn die Mobilen wirklich den Markt erobern, hast du recht. Ich sehe dies aber nicht so extrem. Sicherlich brauchen ein paar Menschen dank Tablet oder Smartphone keinen zusätzlichen Rechner mehr, weil ihnen Chats und Fotobearbeitung unter Android reichen. Es gibt aber immer genug Leute, die auch ihre Hobbys haben, wie Musik machen, Fotografieren, größere Spiele zocken. Auch der Schriftverkehr, Drucksachen, Hard- und Softwareentwicklung sind weite Damänen des klassischen PCs, Laptops. Keiner möchte wirklich längere Arbeiten auf einem Tablet oder Smartphone machen, da sind wir dann ganz schnell wieder bei Zusatztastaturen. Auch wollen die Menschen dann wieder mehr auf dem Bildschirm sehen usw.

    Mobile Geräte sind für einige ein komplette Ersatz, für viele denke ich einfach nur ein Zusatz. Touch ist eben nie so ergonomisch wie ein haptisches Feedback, die die Mechanik einen bietet. Berühren und damit Fühlen geht schneller als Sehen, deswegen gibt es Kampfkünste wie WingTsun die darauf aufbauen. Ein voll geschmierter Bildschirm ist auch nicht jedermann Sache, wenn er wirklich mit dem Gerät arbeiten will.

    Tablets und Smartphones sind daher Casual-Geräte und ersetzen in meinen Augen nicht oft den PC, sondern ergänzen ihn eher.

    Ich glaube nicht dass der Laptopmarkt noch groß weiter einbrechen wird. So ein Ultrabook ist schon sehr mobil und angenehm bei der Arbeit, das möchte man ungern gegen ein Tablet komplett eintauschen.



  • wenn du bei einer firma angestellt werden moechtest, wirst du mit c++ bessere chancen haben.
    wenn du fuer dich spiele machen moechtest, kannst du das in der sprache machen die dir am besten gefaellt, c++, c#, VB, java, js, etc. fuer alle gibt es libs und umgebungen sowie foren die dir helfen spass zu haben.



  • Ethon schrieb:

    Nur dass der Desktop Markt immer uninteressanter wird bzw schon ist.

    Bei Privatkunden vielleicht (wobei ich noch nie was mit einem Tablet anfangen konnte, und obwohl ich jetzt selber einen habe, kann ich immer noch nichts damit anfangen). Aber in Firmen werden noch lang genug Windows PCs eingesetzt werden. Ich kann den Trend Richtung Windows leider bestätigen. Unsere Software gabs früher auch für Linux und alle möglichen Unix Varianten. Wir machen was im CAD/PDM Bereich. Da gabs früher die Unix CAD Workstations, z.B. mit Irix. Gibts alles praktisch nicht mehr, interessiert keinen mehr. Wir haben seit paar Jahren nur noch die Windows Version, alles andere haben wir eingestampft. Seh da jetzt keine Chance, dass sich da großartig was ändern wird. Diese ganze Software ist sehr komplex und umfangreich und es gibt hunderte Zuliefererfirmen wie uns, die da auch sehr viel Software schreiben. Den Catia Client gibts jetzt nur noch für Windows, die werden nicht ohne sehr gute Gründe wieder eine Linux Version schreiben.



  • rapso schrieb:

    wenn du bei einer firma angestellt werden moechtest, wirst du mit c++ bessere chancen haben.
    wenn du fuer dich spiele machen moechtest, kannst du das in der sprache machen die dir am besten gefaellt, c++, c#, VB, java, js, etc. fuer alle gibt es libs und umgebungen sowie foren die dir helfen spass zu haben.

    Bin mir nicht so sicher. Wenn hier Firmen suchen dann immer Leute mit Unity Erfahrung.



  • Ethon schrieb:

    Bin mir nicht so sicher. Wenn hier Firmen suchen dann immer Leute mit Unity Erfahrung.

    Das sind dann aber eher kleinere Firmen und viel mobile bereich, oder? Bei groesseren wird naemlich schon sehr viel in C++ gemacht oder aufs UDK gesetzt.



  • Ich habe mich nun für C# entschieden. Wenn Java und C# ähnlcih sind, sollte ein Umsteigen mit einem Aufwand ja möglich sein. Und wenn das Großteilig beherrscht wird, werde ich versuchen auf eine Sprache wie C++ umzusteigen

    Ich denke nicht das der PC Bereich verschwinden wird. Mittlerweile gibt es PCs für knapp 200-400€auf dem vernünftig Spiele laufen.
    Der PC wird soweit nicht verschwinden, eher ist es für mich so das der PC noch "erweitert" wird. Heißt das diese ganzen Tablets, Mobiles etc. den Computer auf lang oder kurz unterstützen werden.
    Es wird nie so angenehm sein, auf einem Tablot zu schreiben wie auf einem PC, einfach weil die Tastatur viel angenehmer ist 🙂
    Der PC bietet durch die Aufrüstungsmöglichkeiten auch einen nachhinein Komfort welchen ich bei Tablets & Co nicht habe.
    Daher sind Tablets, Handys und Co eher so ein Ding was "nice to have" ist und welches den Computer auf lang oder kurz wohl ergänzen wird



  • Ich glaube auch nicht, dass der PC verschwinden wird. Ich habe jahrelang mir nur Laptops gekauft, dann kamen Smartphone und Tablets dazu. Am Ende habe ich mir doch wieder einen richtig schönen Desktop-PC, mit zwei Monitoren und dicker GPU, hingestellt und das Tablet verschenkt und ich habe die Entscheidung nicht bereut. Nirgends kann man so vernünftig arbeiten wie am Desktop. Abends im Bett oder auf der Couch dann mit einem Ultrabook noch Kleinigkeiten machen, ist aber auch sehr entspannend. An manchen Tagen wird auch nur im Bett geblieben und programmiert.



  • Zur Frage C# oder C++, da würde ich auf jeden Fall zu C++ raten. Da hast du von Void-Zeigern und blanken Arrays bis STL alles in einem Paket. Ja sogar Assembler kannst du nutzen. Du kannst ganz weit runter an die Maschine gehen, oder bequem abstrahieren, wo dir so gut wie jedes Problem der Speicherverwaltung durch RAII, Smartpointer und STL komplett abgenommen wird. Und du kannst deine Klassen extrem fein einstellen, das musst du aber nicht. Und all die schönen Libs wie OpenCV und so laufen mit bestmöglicher Geschwindigkeit.


Anmelden zum Antworten