Um deine Anforderungen nochmal zusammenzufassen:
- Du kannst schon ein wenig programmieren (Delphi)
- Willst eine aktuelle (moderne) Sprache kennenlernen
- Soll auch aufm Mac laufen
- Grafische Oberflächen sollen auch gehen
- Objektorientiert u. imperativ
Dann muss ich solche Empfehlungen wie C und JavaScript lesen
Naja ich würde dir eigentlich C# empfehlen, aber das funktioniert nur mit Mono aufm Mac.
Deshelb empfehle ich dir
Java und als IDE
Eclipse oder
Netbeans je nachdem was dir besser liegt.
Java ist zwar nicht mehr so modern (hoffe das ändert sich mit dem JDK 1.8) aber ist nach dem
TIOBE-Index noch am verbreitesten.
Für die Oberflächenprogrammierung würde ich dir Swing empfehlen.
Das ist schon im JDK enthalten läuft auf allen Plattformen und du lernst zwangsweise MVC
und musst die GUI per Hand schreiben, da lernt man auch mehr, als wenn man
in Visual Studio (C#) alles nur zusammenklicket.
Außerdem kannst du dann auch mal Werkzuege wie
JUnit fürs Testen und
Log4J fürs Logging ausprobieren.
Und meiner Meinung nach schadet es sehr wohl, wenn du für deine Zwecke sowas wie C lernst,
das ist nämlich nur für hardwarenahe Programmierung und kleinere Programme, die
sehr schnell laufen sollen geeignet. Komplexe Software kannst du damit nicht schreiben.
C hat einfach standardmäßig überhaupt nichts dabei außer if, while, for, pointer und noch ein
Präprozessor
. Dann musst du für das Kompilieren größerer Programme immer mit einem
Make-File rumeiern und bedingter Kompilierung damit nichts doppelt eingebunden wird....
modern ist das alles nicht.
JavaScript ist nur für Webseiten gut, das hat man sich aber in 2 Monaten draufgeschafft, wenn man Java kann.
Wenn du die ganzen Java-Grundlagen drauf hast (ca. 6-12 Monate) kannst du danach
auch sehr moderne Sprachen wie Groovy oder wenn du mutig bist auch Scala anschauen.
Die laufen auch alle in der JVM und könen Java-Programme als jar einbinden. Außerdem steht
dir die komplette Java-API
http://download.oracle.com/javase/6/docs/api/index.html?overview-summary.html
zur verfügung, in die du dich ja dann bis dahin eingearbeitet hast
P.S. habe bewusst ein paar Java-Fachbegriffe verwendet, die kannst du aber alle in Wikipedia finden...
Auch ja als Buch gibt es im Web: "Java ist auch eine Insel" und "Handbuch der Java-Programmierung"
Dann noch das Forum
http://www.java-forum.org/ damit solltest du erstmal versorgt sein.
@ SchwarzerDornI
Python wird meistens fürs Skripting verwendet z.B. in:
Blender oder im GIS-Bereich (ArcGis).
Wenn man vor hat, Softwareentwickler zu werden, würde ich als Einstieg Java nehemen,
so viel komplizierter als Python ist es auch nicht. Und wenn man Java einigermaßen gut beherrscht,
bist du auch schnell in so Skriptsprachen wie PHP, JavaScript, Pearl und eben auch Python drin.
Und noch ein Wort zu C:
Damit kann man sich gerade als Anfänger, einen ziemlich schlechten Stil angewöhnen.
Außerdem kann C von Haus aus sogut wie nichts, und sobald man mehr damit machen will
(Oberflächen, Sockets, Threads, ... ) ist es auch nicht mehr "plattformunabhängig"
Wenn ich schon dabei bin noch ein Wort zu C++:
Ist objektorientiert und prinzipiell schon mal besser als C. Es ist aber trotzdem möglich, schlechten C-Code auch
in C++ zu schreiben. Wenigstens hat C++ in der Standardlib einige Datenstrukturen und auch eine String-Klasse
an Board. Wenn man mehr will, sollte man sich mal die Boost-Lib ansehen:
http://www.boost.org/
Und für graphische Oberflächen QT.
Trotzdem bleiben einige Nachteile: Kein Garbage Collector, Zeiger, Make-File, Präprozessor, keine VM, ....