Wie lernt man Programmieren?

Viele, vor allem junge Menschen, glaube, sie können mal schnell was programmieren. Das Internet zeigt die vielfältigen Möglichkeiten. Augenscheinlich wird mit einer kleinen Software schnell viel Geld verdient. Das möchte man gerne nachmachen.<br />
<br />
Nur wie beginnt man nun? Ein bisschen HTML und CSS stellt kein Problem da. Vor allem da es gut WYSIWYG Editoren (z.B. Dreamweaver) oder Webspace-Baukasten-Systeme gibt. Also nur ein wenig hier und da klicken und schon ist die eigene Webseite im professionellen Look fertig. Wenn man sich selber nun auch noch Webdesigner nennt, kann man schon sein erstes eigenes Gewerbe eröffnen und mit dem Geld scheffeln anfangen. Ganz so einfach ist es denn doch nicht; dennoch machen es viele "Hobbydesigner" so.<br />
<br />
Nun gut, es steht also eine statische Webseite im Netz. Nun möchte man aber auch noch Dienste über das Internet anbieten. Vielleicht eine Community wie Facebook oder MeinVZ? Da wird es nun schon schwieriger. Es gibt zwar diverse fertige Open Source Community Projekte, diese sind aber oftmals noch anpassungsbedürftig oder entsprechen gar nicht den Vorstellungen des frischen Jungunternehmers. Außerdem ist es viel cooler etwas selber zu coden.<br />
<br />
Wie anfangen?<br />
<br />
Der folgende Wechsel stammt aus einem Forum, in dem ich geantwortet habe. Der Fragesteller soll keineswegs diffamiert werden. Die Fragen sind typisch für einen neugierigen eifrigen Menschen und sollen hier als Beispiel ohne Wertung dienen.<br />
<blockquote>Hallo,<br />
<br />
ich wollte euch mal fragen, ob ihr die verschiedenen Programmiersprachen in einer bestimmten Reihenfolge gelernt habt. Ich interessiere mich jetzt schon seit mehreren Jahren für Webdesign und Programmierung und habe mir in mühseliger Arbeit die verschiedensten Dinge schon beigebracht.<br />
<br />
[…]<br />
<br />
So, nun ist es aber so das ich in den nächsten Monaten und Jahren weiter darauf aufbauen möchte und nicht nur andere Webseiten immer "toll finde", sondern in der Lage bin meine eigenen Ideen auch zu realisieren. Facebook oder Twitter sind tolle Sachen … ich wäre jedoch nie in der Lage so etwas zu erstellen (ich glaube Facebook wurde in C+ geschrieben !? Verbessert mich wenn es falsch ist).<br />
<br />
Jetzt aber meine eigentliche Frage … gibt es eine bestimmte Reihenfolge, in der man Programmiersprachen erlernen sollte? Manchmal ist es ja einfacher die eine zu verstehen, wenn man die andere schon kann. Welche Sprachen sind überhaupt empfehlenswert? C, C+, C++, Python, ASP, Java, Visual Basic?</blockquote><br />
<blockquote>Antwort:<br />
<br />
Moin.<br />
Es spielt keine Rolle mit welcher Hochsprache du anfängst. Zu unterscheiden wären noch Skriptsprachen und Programmiersprachen.<br />
<br />
FB hat sicherlich einige Teile in direkt in kompilierter Form vorliegen. <span style="color: #c0c0c0;">Deren PHP Skripte werden durch einen speziellen Parser direkt in Maschinencode umgesetzt und als Maschinencode genutzt.</span><br />
<br />
Alleine wirst du nie WordPress, FB und Co nachbauen können. Ein eigener kleiner Blog ist aber durchaus gut drin.</blockquote><br />
Facebook hat einen Übersetzer, der PHP Code in C++ Quellcode übersetzt. Dieser kann dann in Maschinencode compiliert werden.<br />
<br />
<a href="http://wiki.github.com/facebook/hiphop-php/">http://wiki.github.com/facebook/hiphop-php/<br />
</a><a href="http://de.wikipedia.org/wiki/HipHop">http://de.wikipedia.org/wiki/HipHop</a><br />
<blockquote>Fragestellung:<br />
<br />
Hi Guin,<br />
<br />
erstmal vielen Dank für deine Antwort. Facebook und Co. sind natürlich zu hoch gegriffen und dahinter steckt ein wahnsinniges großes Team an Programmieren. Aber nehmen wir mal z.B. die Jungs, die Facebook mit Diaspora Konkurrenz machen wollen. Laut eigener wollen sie zu Dritt ein soziales Netzwerk programmieren. Irgendwie müssen die ja auch angefangen haben!? Die haben z.B. alle Informatik an der Uni studiert …. wie ist denn da der Ablauf?<br />
<br />
Oder ein Programmierer der an der Erstellung von z.B. Facebook mitwirkt? Welche Programmiersprachen kann der? Wie hat er angefangen bzw. gibt es einen logischen Ablauf, welche Sprache man beherrschen sollte bevor man mit der nächsten anfängt?<br />
<br />
Ich habe jetzt z.B. oft gelesen, dass C++ spitze ist aber für einen Anfänger eine Nummer zu groß.<br />
<br />
Noch ein anderes Beispiel: Ein Mitbegründer von Twitter hat eine App entwickelt, mit der Geschäfte per Iphone + Zubehör Kreditkarten akzeptieren können. Das ist eine super Idee, doch wie konnte er diese realisieren? Hat er sich nur mit dem Developer Kit für Iphone apps beschäftigt? Oder muss man für solch' eine Idee auch noch andere Sprachen beherrschen?<br />
<br />
Im Endeffekt versuche ich zu verstehen, wie ich meine Ideen verwirklichen kann und welche Voraussetzungen ich dafür schaffen muss.<br />
<br />
MB<br />
<br />
P.S. Ich bin auch kein Träumer der meint, morgen FB nachbauen zu können. Es ist ein langfristiger Plan meine Skills Schritt für Schritt auszubauen</blockquote><br />
<blockquote>Antwort:<br />
<br />
Ich habe im ersten Semester C, im zweiten Semester C++ gelern. Dann kamen Softwaretechnik, Objektorientierte Programmierung noch noch drei Semester Java dazu. Wärend eines Praktikums habe ich was in C# gemacht.<br />
<br />
Wie schon gesagt, spielt es keine Rolle, welche Sprache man nun genau kann. Ein Programm besteht aus Schleifen (while, for, …) und Verzweigungen (if, switch, …). Mehr ist das nicht. Man muss lernen wie man ein Programm plant und wie man OOP einsetzt (bei größeren Projekten).</blockquote><br />
<blockquote>Fragestellung:<br />
<br />
Ok, das leuchtet mir auf jeden Fall ein! Kannst du mir vielleicht ein gutes Buch empfehlen, dass mich ein wenig in die Materie einführt? Ich glaube bei mir haperts noch ein wenig am Grundverständnis, wie man eine Idee in die Tat umsetzt.<br />
<br />
Besten Dank!<br />
MB</blockquote><br />
<div><br />
<div id="post_message_959211"><br />
<blockquote>Antwort:<br />
<br />
Als Hausarbeit mussten wir mal eine Blogsoftware selber machen. Das war eigentlich ganz aufschlussreich.<br />
<br />
Schau dir mal die "$irgendwas von Kopf bis Fuß" Reihe an<br />
<a rel="nofollow" href="http://www.amazon.de/PHP-MySQL-von-Kopf-bis/dp/3897219034" target="_blank">http://www.amazon.de/PHP-MySQL-von-K…/dp/3897219034</a><br />
…<br />
eher für Fortgeschrittene<br />
<a rel="nofollow" href="http://www.amazon.de/Entwurfsmuster-von-Kopf-bis-Fu%C3%9F/dp/3897214210" target="_blank">http://www.amazon.de/Entwurfsmuster-…/dp/3897214210</a><br />
<a rel="nofollow" href="http://www.amazon.de/Objektorientierte-Analyse-Design-von-Kopf/dp/3897214954" target="_blank">http://www.amazon.de/Objektorientier…/dp/3897214954</a><br />
…<br />
<br />
Geh am besten in einen Buchladen und guck dir die Bücher genau an. Die kosten immerhin schon einiges an Geld. Wenn du mit dem Stil gut zurecht kommst, dann lohnt sich der Kauf. Wirklich selber angucken! Der Stil ist etwas spezieller.<br />
<br />
Wichtig ist, dass du dann am Ball bleibst. Wenn du dich entschließt, eine Blogsoftware zu erstellen, mache zuerst einen Zeitplan. Halte dich dann an den Zeitplan. Wenn der Zeitplan nicht einhaltbar ist, schreibe eine Begründung für die Verzögerung auf.</blockquote><br />
Aus Büchern lernen ist sehr langwierig. Man muss wirklich konsequent und kontinuierlich lernen. Bevor man ein Buch kauft, sollte man reingeguckt haben! Es muß auch kein neues Buch sein. Solange das Buch nicht (unnötig) vollgekritzelt ist und Seiten fehlen, ist ein Gebrauchtkauf eine günstige Alternative.<br />
<br />
Man fängt mit dem ersten Schritt an. Klingt abgedroschen, ist aber nun mal so. Der erste Schritt kann ruhig mit Papier und Bleistift gemacht werden. Auf das Blatt schreibt man dann auf, was einem wichtig ist. Brainstorming sozusagen. Das hilft ungemein, eine Struktur zu bekommen.<br />
<br />
Gutes Gelingen <img src="http://blog.guin.de/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /><br />
<br />
</div><br />
</div>