Programmieren - im Sinne von coden - ist ein Handwerk. Jeder, absolut
jeder (und da stell ich mich auch keiner Diskussion) kann Lernen wie eine Programmiersprache funktioniert, wie die zugrundeliegenden Konzepte funktionieren und natürlich auch wie man in einer oder mehreren Sprachen tatsächlich programmiert.*
Mit etwas Motivation (am besten wär's wenn du ein kleines Projekt - jetzt nicht "ich programmier WoW neu" - hast, an dem du arbeiten kannst. Die Beispiele in den einschlägigen Büchern sind recht dröge und ich konnte mich eigentlich nie durchringen die abzutippen) ist das überhaupt kein Problem. Setz dich die nächsten Sommerferien auf den Arsch und du kannst danach mehr als 99% in deinem Alter.
Wozu man Talent braucht (und das ist auch noch schwer wenn mans kann) ist das kreative Problemlösen, die Konzeptionsphase beim Programmieren. Wenn man die Möglichkeiten, die man hat, kennt und weiß wie man die implementiert, dann muss man sich überlegen, wie man sein tatsächliches Problem im Rahmen dieser Möglichkeiten umsetzt.
Nicht alle Dinge die man machen möchte sind gleich einfach zu Programmieren. Nicht nur braucht man zum Teil gute Mathematikkenntnisse (und ich mein jetzt nicht Schule), zum Teil ist auch eine Menge Kreativität (und Zeit...) erforderlich um einen guten Weg zu finden. Manchmal sogar um einen schlechten Weg zu finden. Da spielt imho vor allem Erfahrung eine Rolle.
C/++ halte ich eher für ungeeignet für den Einstieg (das sehen einige Leute anders, das sind die selben, die Gentoo für den Linux-Einstieg empfehlen). Man muss sich mit enorm vielen theoretischen und z.T. wirklich abstrakten Konzepten vertraut machen, bevor man auch kleinste Aufgaben lösen kann. Danach versteht man besser wie ein Computer funktioniert, aber mit der Motivation wirds doch schwer, insb. auch mangels Erfolgserlebnissen in der langen Anfangsphase. Und es ist schon ein bisschen viel für den Anfang, was man auf einmal Lernen muss, bevor überhaupt was passiert.
Java ebenso ... es erzwingt Objektorientierung, imho sollte man erstmal mit imperativer Programmierung über prozedurale Programmierung da rangeführt werden. Objektorientierung "trocken" zu lernen wär mir persönlich zu hart. Am Anfang verstehst du nichmal wie "Hello World" in Java funktioniert.
PHP ist Murks
Python ist an sich prima, man darf sich nur nicht vom großen Featureumfang einschüchtern lassen, sondern sollte erstmal klein und imperativ anfangen.
Darkster hat aber schon recht, C/++ Programmierer nehmen dich dann nicht ernst, weil du nur ne Scriptsprache benutzt und nicht jedes Bit im RAM persönlich hin- und herschiebst.
Als Lernsprache designt war natürlich Pascal, die modernste Ausprägung ist Delphi. Damit hab ich angefangen, aber in der Schule. War ganz gut (für die reale Welt leider völlig unbrauchbar). Ohne weiteres kommt man leider auch nicht an die Entwicklungsumgebung ran. Obwohl's auch freie ObjectPascal Compiler gibt. Vielleicht gibts in deiner örtlichen Bibliothek auch ein Lehrbuch mit Software o.Ä.
Fazit: Wenn du wissen willst wie ein Computer intern funktioniert (bis zu nem gewissen Level), dann lern C. Aber es wird schwer. Wenn du das raus hast, dann kannst du zu C++ greifen.
Ne angenehmere Lernkurve bietet dir Python, aber mit deutlich weniger Einblicken in die Technik drunter. Dafür bekommst du die Möglichkeit herauszufinden, was du dem Computer alles sagen kannst (und was er dann auch macht) ohne dich groß drum kümmern zu müssen, was in der Welt der 0en und 1en passiert. Wenn du das dann mal hast und du willst es wissen, dann kannst du C lernen (hab ich selbst so gemacht). Dann wirst du die dir schon bekannten Kontrollstrukturen kennenlernen, aber wirst verstehen wie die genau auf ner niedrigeren Ebene funktionieren (bzw. wie scheißviel Arbeit der Python-Interpreter dir abnimmt). Dabei lernst du dann rückwirkend auch noch was über Python.
Ich muss aber auch der Fairness halber dazu sagen, dass ich eine ähnlich hohe Meinung von Python habe wie der Papst von Jesus.
Prinzipiell sind das die zwei Wege schwimmen zu lernen. Entweder springst du ins tiefe, stürmische Wasser und entweder lernst dus oder du gehst unter. Wenn du das schaffst, dann kannst dus aber schon ziemlich gut und im flachen Wasser findest du dich relativ mühelos zurecht. Oder du fängst erstmal im flachen Wasser an zu paddeln, was schon schnell ganz gut klappt und was du später zur Perfektion treiben kannst. Dann kannst du auch ins tiefe, und kommst da auch recht schnell gut zurecht. Beide Wege führen zum Ziel.
Und auf die Metapher bin ich gerade echt stolz.
Java ist nett, aber ich würd's als Zweitsprache lernen nachdem du Objektorientierung (das ist das was die Informatiker für den Heiligen Gral der Softwareentwicklung halten...) anhand C++, Python oder Delphi/ObjectPascal gelernt hast.
Was sich nicht mehr lohnt zu lernen ist Assembler - bzw. höchstens zu wissenschaftlichen Zwecken. Optimierte C-Compiler liefern schnelleren/besseren (und unlesbareren) Asm-Code als jeder Mensch
*/edit: Disclaimer: Funktionale Programmierung oder ähnliche akademische Konzepte sind ausgenommen
