Ich mag gerne ein paar nützliche Programme entwickeln die auch helfen!
Es gibt bereits viele Tools, die bei vielen Aufgaben helfen. Anstatt also das Rad neu zu erfinden, solltest du erstmal nach Projekten Ausschau halten, an denen du mitarbeiten möchtest. Und dann schau dir an in welcher Sprache diese entwickelt sind und lerne diese. Wenn du die Sprache _wirklich_ gelernt hast, d.h. auch durch viel üben verinnerlicht hast, dann wende dich an das Projekt, reiche hilfreiche Patches ein etc..
Solange du aber mit Aussagen daher kommst wie "Programme entwickeln, die auch helfen", zeigt es, dass du dich mit der Materie Computer noch nicht wirklich auseinandergesetzt hast. Wobei sollen diese Programme denn helfen? Sollen sie vor Viren schützen (Antivirus-Software)? Sollen sie Traffic analysieren (IDS/IPS-Systeme)? Sollen sie infizierte Systeme wieder ausräumen (Malware-Remover)? Oder sollen sie gar Treiber für Hardware ansteuern um diese für Zwecke zu gebrauchen, für die sie eigentlich nicht ausgelegt sind? Und von diesen Fragen hängt auch ab, inwieweit du dich in die Befehle und Funktionsweisen eines Betriebssystems einarbeiten musst oder solltest. Du wirst Traffic nicht analysieren können, wenn du nicht weisst, wie er im System gehandhabt wird. Du wirst Malware-bezogene Programme (Remover, Detektoren etc.) nicht schreiben können, wenn du nicht verstehst wie sie in's System gelangen konnte. Du wirst Treiber nicht schreiben können, wenn du die Schnittstellen, die dein Betriebssystem dafür zur Verfügung stellt, nicht kennst.
Du solltest dir also erstmal darüber klar werden, WAS du entwickeln willst. Wenn du auf System-Ebene entwickeln willst, werden dir Sprachen wie PHP oder Java wenig bis gar nicht helfen. Willst du weiter Webentwicklung betreiben, bist du mit C/C++ falsch beraten. Hast du keine Lust deine Programme ständig neu zu kompilieren, solltest du eher zu Sprachen wie Python oder Perl greifen. Und so weiter und so fort...
Ja, du bist etwas übereifrig. Also lass dir gesagt sein: Lerne erstmal das von dir verwendete Betriebssystem richtig kennen, bevor du über weiteres nachdenkst. Und werde dir erstmal darüber klar, was für "hilfreiche Programme" du entwickeln willst, bevor du dich für eine Programmiersprache entscheidest. Die Grundlagen der Programmierung kannst du im Prinzip mit jeder Sprache lernen. Dinge wie objektorientierte Programmierung wirst du aber z.B. mit C nicht lernen. Für Anwendungsentwicklung wirst du aber heutzutage um Objektorientierung nicht herum kommen. Für Systementwicklung auf Unix-Systemen wird dir in den meisten Fällen wiederum C ausreichen.
Du siehst... die Thematik ist komplex. Eine Frage wie "Welche Programmiersprache soll ich lernen?" kann nicht beantwortet werden, solange nicht bekannt ist mit welchem Betriebssystem du arbeitest und was du für Anwendungen programmieren willst. "Programme, die auch helfen" ist dafür ein viel zu weit gefasster Begriff. Im Prinzip hllft jedes Programm. Selbst ein Virus hilft... zumindest aus Sicht des Programmierers. Er hilft z.B. Sicherheitslücken aufzudecken oder, im Fall eines Trojaners, hilft er Rechner zu kontrollieren.