Facebook
Twitter
Google+
Kommentare
20

Das ultimative „Lernprogramm“

Heute saß ich mit einem Arbeitskollegen zusammen und habe ein wenig über Ruby diskutiert. Da weder er noch ich viel Ahnung von dieser Programmiersprache haben kam mir mal wieder eine Idee. Irgendein großer Informatiker hat mal gesagt, dass man jedes Jahr eine neue Programmiersprache lernen soll. Ein anderer meinte mal, dass man erst eine Sprache beherrscht, wenn man mindestens zwei beherrsche. Von den zwei war übrigens keiner ich.

Ich finde beide Aussagen richtig und wenn ich Zeit hätte, würde ich gerne mehr Sprachen können, da ich glaube, dass dies einen wirklich zu einem besseren Entwickler macht. Mir kam dann die Idee, dass man eine Sprache ja nicht unbedingt mit allen Paradigmen und Co. lernen muss. Vielleicht reicht es ja aus, ein ganz spezielles Programm damit geschrieben zu haben. Also so etwas wie „ich habe hello-world in 25 Sprachen implementiert„. Da ich aber nicht glaube, dass man nach einem „hello world“ eine Sprache durchdrungen hat (man überlege sich hello world in php), muss da ein anderes her.

Jetzt bin ich also auf der Suche nach dem ultimativen Lernprogramm, dass relativ einfach zu implementieren ist, die wichtigsten Facetten der Webentwicklung trotzdem abdeckt. Es sollte also eine HTML-Seite rendern, eine Datenbankabfrage machen und sollte auf POST und GET reagieren. Vielleicht noch ein wenig mit Sessions rumspielen. Ich denke, wenn man dies beherrscht kann man einen Großteil der „normalen“ Webprojekte auch irgendwie entwickeln.

Bis jetzt fällt mir leider nur ein Gästebuch ein, was alle Anforderungen erfüllen würde und nicht mehr. Dummerweise ist das Gästebuchbeispiel so unglaublich langweilig, dass ich es eigentlich nicht nehmen möchte. Aber solange wir nichts besseres finden, bleiben wir einfach dabei. Ich will also ein Gästebuch in 25 Sprachen implementieren und zwar jedes halbe Jahr ein neues.

So jetzt die Fragen:

  • Macht es eurer Meinung nach Sinn, sich so ein Standardziel für alle Sprachen zu setzen?
  • Welche Beispielapplikation würden ihr nehmen?
Über den Autor

Nils Langner

Nils Langner ist der Gründer von "the web hates me" und auch der Hauptautor. Im wahren Leben leitet er das Qualitätsmanagementteam im Gruner+Jahr-Digitalbereich und ist somit für Seiten wie stern.de, eltern.de und gala.de aus Qualitätssicht verantwortlich. Nils schreibt seit den Anfängen von phphatesme, welches er ebenfalls gegründet hat, nicht nur für diverse Blogs, sondern auch für Fachmagazine, wie das PHP Magazin, die t3n, die c't oder die iX. Nebenbei ist er noch ein gern gesehener Sprecher auf Konferenzen. Herr Langner schreibt die Texte über sich gerne in der dritten Form.
Kommentare

