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.

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.

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.

Wie anfangen?

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.

Hallo,

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.

[...]

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).

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?

Antwort:

Moin.
Es spielt keine Rolle mit welcher Hochsprache du anfängst. Zu unterscheiden wären noch Skriptsprachen und Programmiersprachen.

FB hat sicherlich einige Teile in direkt in kompilierter Form vorliegen. Deren PHP Skripte werden durch einen speziellen Parser direkt in Maschinencode umgesetzt und als Maschinencode genutzt.

Alleine wirst du nie WordPress, FB und Co nachbauen können. Ein eigener kleiner Blog ist aber durchaus gut drin.

Facebook hat einen Übersetzer, der PHP Code in C++ Quellcode übersetzt. Dieser kann dann in Maschinencode compiliert werden.

http://wiki.github.com/facebook/hiphop-php/
http://de.wikipedia.org/wiki/HipHop

Fragestellung:

Hi Guin,

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?

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?

Ich habe jetzt z.B. oft gelesen, dass C++ spitze ist aber für einen Anfänger eine Nummer zu groß.

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?

Im Endeffekt versuche ich zu verstehen, wie ich meine Ideen verwirklichen kann und welche Voraussetzungen ich dafür schaffen muss.

MB

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

Antwort:

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.

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).

Fragestellung:

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.

Besten Dank!
MB

Antwort:

Als Hausarbeit mussten wir mal eine Blogsoftware selber machen. Das war eigentlich ganz aufschlussreich.

Schau dir mal die “$irgendwas von Kopf bis Fuß” Reihe an
http://www.amazon.de/PHP-MySQL-von-K…/dp/3897219034

eher für Fortgeschrittene
http://www.amazon.de/Entwurfsmuster-…/dp/3897214210
http://www.amazon.de/Objektorientier…/dp/3897214954

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.

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.

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.

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.

Gutes Gelingen :)

5 Kommentare

Schreibe einen Kommentar»
  1. Grins, so eine Art von Fragen kommen mir sehr bekannt vor :) Ich hätte für den Anfang nicht gleich etwas über Entwurfsmuster empfohlen sondern eher etwas über OOP im Allgemeinen, z.b.:

    http://openbook.galileocomputing.de/oop/index.htm

    Vorteil des Buches und des OpenBooks ist, dass es nicht auf eine Sprache alleine eingeht, sondern anhand von verschiedenen Sprachen deren Eigenheiten im Bezug auf OOP darstellt. Angefangen bei C++, Smalltalk, PHP, Java usw. Spannend und unterhaltsam geschrieben. Evtl. später dann das Standardwerk der GoF :)

  2. Ja stimmt, die Openbooks von Galileo Computing hätten Erwähnung finden müssen. Danke für den Link.
    Das Thema OOP ist sehr schwierig. Als Anfänger wundert man sich, wozu man diesen Aufwand betreibt. Erst wenn die zu erstellenden Programme größer werden und man mit mehreren Leuten dran arbeitet, wird der Sinn aufgedeckt. Das oben genannte Openbook hilft schon mal ein bisschen, die Grundgedanken zu OOP zu verstehen (die 7 Prinzipien Kapitel 3).

    Im Studium hieß es: Wir haben nun ein Auto. Das ist unser Objekt. Als Eigenschaft haben wir Reifen, Farbe und einen Motor. Wir können den Wagen beschleunigen, abbremsen und lenken.
    Zur Vererbung wurde dann erzählt, dass es auch Autos mit drei Rädern oder mehr als 4 Rädern geben würde. Naja, lange ist’s her und viel verstanden habe ich da nicht.

    Später bei Java haben wir es mit geometrischen Formen gemacht. Flächenberechnung von einfachen geometrischen Objekten. Also ein rechtwinkeliges Viereck (man hätte auch ein allgemeines Viereck nehmen können. Wäre die Formel nur länger gewesen). aus dem rechwinkeligen Viereck ließ sich dann die vereinfachte Form des Quadrates ableiten. Oder z.B. das Oval und der Kreis. Das fand ich irgendwie besser. Zu dem Zeitpunkt hatte ich aber auch einfach mehr Erfahrung.

    Gof musste ich erst mal nachgucken. ;)
    Originalausgabe: Design Patterns. Elements of Reusable Object-Oriented Software
    dt. Ausgabe: Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software

    Diesmal extra keine Amazon Link :D Zur Deutschen Nationalbibliothek hätte ich auch verlinken können. Die Beschreibungen dort sind aber sehr spärlich.
    Beipiel: http://d-nb.info/971457999

  3. Ich wollte mal fragen, was Sie genau Studieren also wie das Studium heißt.

    Da ich seher geren sowas lernen möchte.

  4. Moin,
    also ich habe Elektrotechnik (ESA, abgebrochen) und Medieninformatik in Lübeck studiert. Viel Programmieren mussten wir aber nicht. Es wird nur ein kleiner Grundstein gelegt und dann muss man für sich selber weiterlernen.

    Wenn man Programmieren will, muss man nicht studieren. Dafür gibt es auch den Fachinformatiker. Im Studium lernt man die Planung von Dingen. Nicht das Machen selber.
    Direkt nach der Schule habe ich erst mal ein Handwerk erlernt. Elektroinstallateur. Das kostet natürlich erst mal Zeit, aber man weiß erst mal, wie man etwas in der Praxis anpackt.

    Und was mache ich jetzt? Ich werde fürs Spiele spielen bezahlt ;)
    Dafür hätte ich weder eine Lehre absolvieren, noch ewig lange studieren müssen. All das und andere Engagements waren aber sehr hilfreich und ohne meine Vorgeschichte wäre ich nun gewiss wo ganz anders. :)

    PS: normalerweise Duzen wir uns alle in der Blogwelt.

  5. Neues zu HTML5

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>