Ich würde Dir auch zu
Java raten. Das hat nix mit persönlicher Überzeugung zu tun; auch andere Sprachen sind auf ihre Weise "schön" (ich für meinen Teil bin ein großer C#-Fan und weiß auch den Charme von JavaScript zu schätzen).
Ich würde allerdings vorher abstecken, was du machen willst. Es gibt grundsätzlich heutzutage mehrere wesentliche Arten von Programmiersprachen und Anwendungsbereichen:
1. Es gibt
"klassische" Anwendungen
Wenn Du "normale" Windows/Linux/etc.-Programme mit GUI schreiben willst, wo am Ende eine .exe rauskommen soll, suchst Du wahrscheinlich sowas (Java, C# / .NET, C/C++, ...)
2. Es gibt
"Webanwendungen"
Hier muss man nochmals unterscheiden, wie sehr man das ausreizen will. Von "einfacheren" Websites, die sowas wie eine Benutzerverwaltung, Foren, etc. haben (PHP u.ä.), bis hin zu riesigen Webanwendungen wie Cloud Computing, Enterprise-Anwendungen, usw. (Java, C# und .NET, Ruby on Rails).
Anders formuliert ist in diesem Bereich die Frage, ob man "kompilierte" Sprachen oder "Skriptsprachen" haben möchte. Dieser Bereich ist zweifelsohne etwas komplexer, und erfordert zudem noch Kenntnisse in vielen verschiedenen Sprachen (HTML, CSS, JavaScript, XML, ...). Hier würde ich auf
http://de.wikipedia.org/wiki/Webanwendung verweisen.
3.
"Richtige" Spiele
Zum Einstieg kannst Du das pauschal vergessen, denn hier geht es um Performance und 3D inklusive höherer Mathematik (Matrizen, etc.). Klar könntest Du mit C++ direkt einsteigen, mit der Hoffnung, dann irgendwann in die DirectX-Programmierung einzusteigen, aber bis Du das erreichst, werden einige Jahre ins Land ziehen. Allein aus Motivationsgründen würde ich an der Stelle dringend von sowas abraten. Und nebenbei: man könnte theoretisch auch in Java ganz nette Sachen mit OpenGL etc. machen, nur so. Wie groß der Performance-Vorteil von C++ ist, ist nämlich nach wie vor schwer umstritten.
Sonstige Dinge wie Applet/Flash/...-Entwicklung lass ich mal außen vor, wenn man sowas machen will, weiß man das auch.
Ganz Abstrakt gesehen stellt sich dann noch die Frage, wie
"akademisch" du da ran gehen willst. Viele Universitäten haben die Praxis, ihre Neulinge in eine Nischensprache wie Scheme, ADA, SETL, etc. hineinzuwerfen. Diese Sprachen haben gerne einen relativ kleinen Sprachumfang, und der Hintergedanke ist, dass da niemand Vorkenntnisse hat, und man dort die "abstrakten" Grundkenntnisse einer Sprache gut lernen kann. Rückblickend kann ich für meinen Teil aber guten gewissens sagen, dass diese Praxis bei mir nicht funktioniert hat, ich habe erst mit höheren (insbesondere objektorientierten) Programmiersprachen meinen Zugang gefunden. Im Gegenteil, dieser Mist hätte mich beinahe von meinem Beruf abgebracht. In sofern kann ich jetzt auch nicht direkt sowas wie Scheme oder Lisp zum Einstieg empfehlen, nur weil es "puristisch" ist, oder die "Essenz" der Informatik besonders gut einfängt.
Java hat nun hierbei einfach folgende unschlagbaren Vorteile:
- Die möglichen Anwendungsbereiche der Sprache (normale Programme, Webanwendungen, Spiele, Forschung, etc.) sind enorm, und werden eigentlich nur von C++ überboten
- Eigentlich alles, von Hello-World, bis hin zu Enterprise-Anwendungen geht einigermaßen gut völlig kostenlos
- Die Chance, genau diese Sprache später mal brauchen zu können, ist EXTREM hoch
- Der Sprachumfang (Schlüsselwörter etc.) ist relativ gering, also einsteigerfreundlich
- Es gibt Unmengen an Ressourcen/Tutorials/Dokumentation im Internet
- Die Syntax ist C-artig, erleichtert also den Einstieg in vieles andere, was sonst noch so auf dem Markt ist (C, C++, C#, PHP, etc.)
- Mit Eclipse gibt's eine der besten Entwicklungsumgebungen/Debugger auf diesem Planeten, und das kostenlos.
Man kann Java einiges vorwerfen, von "konservativ" (von der C#-Fraktion) über "umständlich" (von der Smalltalk oder auch C++-Fraktion), aber der Punkt ist einfach, man kann diese Sprache in vergleichsweise kurzer Zeit vollständig verstehen. Mit anderen Worten, diese Sprache "legt einen nicht aufs Kreuz" (wie insbesondere JavaScript, oder auch C) - wenn man einmal 2-3 Jahre Java programmiert hat, wird man kaum mehr auf große Überraschungen stoßen, sondern sich eher manchmal wünschen, es hätte ein paar Tricks und Kniffe mehr
Hinzu kommt, dass man im Java-Umfeld - sofern man interessiert genug ist - fast zwangsläufig mit anderen wichtigen und interessanten Technologien in Berührung kommt: XML, Webserver, Build-Scripting wie ANT, automatisiertes Testen mit JUnit, usw.