20 Comments

  1. Mach doch einen Pizzaladen.. mit ajax noch dazu. Find die Idee sehr gut und richtig. Vor allem wegen dem Tellerrand und so 😉

    Reply
  2. Ganz wichtig es auch die Verbindung zwischen der verwendeten Sprache und JavaScript. Wie einfach ist die Verwendung von AJAX mit anderen Sprachen?

    Das Gästebuch sollte dann auch über zusätzliche Funktionen verfügen, wie ein Hintergrundprozess zum versenden von Benachrichtigungsmail.

    Ich würde das Gästebuch mit einer fremden Sprache auch in zwei Arten implementieren. Beim ersten Versuch von Null ausgehend und beim zweiten Anlauf eventuell mit Framework(s).

    Reply
  3. Ein MiniCMS (OK, davon gibt’s gefühlte 3 Millionen…), ein eigenes „Twitter“, ein basic Forum, … Puh, gute Frage, was wäre sowohl lehrreich als auch nützlich?

    Reply
  4. @Michael: Ich glaube nützlich wird keine der Ideen sein 😉 Dafür ist der Umfang einfach viel zu minimal.

    @Artem: Die Ajax-Sache finde ich gut. Vielleicht schreibe ich heute ja mal ein kleines Anforderungsdokument zusammen, dass dann jeder implementieren kann, wenn er Lust hat.

    Reply
  5. Ich denke, dass es bei den beiden Aussagen gerade darum geht das man sich die Konzepte und Paradigmen der jeweiligen Sprachen anschaut. Man sollte sich meiner Meinung nach sogar eine Sprache aussuchen die möglichst wenig gemeinsam mit der vorher Gelernten hat… dadurch eröffnen sich nämlich erst andere Ansichten auf die eigene Sprache. z.B. von einer dynamisch typisierten Sprache zu einer streng typisierten, imperativ vs. deklarativ, rein prozedural vs. objektorientiert usw

    Reply
  6. @Jochen: Sehe ich genau so, aber ich glaube, wenn man immer das gleiche Standard-Programm implementiert kann man ganz gut vergleichen und man hat sich auch einen festen Rahmen gesteckt, so dass es nicht ausartet.

    Reply
  7. Würde nicht ein kleiner Blog mit RSS-Feed und Kommentar-Option (in Ajax gehalten) reichen?
    Dort hätte man alles drinnen, Frontend, Backend, Datenbank(en), Ajax, UI und Template-Handling.

    Ich entwickle leidenschaftlich gern in PHP, aber auch in C#. Jedoch nutze ich C# für Applikationsentwicklung und PHP fürs Web. Ein gutes Gespann, nur die Interoptibilität mit .NET ist leider etwas schwach 🙁

    Reply
  8. @Nils: Das stimmt auch wieder. Allerdings wird es schwierig da ein passendes Programm zu definieren… wenn man sich auf Webapplikationen beschränkt, okay. Aber ich denke gerade abseits des Weges wird es interessant.
    Und wer will schon eine Webseite in Cobol programmieren 😉

    Reply
  9. Ich guck mir gerade ein paar Frameworks in PHP an und
    meine Beispielapplikationen sind ein Gewichts- und
    Fahrradkilometer Tracker.

    Habe ein bisschen zuviel auf den Rippen und muss die mal
    loswerden. Da ich nicht sonderlich sportlich bin hab ich
    mich erstmal fürs Fahrrad fahren entschieden.

    Und was soll ich sagen, meine eigene Statistik Geilheit
    hilft mir das ich meine Daten auch regelmäßig pflege. 🙂

    Reply
  10. ich implementiere immer ein Verwaltungstool für meine Perry Rhodan Heftesammlung die hat alles was ich brauche.

    – Eingabemasken
    – Suchfunktionen
    – Auswertungen
    usw.

    das Ding gibt es inzwischen als PHP 4, PHP 5, C#, Java, VB#, VB6 Version, wobei die PHP 5 Version inzwischen bestimmt mehr als 5 mal überarbeitete wurde. Man lernt eine Menge in Laufe der Jahre und wundert sich immer was man sich damals dabei gedacht hat.

    🙂

    Reply
  11. Mir persönlich hat die Vorlesung „Objektorientierte Programmierung“ an der Uni ganz gut geholfen. Wir haben in einem halben Dutzend Sprachen Programmkonstrukte und Features verglichen. Auch Pattern bieten sich zum Ausprobieren an.

    Smalltalk, Lisp, C++, Java, C#, Scheme und noch ein paar andere. Ich kann immer noch kein Smalltalk programmieren, aber die Konzepte und verschiedenen Standards für Compiler mal zu sehen war interessant.

    Ich meine, als Webprogrammierer sollte man eventuell auch schon von ECMA mal was gehört oder gelesen haben.

    Für PHP-Programmierer bieten sich auch Perl und C++ als gute Quellen an. Die beiden Urväter von PHP, bei denen sich in Sachen Features gern bedient wird.
    Das zum Beispiel in PHP die Parameterlisten nicht Teil der Signatur sind geht schließlich auf Perl zurück. Interessant dabei ist, dass Perl explizite Variablendeklaration und einen Strict-Mode hat, PHP aber nicht. Wäre da nicht Zend als Monopolist im Weg … wer weiß?

    Reply
  12. BTW Leider gibt’s für LOLCode kaum gescheite Compiler.
    HAI
    I HAS A VAR ITZ „LOLCode ist cool.“
    BOTH SAEM VAR AN „“, 0 RLY?
    YA RLY
    GTFO
    NO WAI
    VISIBLE VAR!
    OIC
    KTHXBYE

    BTW Auch sehr schön ist die Switch-Anweisung in LOLCode.
    BZW Sie heißt: „WTF?“

    Reply
  13. Ich finde die Ansich sehr gut! 🙂 So hat man immer ein Ziel vor Augen.
    Ich weiss aber nicht, ob es in jeder Sprache Sinn machen würde, dass gleiche Projekt umzusetzen. Nicht jede Programmiersprache hat ihre Facetten an den gleichen Stellen 🙂

    Ich würde eher ein Grundprojekt nehmen und mit einem unterschiedlichen Ziel behandeln…. ein Beispiel dazu hab ich aber leider nicht 🙁

    Grüße
    Philipp

    Reply
  14. Mehr als eine Programmiersprache zu können ist wahrscheinlich immer ganz gut. Wenn man heutzutage Webanwendungen schreibt, kommt man ohnehin nicht drum rum sich mit JavaScript (Ajax/jQuery) auseinander zu setzen.

    Ob es wirklich hilft in irgend einer Sprache „besser“ zu werden wenn man Techniken aus einer anderen Sprache nutzt, glaube ich weniger. Ich gehe die meisten Probleme oft ganz anders an, wende andere Techniken an, halte Patterns für Tapetenmuster usw. Ich bin halt kein gelernter Programmierer.
    Dafür ernte ich jedoch oft (herbe) Kritik, weil es einfach nicht Standard ist. Es gib halt recht viele Leute die nur Standard&Framework können und fast schon austicken wenn man ungewohnte Methoden anwendet. „Wer trifft hat recht“ zählt da nicht.

    Reply
  15. @Ralf: So würde ich das nicht sehen. Wer trifft hat recht gilt bestimmt, aber mit der Methode musst du halt in einem Jahr auch noch treffen und die anderen die es verwenden sollten auch damit treffen.

    Reply
  16. „Irgendein großer Informatiker hat mal gesagt, dass man jedes Jahr eine neue Programmiersprache lernen soll“ Legendenbildung? IMHO ist das aus „Der Pragmatische Programmierer“. „Ein Fachbuch pro Quartal lesen“ ist eine weitere Maxime direkt darunter.

    Warum schränkst Du Dich eigentlich selbst ein, indem Du gleich wieder auf den Bereich Webentwicklung zielst?

    > Ob es wirklich hilft in irgend einer Sprache “besser” zu werden wenn man Techniken aus einer anderen Sprache nutzt, glaube ich weniger

    Es geht weniger um Techniken, sondern um Ideen und alternative Ansätze. Und wer Pattern streng nach Lehrbuch anwendet, hat deren Sinn auch nur halb verstanden.

    Reply
  17. So ein ähnliche Idee hat ich auch schon einmal als ich ein neues Webprojekt begonnen hatte. Allerdings dachte ich dabei nicht an 25 Programmiersprachen sondern an die Kombination Programmiersprache/Framework.

    Damals hätte ich es sehr hilfreich gefunden, wenn es irgendwo ein Art Referenzbibliothek gegeben hätte, in der eine einfache Webanwendung mit allen üblichen Features (Userverwaltung/Session, Templates/Themes, Navigation, CRUD, etc.) existiert hätte. Das ganze dann mit Symfony, Zend Framework, Cake, Kohana, Spring, Django, Rails, Grails, etc. implementiert.

    Solch ein Basisanwendung könnte auch gleich als Quickstart für neue Projekte herhalten. So etwas wäre aber eher etwas für Experten für die jeweilige Produktkombination als für solche ein persönliches Lernprojekt.

    Reply
  18. Das Problem in dem oben angesprochenen Beispiel: Wenn Du mal in Ruby reinschnuppern willst und dafür eine Webanwendung implementierst, ist das nichts halbes und nichts ganzes.

    Ruby selbst weiss als „all-purpose“-Sprache nichts vom Web, insofern bekommst Du von der Sprache selbst erstmal keine Unterstützung für beispielsweise den DB-Zugriff, Sessions, Webserveranbindung usw..

    Dafür müssen dann Bibliotheken ran, z. B. kann man in der Standard-Lib rumwühlen (z. B. für CGI-Unterstützung) und man nutzt Gems.

    Man kann sich aus diesen Basis-Komponenten (CGI, Rack, mysql/dbi) eine Basisanwendung zusammenklöppeln, das Problem ist bloss, dass das keiner so macht. Wenn es ins Web mit Ruby geht, läuft fast alles über Frameworks wie Rails, Sinatra, Padrino inkl. ORM (AR, DataMapper, Sequel).

    Und dann ist man im DSL-Bereich, der nur noch wenig mit Ruby selbst zu tun hat. Durch die Eigenschaften der Sprache (Metaprogrammierung, Blöcke, anonyme Funktionen, OO, Monkey Patching) implementieren diese Hilsfmittel eine Abstraktionsschicht, die nur noch zur fachlichen Lösung des Problems beiträgt.

    Schau Dir mal das „Hello-World“ Bsp. von Sinatra an: http://www.sinatrarb.com/

    Um Ruby zu lernen, muss man das Web erstmal aussen vor lassen, und sich mit den angesprochenen Konzepten der Sprache beschäftigen. Dazu ist eine andere Aufgabenstellung sinnvoller :=)

    Reply
  19. Hmm an sich ist es sicher gut mal über den Tellerrand zu schauen. Nur ob das Entwickeln einer Standardanwendung in den verschiedenen Sprachen wirklich den eigenen Skill hebt weiß ich nicht.

    Ich habe durch mein Studium und meinen Job schon größere Projekte in
    Pascal, C, Perl, ABAP, Java und PHP entwickelt.

    Jede Sprache hat ihre Eigenheiten. Aber meine Erfahrung aus Perl nützt komplett NULL in PHP. Was einen wirklich weiter bringt, sind VERSCHIEDENE Projekte. Und dass man verschiedenen Code liest. Weil sonst schwimmt man immer in der eigenen Suppe.

    Wenn ich eine Anwendung in 10 Sprachen schreibe. Ich kann die Anwendung dann im Schlaf entwickeln. Ich lerne doch nur die Syntax und ggf. Stolperfallen in der neuen Sprache. Da ich SpracheX gewöhnt bin, versuche ich diese Paradigmen auf die neue Sprache zu übertragen und mit Glück klappt das auch. Aber selbst wenn das gelingt heißt das nicht, dass ich diese neue Sprache wirklich sinnvoll eingesetzt habe.

    Java zum Beispiel hat zum Beispiel gutes TypeHinting, welches man auch für Arrays nutzen kann. Das gleiche geht in PHP nur über Umwege. Dafür habe ich im PHP coole Magic-Methoden…

    Aus meiner Sicht macht es wirklich mehr Sinn lieber Code in der neuen Sprache zu lesen und zu verstehen. Einfach aus der Sicht Aufwand/ Nutzen. =)

    Reply

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen