Wohl eine der meist gestellten Fragen unseres Bereiches. Wird langsam mal Zeit, dass wir was zum verlinken haben
Da sicherlich die Frage kommt, womit ich angefangen habe, klären wir das zuerst. Vor Urzeiten habe ich eine komische Version von Basic in die Finger gekriegt, aber auch schnell wieder aufgehört. Ich war einfach noch viel zu jung. Viele Jahre später kam durch die Schule Python und kurze Zeit später habe ich einen der schlimmsten Fehler meiner 'Programmierkarriere' begangen. Ich habe mit einem C/C++ Mischmasch Gamehacking angefangen. Hat meinen Stil komplett ruiniert und es war harte Arbeit das wieder hinzubiegen. Begeht diesen Fehler auf keinen Fall! Durch das Berufskolleg kamen dann Grundlagen von Java, HTML, PHP, CSS und SQL dazu. Sind natürlich nicht alles Programmiersprachen . Durch ein Praktikum habe ich mich für normale Anwendungen in C# verliebt. Nun studiere ich Informatik und behaupte ASM fließend lesen und schreiben zu können(MrSm!th glaubt mir das sogar!).
Aber genug zu mir, kommen wir zur Auswahl der 'richtigen' Sprache. Nun, die Antwort ist einfach, es gibt sie nicht. Es hängt ganz vom Anwendungsbereich ab. Wer sich tief ins Gamehacking stürzen will, wird kaum um C/C++ herumkommen. Wenn es nur um einfache Trainer geht, ist so gut wie jede Sprache geeignet. Wer nur normale Anwendungssoftware schreiben will, hat die freie Auswahl, aber gehen wir doch mal ins Detail mit einigen der größeren Sprachen
C/C++
Ich fasse hier bewusst C/C++ zusammen, die beiden Sprachen sind einfach zu Verwandt um sie getrennt zu behandeln.
Wie bereits erwähnt, ist es in meinen Augen die perfekte Sprache fürs Gamehacking. Nahezu jedes große Spiel ist in C++ geschrieben. Dies wird euch das Reversen später ein wenig erleichtern. Performance mäßig an der Spitze. Der Einstieg ist ein wenig verwirrender als in andere Sprachen, Pointer sind keine leichte Sache. Auch ist die Lernkurve sehr gering. Aber wer dies alles durchsteht hat ein universell einsetzbares und sehr mächtiges Werkzeug. C/C++ kann in jedem Bereich eingesetzt werden.
Wer mir jetzt mit Mikrocontrollern kommt die nur mit ASM programmierbar sind kriegt eins auf die Finger!
Es gibt Zwei große Bibliotheken, qt und Boost. Beide sind unglaublich umfangreich. Sind zwar kein muss, aber sehr zu empfehlen wenn man weit fortgeschritten ist. Nehmt zum Lernen unbedingt ein Buch, Tutorials sind hier in meinen Augen unbrauchbar!
.Net Sprachen
Fangen wir mit einem Vergleich an:
Du hast Hunger. Bei vielen Sprachen kommst man sich teils so vor, als müsste man das Feuer neu erfinden bevor man kochen kann. Bei .Net kommt der Lieferdienst. Du hast zwar keine Ahnung wie es gemacht wurde, aber es ist da Das .Net Framework ist einfach unglaublich mächtig.
Die beiden großen .Net sprachen sind C# und VB. Es besteht ein riesen unterschied in der Syntax aber nicht im Funktionsumfang. Ich persönlich finde die VB Syntax grauenhaft, aber diese Entscheidung muss jeder für sich selbst treffen. C# Syntax liegt näher an der von anderen häufig verwendeten Sprachen. VB Code lässt sich in der Regel problemlos in C# übersetzen und natürlich auch andersrum. Für Anwendungssoftware in meinen Augen die perfekte Sprache, beim Gamehacking gibt es einige Schwierigkeiten, welche aber umgangen werden können. Allerdings wird meines Wissens dazu eine Native Sprache wie C++ benötigt. Trainer, Tastendrücke und vergleichbares sind allerdings Problemlos möglich.
Es gibt auch die Möglichkeit .Net unter C++ zu verwenden. Das ganze heißt dann C++/CLI. Erfreut sich allerdings nicht an sonderlich großer beliebtheit unter den Programmierern, C# ist meiner Meinung nach eindeutig die bessere Wahl hier.
Jeder der mit einer .Net Sprache Anfängt sollte sich relativ schnell den unterschied zwischen Managed und Unmanaged Code bewußt machen .NET.
Java
Java kann man am ehesten mit den .Net Sprachen vergleichen ist aber doch wieder etwas komplett eigenes. Die Syntax ist mit der von C# zu vergleichen.
Da Java in einer VM läuft, ist es Plattformunabhängig(Diskussion dazu hier im Forum). Dies sehen viele als einen Vorteil, hat aber einen riesen Nachteil. Mit Java ist keinerlei zugriff auf den Speicher möglich und somit für Gamehacking unbrauchbar. Wär gerne ohne großen Aufwand für mehrere Systeme entwickelt ist hier richtig aufgehoben. Java hat eine gute Dokumentation.
AutoIt und andere Scriptsprachen
Ihr habt richtig gelesen, ihr seid keine Programmierer. Ich persönlich habe eine große Abneigung gegenüber AutoIt und kann es keinem empfehlen. Wer nur schnell ein paar Klicks/Tastendrücke braucht, kann gerne auf AutoIt zurückgreifen. Für alles größere ist es komplett ungeeignet!
Dies zählt natürlich nicht für alle Scriptsprachen. Lua, Python, Ruby und wie sie alle heißen sind durchaus legitime Lösungen für bestimmte Probleme. Aber ich würde keinesfalls versuchen mit diesen Programmieren zu lernen, man nutzt sie später einfach
Anderer Standpunkt :
Das wären wohl die am meisten genutzten Sprachen hier im Forum. Delphi wäre sicherlich noch Erwähnenswert, aber dort fehlt mir die persönliche Erfahrung, wäre schön wenn jemand dazu etwas schreiben könnte.
Nehmt euch die Sprache, die euch am besten gefällt. Natürlich muss sie zu eurem endgültigen Ziel passen. Wer ins Gamehacking einsteigen möchte, sollte sicherlich kein Java lernen. Für Leute die es wirklich ernst meinen kann ich nur C++ als erste Sprache empfehlen. Aber macht euch dort auf eine Menge Arbeit gefasst. Den deutlich leichteren Einstieg bieten dort .Net Sprachen und Java, sofern man mit der OOP(Objektorientierte Programmierung) klar kommt. Aber vergesst nie, Programmiersprachen sind Werkzeuge, passt das Werkzeug nicht, wechselt man es. Es geht beim Programmieren nicht nur um die Syntax, es geht am Meisten um die Logik dahinter.
Und bitte tut euch selbst den Gefallen und kauft euch Bücher zu den Sprachen. Ein kurzes Tutorial um zu schauen ob einem die Sprache gefällt ist okay, aber danach nicht geeignet. Kopieren von Code bringt euch auch nicht weiter, wenn ihr ihn nicht versteht. Und glaubt mir, Anfangs werdet ihr ihn nicht verstehen.
Vergesst bitte nicht, dies ist meine eigene Meinung. Sie muss weder Sinvoll noch richtig sein
Oh, noch etwas. Im gegensatz zu der Meinung eines komischen Wesens was sich hier herumtreibt, muss man kein C vor C++ lernen.