≡ Menu

Welche Programmiersprachen eignen sich für Anfänger?

Mittlerweile bin ich überzeugt, dass im Lehrbetrieb auch Sadisten arbeiten.

Zumindest kommt es mir so vor, wenn ich von Programmierkursen in C++ oder Java höre, die in nicht-technischen Studienfächern zum Curriculum gehören.

Manchmal sogar als Pflichtkurse.

Da kann man nur mit dem Kopf schütteln. Menschen, die nie etwas mit Computerprogrammierung zu tun gehabt haben, muss man behutsam an die Sache heranführen.

Verbrannte Erde

Bring Einsteigern public static void main bei, oder den Unterschied zwischen einfachen und komplexen Datentypen, oder dass sie sich selbst um Speicherverwaltung zu kümmern haben, und du wirst verbrannte Erde hinterlassen.

Du wirst sie in dem Glauben bestärken, dass Computer diese unbeherrschbaren Maschinen sind. Die nur was für diese Freaks sind, von denen sich jeder gern distanziert (auch ich). Du wirst ihnen die letzte Hoffnung nehmen, die Arbeitsweise von Computern auch nur ansatzweise zu verstehen. Im besten Fall rennen sie einfach nur schreiend weg und reden nicht mehr mit dir.

Programmieren soll Spaß machen. Gerade für Einsteiger sollten daher Sprachen gewählt werden, mit denen schnell Ergebnisse erzielt werden können und die den Fokus nicht auf sich ziehen, sondern bei dem zu lösenden Problem belassen.

Daher hier meine Favoriten, die ich jedem ans Herz legen möchte.

Ruby: Leichter Einstieg und doch mächtig

Wie schon erwähnt: Wer gerade erst in die Programmierung einsteigt, will schnell Erfolge sehen, ist ungeduldig. Diese Ungeduld können viele Sprachen, die Anfängern im Studium beigebracht werden, nicht stillen.

Ruby hingegen stellt mit der Interactive Ruby Shell (IRB) das ideale Werkzeug zum Ausprobieren von kurzen Programmen bereit — selbst für Erfahrene.

Mit try ruby! kann man das sogar online ausprobieren — in 15 Minuten. Und gewinnt dabei einen kurzen Überblick in die Möglichkeiten der Sprache.

Dabei wird dann klar, dass Programmierung nicht nur was für Ariane-Raketen ist, sondern auch für den Hausgebrauch.

