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

Onlinestudium eröffnet neue Möglichkeiten

Andreas Wittke schreibt in seinem Blog onlinebynature über einen Studenten der FH Lübeck. Soweit nichts besonderes. Wenn man jedoch weiß, was für besondere Umstände vorherrschen, ist dies eine ungewöhnliche Geschichte. Ich selber möchte garnicht mehr darüber schreiben. Du kannst in Andreas Blog mehr darüber lesen.

Ich habe einen Bekannten, der Glasknochen hat. Er möchte an der Hamburger Uni studieren.  Eigentlich wäre ein Onlinestudium für ihn besser. Aber das wird er selber herausfinden.

YouTube-Channel

oncampus hat nun einen eigenen Youtube-Channel. Der Channelname ist oncampusFHL. Dort werden eigen produzierte Lerninhalte unter der Creative Common Lizenz by-nc-sa veröffentlicht.

Hier ein Beispiel:

Warum ich darüber schreibe? Es geht um meine Abschlussarbeit, die ich bei oncampus vorbereite. Der Channel ist zwar nicht direkt mein Projekt, aber ein bisschen Arbeit habe ich auch reingesteckt.

Weiterer Artikel dazu bei OnlineByNature.

Fiese Klausur

Heute Morgen musste ich meine BWL Klausur schreiben. Leider wurde viel abgefragt, was ich mir nur am Rande angeschaut habe. Ich bin echt gespannt, was da bei herauskommen wird.

Zur Beruhigung meiner Nerven, werde ich heute Abend meinen AEVO-Kurs ausfallen lassen.

Wissenschaftliches Arbeiten

Auch ich werde bald irgendwann mal ein „Wissenschaftler“. Jedenfalls bin ich dabei, meine Abschlussarbeit vorzubereiten. Mir fällt es momentan schwer, ein richtiges Thema für meine Arbeit zu finden.

Zum jetzigen Zeitpunkt habe ich mir „Konzepte zur Lerninhaltsaufzeichnung und Distribution“ überlegt.

Ganz modern habe ich mich auch dazu entschlossen, meine bisherige Arbeit dazu in einem Wiki zu veröffentlichen.
Wiki zur Abschlussarbeit

Ich bin selber sehr gespannt, wie sich das Ganze entwickelt. Wer Ideen oder sonstige Kritik hat, darf diese mir gerne mitteilen :-)

Campus Innovation 2009 Podcasts

Bei Lecture2Go sind die Aufzeichnungen zur Campus Innovation 2009 nun vorhanden.

http://lecture2go.uni-hamburg.de/konferenzen
Unter „Einrichtung auswählen“ bitte „Universität Hamburg“ anklicken. Dann „Konverenz auswählen“ und „Campus Innovation 2009“ anklicken. Unter „Session auswählen“ kann man sich dann die verschiedenen Tracks anzeigen lassen.

Campus Innovation 2009 Interviews

So langsam sind die Aufzeichnungen der Campus Innvoation 2009 im Netz verfügbar.

http://www.podcampus.de/channels/66

Es fehlen allerdings noch die Inhalte der Vorträge, die von Lecture2Go aufgezeichnet wurden. Jedenfalls fehlt es nocht, dass die Vorträge frei zugänglich sind. Im Inhaltsverzeichnis tauchen die drei Tracks der Campus Innovation 2009 auf. Es fehlt noch ein finales OK zur Veröffentlichung.

Campus Innovation 2009

Die Campus Innovation und der VI. Konferenztag Studium und Lehre fand vom 26.-27. November 2009 statt. Am 27. November war ich auch da.

Angefangen hat der Tag mit Gabi Reinmann, die ihre Eröffnugnsrede über ePortfolios gehalten hat. Inhaltlich war es nicht sehr viel Neues, aber die Art der Präsentation hat mir dann doch neue Zusammenhänge eröffnet. Selbstsreflektion :-)

Bis 11:30 Uhr habe ich mir dann den eLearning Track angeschaut. Von den gebotenen Vorträgen hat  mich besonders das Beluga Projekt interessiert. Bei diesem Projekt geht es grob gesagt um Literaturlisten. Klar gibt es schon hier und da Literaturlisten im Netz. Bei Amazon könnte man auch sowas einrichten. Aber hier geht es mehr um die Art und Weise der Präsentation. Listen können in verschiedenen Notationsstilen exportiert werden, es sollen nicht nur karge bibliographische Daten angezeigt werden, Bewertungsanzeige, Social-Network-Funktion (Prof X hat Buch Y in seiner Liste, was zu meinem gerade angezeigten Buch Z passt).

Nach der vormittaglichen Kaffeepause ging es in den eCampus Track. Dort hat Andreas Wittke gegen 14:30 Uhr über die Erfahrungen der FH Lübeck mit dem Adobe Connect System erzählt. Für mich als langjähriger Adobe Connect User nichts Neues. Danach kam Markus Ketterl von der Uni Osnabrück mit dem OpenCast Projekt (M Ketterl bei Opencast). Das kommt dem Nahe, was die FH Lübeck, bzw OnCampus, haben möchte.
Der Beitrag danach von Lecture2Go krankheitsbedingt ausgefallen. Da die Ganze Konferenz von Lecture2Go aufgezeichnet wurde, waren ein paar Leute von denen trotzdem da, so dass man ein paar Worte wechseln konnte. OpenCast und Lecture2Go sind beides interessate Projekte, die ich auf jeden Fall weiter verfolgen werde.

Die Aufzeichnungen von Lecture2Go sollten im Lauf der nächten Woche veröffentlicht werden und man sich dann alle Vorträge in Ruhe anschauen. Nächste Woche werde ich dann auch schreiben, wie ich dazu kommen, die Konferenz zu besuchen.

Das Oncampus Imperium

Oncampus

Oncampus Netzwerk

Oncampus kennst du nicht? Macht nichts.  Für mich ist es wichtig, da ich in dem Verbund studiere.

Es wurde mal eine Karte erstellt, mit den verbundenen Hochschulen. Da kommen schon einige zusammen.

[via] onlinebynature

DICOM

Im Mai und Juni 2009 habe ich mich auf Grund eines Praktikums mit DICOM beschäftigt.
NEMA DICOM: http://medical.nema.org/
Wikipediaartikel: Digital Imaging and Communication in Medicin (DICOM)

Hier mein Ergebnis
Präsentation: dicom_praesentation
Schriftliche Ausarbeitung: dicom_ausarbeitung

DICOM und dcm4che 2
Projektdoku: dicom_projekt