C++ Schwierigkeitsgrad?
Hallo,
ich bin 18 Jahre alt und will C++ lernen um mein eigenes kleines Unternehmen zu gründen.
Ich wollte wissen wie lange ihr ca. gebraucht habt um C++ "flüssig" schreiben zu können?
Meine Idee ist es Programme zu entwickeln die unfaire Vorteile (z.B automatisch Gegner anvisieren, Gegner durch Wände sehen, etc...) hervor bringen, welchen Schwierigkeitsgrad hat das ganze (ca.)?
MfG
Jakob
5 Antworten
Das Problem mit C++ ist, dass es heute einen derart großen Umfang hat (mit vielen Dingen, die Du nie benötigen wirst), dass man sich mit dieser Sprache oft völlig verloren fühlt, da man als Anfänger ja nicht weiß, was genau davon denn nun eigentlich unabdingbar ist.
Deswegen habe ich mich (seit nun schon 25 Jahren) entschlossen, C++ nur noch als kleines Subset seiner selbst zu nutzen: als C erweitert um den Klassenbegriff aus C++ (natürlich auf Basis des C++ Compilers). Das hat sich als sehr gute Entscheidung erwiesen.
Wie schnell Du lernen wirst, dieses Subset wirklich in optimaler Weise zu nutzen, hängt einfach nur davon ab, wie viel Code Du pro Monat regelmäßig schreiben wirst und ob Dir klar ist, nach welchem Konzept Du all deinen Code gestalten möchtest, mit dem Ziel, für jeden einen Absturz verursachenden oder falsche Ergebnisse liefernden Fehler im Code die das Problem verursachende Stelle schnell zu finden. Sich solches Konzept auszudenken (unter geschickter Nutzung des Preprozessors) bedarf einiger Erfahrung, welche Du natürlich erst mal sammeln musst. Das ist der Teil des Lernens, der am meisten Zeit kosten wird. Sei Dir dessen bewusst.
Wenn Du aber wirklich beim Lernen nur Code zu schreiben suchst, der später Teil deines Produktes sein soll (dich also nicht mit Spielbeispielen aufhältst) wirst Du in einigen Monaten die wichtigsten Erfahrungen schon dein eigen nennen.
Was Spiele betrifft, wäre C# die richtige Wahl und wohl folgendes Buch:
Ich selbst habe mich nie mit der Programmierung von Spielen befasst, kann dir aber versichern, dass Du mit dem Beherrschen von C erweitert um das Klassenkonzept aus C++ einerseits und C# andererseits unter strategischen Gesichtspunkten eine wirklich gute, wohl sogar die sinnvollste Wahl an Programmiersprachen getroffen hättest. Wer mit den beiden gut umgehen kann, wird sich bei Bedarf fast sofort auch in jede andere Programmiersprache reinfinden.
Etwas Umgang mit C# würde dir insbesondere auch klar machen, welche Form man den eigenen C++ Programmen geben sollte, damit ihr Code auf Dauer verständlich bleibt: ein sehr wichtiger Aspekt, wenn Du mit eigenen Programmen Geld in eigener Regie Geld verdienen möchtest – und das über Jahrzehnte hinweg.
Perfekt, danke! Ich werde mich mal in die drei Sprachen einlesen und schauen ob es wirklich für mich passt.
Ich frag lieber nicht was du mit Form meinst die ich den C++ Programmen geben soll, werde ich sicherlich im Laufe der Zeit noch lernen :p
Danke!
Wie wichtig geeignete "Form" ist, wurde mir erst klar, nachdem ich mehrfach Code zu ändern hatte, den andere geschrieben hatten. In Java oder C# geschriebener fremder Code war für mich weit einfacher zu verstehen als in C/C++ geschriebener. Letzterer kann im schlimmsten Fall absolut unverständlich sein. Das liegt daran, dass es
- für C/C++ keine allgemein anerkannten Regeln für die Gestaltung von Code-Dokumentation gibt, für Java und C# aber sehr gut durchdachte, und
- vor allem C++ Freaks dazu neigen, ihren Code weit stärker auf allzu dünne Funktionen, Methoden und Klassen zu verteilen als notwendig. Derart übertriebene Modularisierung lässt die Zahl der Teile, aus denen ein Programm besteht, schnell steigen, was dann selbst wieder zu höherer Komplexität (und daher weniger Verständlichkeit) führt.
Achso danke, jetzt kenn ich mich aus was du meinst! Auf Deutsch: Java/C# sind einfacher zu verstehen weil die Mehrheit nach einem Schema programmiert und bei C/C++ das nicht gemacht wird, richtig?
Ich hab im Moment das Buch "C++ Programmieren für Einsteiger" von Michael Bonacina, weißt du ob das gut ist?
Kennst du zufällig auch noch Kurse die man besuchen kann um Allgemeinwissen im Programmieren aufzubauen?
Mir sind tatsächlich (von anderen geschriebene) C++ Programme begegnet, in denen grob 1/3 aller Methoden aus oft nur zwei, drei oder gar nur einer einzigen Wertzuweisung bestand. Das ist dann so, als hätte jemand in einem Puzzle jeden einzelnen Puzzlestein nachträglich nochmal in bis zu 10 kleinere zersägt.
Das Buch "C++ Programmieren für Einsteiger" von Michael Bonacina kenne ich nicht, aber vom Inhaltsverzeichnis (und insbesondere vom Umfang her) zu urteilen, scheint es mir für Einsteiger gut geeignet.
Kaufe dir aber gleichzeitig auch ein vergleichbar dünnes Buch zu ANSI C (um zu wissen, was von C++ nicht Teil von C ist).
Kurse die man besuchen könnte, um Allgemeinwissen im Programmieren aufzubauen, kenne ich nicht. Habe sie auch nie vermisst. Durch das Erstellen von Programmen, die jemand tatsächlich nützten (die also jemand braucht, etwa Du selbst, um Code zu generieren oder den einer oder anderen hilfreichen Preprozessor zu schreiben), lernt man viel mehr.
Danke danke!
ANSI C Buch kauf ich mir dann in den nächsten Tagen mal, empfiehlst du dieses Buch jetzt auch noch dazu oder ist das mehr egal? https://www.amazon.de/Spiele-entwickeln-mit-Unity-3D-Games-dp-3446445633/dp/3446445633/ref=dp_ob_image_bk
Was genau meinst du mit C++ hinzugekommene Klassenkonzept?
Werde mich dann in den nächsten Tagen mal ransetzen und ein bisschen was in C++ probieren.
Wie schon gesagt: Ich habe selbst nie Spiele implementiert. Wenn ich's aber tun wollte, würde ich wohl mit dem genannten Buch anfangen.
Zum Klassenkonzept: C selbst kennt keine Klassen, die wurden erst mit C++ erfunden (um sog. "objektorientierte Programmierung" zu unterstützen). Deswegen sage ich: Ich nutze "C erweitert um das Klassenkonzept aus C++".
Mit anderen Worten: Was ich als meine persönliche (einfache) Version C+ von C++ nutze ( im Sinne von https://www.gutefrage.net/frage/was-ist-der-unterschied-zwischen-c-und-c-welches-ist-einfacher-fuer-einsteiger#answer-365032284 ) ist C erweitert um das Klassenkonzept aus C++. Mehr von C++ hinzunehmen würde ich nur in Projekten, in denen mir das nützen würde. Ein Fall, der bisher nicht eintrat.
Achso, kenn mich aus, danke!
Danke für die ganzen Infos und noch einen schönen Abend bzw. guten Morgen :)
Lg
Naja die Syntax und das schreiben einfacher Programme hast du schnell heraus, das geht in ein paar Monaten.
Allerdings lernt man auf dem Gebiet eigentlich nie wirklich aus. Ich Programmiere seit mittlerweile 10 Jahren und lerne immer noch dazu. Die Frage ist also eher wie schnell du so weit bist dass du umsetzen kannst was du umsetzen möchtest, aber das hängt eben von der Platform ab auf welcher du entwickeln willst.
Meine Idee ist es Programme zu entwickeln die unfaire Vorteile (z.B automatisch Gegner anvisieren, Gegner durch Wände sehen, etc...) hervor bringen, welchen Schwierigkeitsgrad hat das ganze (ca.)?
Das was du hier beschreibst ist eine Anti Cheat Engine jedes Spiel besitzt da seine eigene und besitzt auch schon verfahren um so etwas zu erkennen. Ist am Ende ein Katz und Maus Spiel zwischen Entwickler und Cheatern.
Die Anti Cheat Engine muss ja am Ende auf dem System auf welchem gecheated wird das ganze erkennen. Cheating auf Server Ebene zu erkennen ist äußerst schwer.
Am Ende reicht aber für so etwas Programmieren alleine nicht aus. Du musst Algorithmen entwickeln können die so etwas erkennen können und du musst zudem besser als die Spieleentwickler und andere Anbieter sein damit dir das am Ende auch jemand abkauft.
Sprich wenn das dein Ziel ist, dann dauerts lange bis du auf diesem Level bist. Vermutlich kannst du in dem Sinne auch Informatik studieren, dort lernst du solche Algorithmen zu entwickeln.
Studium kommt für mich leider nicht in Frage, habe keine Matura oder sonst was.
Kennst du gute Wege um sowas zu lernen außer durch das Studium? (z.B Bücher, ...) ?
Das man bei C++ nicht wirklich auslernt hab ich schon des öfteren gehört deswegen frag ich mich auch was ich alles wirklich perfekt können muss um gute Cheats zu programmieren, mir wird aber nichts anderes übrig bleiben als alles zu lernen.
LG & danke für die Antwort
Wenn du selber Cheats programmieren willst ist es die Frage ob dir überhaupt jemand welche Abkauft.
Die gehen meist entweder als OpenSource oder Beerware usw weg. Also abseits von etablierten Unternehmensstrukturen.
Zudem sind cheats für jedes Spiel anders und müssen sich auch an dessen API richten, womit die meistens in der Sprache geschrieben ist in welcher auch das Spiel entwickelt wurde. Das kann muss aber nicht C++ sein. Also C++ ist ein Einstieg aber das bedeutet nicht, dass du jetzt Cheats für jedes erdenkliche Spiel entwickeln kannst.
Ich würde sagen der beste Weg ist Matura nachmachen und studieren, oder Studienberechtigungsprüfung ablegen und studieren, ansonsten fehlt dir für komplexere Sachen vermutlich der notwendige Mathematische Background.
Was man eben oft nicht beachtet ist, dass Informatik eigentlich zum großteil nur Mathematik ist. Sprich man muss die Mathematik beherschen um auch die Algorithmen zu verstehen.
C++ ist die Hölle
Diese Aufgabenstellungen kannst du aber nicht nur mit Software lösen.
Dazu brauchst du extrem gute Kenntnisse in Elektronik und hardwarenaher Programmierung. Bist du da fit auf dem Gebiet?
Leider nicht, eventuell kenne Ich mich ein bisschen mit Hardware aus aber programmiert hab ich noch nie.
Wenn du hardwarenah progranmieren willst, z.B. Microcontroller dann ist es meistens besser erst mal mit C anzufangen. Für sowas brauchst du aber Umfangreiches Wissen in Elektronik.
Wenn du nur PC Programme schreiben willst, dann C++
So kleine Anfängerprogramme kannst du schon nach ca. 3 Monaten schreiben (je nachdem wie viel Zeit du ins Lernen investieren kannst).
Kommt halt auch drauf an ob es für das was du genau machen willst schon fertige Bibliotheken gibt oder ob du alles selber schreiben musst.
uC kann man auch super mit C++ Programmieren, also C ist ebenso Hardwarenahe wie C++ auch, nur dass C++ noch ein paar zusätzliche Abstraktionen hat die C eben nicht kennt und die einem das Arbeiten erleichtern.
Perfekt, danke! Ich werde mich mal langsam rantasten, ich denke ich würde es hinbekommen wenn ich mich genug damit beschäftige.
Kommt drauf an ob auf dem Microcontroller schon ein Betriebssystem läuft.
Wenn nicht reicht C völlig aus, weil man die Vorteile von C++ gar nicht voll ausspielen kann.
Und ist auch von der Anwendung abhängig, ich muss öfters sehr zeitkritische Echtzeitanwendungen programmieren, hier ist selbst C problematisch wenn man nicht genau weiss was der Compiler macht. Ich programmiere dann sogar noch in Assembler, da habe ich die absolute Kontrolle über alles.
Dagegen ist in C++ programmieren wie Lego :)
Wenn nicht reicht C völlig aus, weil man die Vorteile von C++ gar nicht voll ausspielen kann.
Doch kann man auch komplett ohne OS und mache ich beinahe täglich.
Man sollte eben kein New Verwenden aber das wars eigentlich auch schon. Template Metaprogrammierung, Klassen usw kann man ohne einschränkungen nutzen.
Und ist auch von der Anwendung abhängig, ich muss öfters sehr zeitkritische Echtzeitanwendungen programmieren, hier ist selbst C problematisch wenn man nicht genau weiss was der Compiler macht. Ich programmiere dann sogar noch in Assembler, da habe ich die absolute Kontrolle über alles.
C ist hier genau so hardware nahe wie C++. Immerhin ist C++ ein Superset von C und C++ und C lässt sich komplett mischen. Wenn man möchte kann man also einfach einen Teil in C oder eben in C Style Code schreiben, der C++ compiler macht das nicht anders als der C Compiler. Zudem kann man C Files mit dem gcc zu Objektfiles machen und mit dem g++ linker auch mit C++ zusammenführen, sodass man wirklich den C Compiler auch verwenden kann.
Was Assembler angeht so kommts drauf an ob man den Prozessor gut genug versteht oder nicht, wenn nicht schreibt jeder C compiler schnelleren Assembler, besonders bei ARM CPUs holt man da Erfahrungsgemäß nicht mehr viel raus. Manchmal ists notwendig aber da reicht der Inline Assembler.
ich bin 18 Jahre alt und will ... mein eigenes kleines Unternehmen ... gründen.
...
Meine Idee ist es Programme zu entwickeln die unfaire Vorteile ... hervor bringen, ...
Und du meinst ernsthaft, mit dieser "Geschäftsidee" kannst du ein Unternehmen gründen? Ohne Vorkenntnisse? Als Schüler? Für welche Kunden? Wer zahlt dafür?
Da brauchst du aber einen sehr gutgläubigen Sponsor, der dir die ersten Jahre über die Runden hilft, bis dir etwas vernünftiges einfällt.
Wie wär's mit einer anständigen Ausbildung?
Klar kann man damit ein Unternehmen gründen, mein Ziel ist es ja nicht ein Milliarden Unternehmen aufzubauen sondern ein kleines Unternehmen bei dem ich einfach nach meiner eigenen Pfeife tanzen kann.
Ich weiß dass das ganze schwierig wird aber ich denke dass ich mich dafür überzeugen kann und dass es mir Spaß machen wird.
Für welche Kunden ist eine berechtige Frage aber es gibt reichlich Spieler die cheaten und wenn ich es schaffe einen guten Cheat zu programmieren dann werd ich dran was verdienen.
Klar kann das schief gehen aber warum sollte ich das Risiko nicht aufnehmen? Es würde definitiv viel mehr rausschauen als bei der Ausbildung die ich gerade mache.
LG
Danke für die Antwort!
Dass es viel Aufwand werden wird ist mir bewusst, bin aber bereit C++ (und eventuell andere Sprachen falls nötig) zu lernen.
Die einzige Idee die ich bis jetzt hatte war das mit den Spielen, falls mir noch etwas anderes einfällt was mir Spaß machen würde zu programmieren, denke ich drüber nach ob ich das machen will.
LG