(Wer mit solche spielerischen Tutorials nichts anfangen kann und stattdessen lieber Zeichnungen eines — sagen wir, exzentrischen — Freaks betrachtet, um seine gängigen Vorurteile aufzufrischen, kann auch gern mal Why’s Poignant Guide to Ruby durchblättern.

Smalltalk: Entworfen für Kinder — aber muss das Erwachsene abhalten?

Smalltalk und dessen Umsetzung Squeak ist von jeher für die Kleinsten konzipiert. Es ist ein in sich geschlossenes System zum Programmieren.

Das ist schon deshalb vorteilhaft, weil man von der Datei als Metapher wegkommt — mancher meint ja sogar, das Konzept von Dateien liegt im Sterben. Und hat damit nicht ganz Unrecht.

(Nebenbei bemerkt überrascht mich immer wieder, mit welcher Vehemenz sich Otto Normalnutzer die Verzeichnishierarchie zu Nutze machen, um Fotos zu katalogisieren — wo es doch Programme gibt, die diesen Zweck viel eleganter lösen als jeder Dateimanager dazu im Stande wäre. Aber ich schweife ab…)

Alles, was man in Smalltalk sieht, kann man untersuchen und verändern. Das lädt zum Ausprobieren ein, zumal sämtliche Änderungen automatisch protokolliert werden.

Und weil man das nicht in einer Viertelstunde online probieren kann, sei an dieser Stelle das kostenfreie Buch Squeak by Example als eine wunderbare Einführung in Squeak Smalltalk empfohlen.

Überzeugt?

Hast du während deiner Ausbildung schlechte Erfahrungen mit Programmierkursen gemacht? Bist du ein gebranntes Kind? Mit welcher Sprache wurdest du gequält?

Oder hast du noch einen Tipp, welche Sprache für Anfänger geeignet sein könnte? Hast du mit Ruby oder Smalltalk vielleicht schon Erfahrungen gesammelt?

Sag es uns in den Kommentaren!

[Foto von iboy, CC-Lizenz]

Comments on this entry are closed.

  • Martin 2. Juni 2010, 11:00

    Also aus meiner Uni-Erfahrung und Erfahrung im Lehrbetrieb denke ich, dass weder Smalltalk noch Ruby ein guter Anfang ist. Mittlerweile bin ich der Meinung, dass Python ein guter Anfang ist.

    Bei Smalltalk sehe ich das Problem, dass zwar keine Dateien existieren, aber das Konzept Programm viel zu sehr in dem Gesamtkonzept “Das-ist-alles-in-meinem-Squeak-Image” untergeht und Entwickeln macht mit den dort vorhandenen Tools auch keinen richtigen Spass. Die Sprache an sich ist ok aber die Syntax für den Anfang zu komplex und das man alles direkt an Ort und Stelle ändern kann ist für Anfänger auch eher ein verwirrender Fakt als nützlich. Auch das es eigentlich keine reservierten Wörter gibt hilft einem Anfänger beim grundlegendem Verständnis nicht.

    Für Ruby sehe ich als Hauptproblem die Heterogenität der Sprache. Alles lässt sich auch anders machen, alles ist frei. Es gibt keinen richtigen Weg. Algorithmen verstecken sich hinter Methodenketten und vom Programmierer wird immer weniger erwartet das er weiss was passiert, sondern viel eher, dass er weiss wie die “richtige” Methode heisst. Das soll aber nicht heissen, dass ich Ruby als Sprache nicht gut finde, sondern eher, dass es nicht für den Anfang geeignet ist.

    Meiner Meinung nach ist das wichtigste beim Programmieren ein Verständnis für das was im Hintergrund passiert, sprich die Konzepte von Logik und Algorithmen. Nur wenn hier ein Verständnis vorliegt, kann man wirklich anfangen zu programmieren. Deswegen bin ich auch der Meinung, dass Python besser geeignet ist, weil es in seiner Syntax klar strukturiert und bei den Methoden den Ansatz verfolgt Daten von Algorithmen zu entkoppeln. Letzteres ist streitbar, aber für den Anfang definitiv wichtig. Als weiteren Vorteil hat Python ja auch eine eingebaute Shell mit der man eigentlich alles machen kann und sofort testen :)

    Viel wird heutzutage auch darüber gesprochen, dass Produktivität in einer Programmiersprache sehr wichtig ist und deswegen Ruby ja die bessere Lösung ist, aber für Anfänger ist dies denke ich nur zweitrangig und Verständnis sollte im Vordergrund stehen.

  • Sebastian 2. Juni 2010, 12:04

    Ich fing in meiner Ausbildung mit C an. Ich fand das war ein guter einstieg. Es gibt alles was man braucht, nur keine Objektorientierung. Weiter ging es dann zu C++, doch das war eher halbherzig. Ich habe mir dann in der Ausbildung VB beigebracht, doch das kann man in die Tonne werfen.

    Im Studium (noch Diplom) ging es dann wieder mit C los. im 2. Semester kam C++ (Leider nur Theoretisch) und dann weiter zu Java und auch .NET. Leider wurde uns so etwas wie Ruby gar nicht beigebracht, so dass ich jetzt gerade dabei bin es mir selbst beizubringen. Und genau das ist der große Vorteil an C. Hat man das ein mal verstanden fallen einem die anderen Sprachen irgendwie auch nicht mehr schwer.
    Darum bin ich für C als Einsteigersprache. Denn wie Martin schon schrieb bekommt man da genau mit was gemacht wird.

    Allerdings finde ich das das nur für Technische Studiengänge gild, die auch am ende Programmieren sollten/ können müssen. Denn was ein Pointer ist, und wie die Daten auf der Festplatte abgelegt werden ist für die meisten die Programmieren haben uninteressant.

    Aber zum Thema welche Sprache. Wie schon geschrieben hatte ich C. Ich war aber auch der letzte Diplom Studiengang. Die nach uns kommenden Bachelor Studenten fingen direkt mit Java an.

    Bei meiner Freundin (warum auch immer sie im Studium Programmieren sollte) wurde ganz witzig mit Hamster begonnen.

    Aber ich denke nicht jeder Studiengang muss Programmieren lernen. Unsere BWL zum Beispiel mussten “nur” VBA machen.

  • Yps 2. Juni 2010, 16:37

    Mir ergings ähnlich wie Sebastian, hab zum Beginn meines Studiums auch ziemlich über C geflucht, als dann das ganze andere Gedöns kam, hatte ich \die Hölle\ aber schon hinter mir. Heute nutze ich eigentlich nur noch java und php, würde aber nicht sagen, dass mit C dabei geschadet hat.

    Ruby kenn ich selbst nicht, hab nie damit gearbeitet. Ich find aber auch, man muss nicht jeden Trend mitgehen :-P

  • André 3. Juni 2010, 09:03

    Danke für eure Beiträge, noch ein paar Kommentare dazu:

    Martin: Python muss ich mir erst noch anschauen (und Try Python setzt leider Silverlight voraus…)

    Generell muss ich sagen, dass ich mich explizit auf Nicht-Techniker bezogen habe. Wenn ich also meiner Freundin Programmieren beibringe, glaube ich nicht, dass reservierte Wörter in der Sprache überhaupt ein Thema sein werden. Warum sich “alles lässt sich auch anders machen” nur auf Ruby beziehen soll, verstehe ich nicht ganz. Das ist überall so.

    Und die Tools in Squeak/Smalltalk finde ich gerade gut geeignet. Bei allen anderen Sprachen sind Standardbibliothek und Dokumentation so voneinander entfernt, dass man praktisch gar keinen Einblick hat in die Zusammenhänge.

    Und jetzt mal ehrlich: C als Einsteigersprache? Das kann doch nicht euer Ernst sein. Wenn ich da anfange zu erklären, warum man Quelltext in eine Datei schreibt und dann kompiliert, hat Anje schon keine Lust mehr — und ich könnte es ihr nicht verübeln.

  • Martin 3. Juni 2010, 13:17

    Reservierte Wörter sind schneller ein Thema als man denkt: Ich denke nur an Sachen wie, warum kann ich die Variable eigentlich nicht class oder for nennen :)

    Das mit “anders machen” ist in anderen Sprachen einfach nicht so ausgeprägt wie in Ruby. Für Anfänger hilfreich ist es ja, wenn es genau einen verständlichen Weg gibt zum Ziel und Ruby ist dort nicht gerade besonders eindeutig (collect, select, each, find, reject…) und aber auch verwirrend unless vs if.

    Wie gesagt, ich will nicht argumentieren, dass Ruby eine schlechte Sprache ist — weil es eine sehr angenehme Sprache ist, wenn man weiss was man tut. Aber zum Lernen sind andere Sprachen besser.

    C finde ich hat in der programmiertechnischen Grundausbildung nix zu suchen. Bis man die Konzepte hinter der Sprache verstanden hat um gut programmieren zu können vergeht zu viel Zeit und Frust.

  • André 4. Juni 2010, 23:17

    “Warum kann ich die Variable eigentlich nicht class oder for nennen?”

    Na, dann ist es doch umso besser, keine reservierten Wörter zu haben! ;-)

    Mit den Enumerable-Funktionen gebe ich dir recht, das ist ein gutes Beispiel.

  • Niklas Korz 10. August 2010, 15:21

    Ich habe mit C# angefangen. Mittlerweile kann ich schon MySQL Datenbanken in eigenen Programmen verwalten und habe sogar schon ein 2D-Spiel programmiert.
    Wer jetzt glaubt: “Der lernt das bestimmt schon lange und macht das auch beruflich.”
    Nein, weder das eine noch das andere. Ich habe Ende Mai angefangen und bin erst 13.

  • André 11. August 2010, 08:56

    Niklas, danke für deinen Beitrag.

    Zunächst mal Respekt für deine Leistung nach den paar Monaten — weiter so!

    Vielleicht ist die Überschrift etwas irreführend — ich hab nicht genug herausgehoben, dass viele C-ähnliche Sprachen, die hier so loyale Anhänger in den Kommentaren finden, nichts sind für Leute, die mit Computern nicht so viel am Hut haben.

    Ich kenne Leute, die im Wirtschaftsstudium mit C++ gequält wurden, und die dadurch jegliches Interesse am Programmieren verloren haben.

    Und das find ich einfach schade, weil das nicht an den Leuten liegt, sondern an der gewählten Programmiersprache.

  • Niklas Korz 14. April 2013, 00:21

    Wer hätte das gedacht, fast drei Jahre später und ich bin trotzdem zufällig wieder auf diesen Artikel gestoßen. Daraufhin habe ich mich entschieden, erneut ein Kommentar zu verfassen.

    Mittlerweile bin ich 16 Jahre alt und gehe in die 10. Klasse eine Gymnasiums, und verdiene mir mit dem Programmieren ab und an etwas dazu.
    Dabei habe ich mit C# mittlerweile gar nichts mehr am Hut.
    Zu meinem Sprach-Repertoir zähle ich mittlerweile C, C++, Objective-C, Python, JavaScript, CoffeeScript, Java, Scala und Go (und HTML und CSS, falls man die hier noch hinzuzählen möchte), und sogar etwas Assembly.
    Dabei muss ich sagen, dass ich jedem Programmier-Neuling Python ans Herz legen kann, da es sich mittlerweile auch zu meiner Lieblings-Sprache durchgerungen hat und meiner Meinung nach sehr Anfängerfreundlich ist.
    Von Java und C++ sollte man die Finger lassen, solange es geht. Während man in Java viel mehr Code als in anderen Sprachen schreibt, ist C++ um einiges fehleranfälliger und kann so manchen Programmierer oft zur Frustration führen.
    Außerdem kann ich das Gebiet der Webentwicklung nur empfehlen (jedoch kein PHP, eher Python für die serverseite), da man hier schnell Resultate erzielen kann.

    Interessante Gebiete, wenn auch wohl nicht für jedermann geeignet, sind unter anderem die Entwicklung von Betriebssystemen (hier sei einem das Raspberry Pi empfohlen, auch wenn ich noch nicht die Zeit finden konnte, größere Projekte mit diesem zu machen), das Entwickeln von Programmiersprachen (Verarbeiten, Interpretieren, Kompilieren und was es noch so gibt…) und die grafische Programmierung mit OpenGL (wobei man auch hier C++ vermeiden kann, indem man Wrapper wie PyOpenGL verwendet, worunter jedoch die Performance leidet).

    MfG,
    Niklas Korz.

  • Niklas Korz 14. April 2013, 00:23

    P.S.: Damals habe ich auch noch Windows verwendet. Schon ein halbes Jahr später wechselte ich auf Mac OS X, und habe auch ein paar Monate später öfters etwas mit Linux gemacht.
    Dabei kann ich jedem Programmieranfänger ein Unixoides System (OS X, Linux, FreeBSD) sehr empfehlen, da es mir ungemein stark geholfen hat.