Programmiersprachen


Ich lese gerade “Hackers & Painters” von Paul Graham – mehr dazu demnächst in einem ausführlicherem Buchkommentar – vorab aber schon mal ein paar Kommentare zu Grahams Aussagen zu Programmiersprachen.

Eine wichtige Aussage von Graham dazu ist, dass die heutigen Hochsprachen nicht alle gleich mächtig sind. (Da stimme ich auf jeden Fall mit ihm überein – die verschiedenen Hochsprachen sind für verschiedene Anforderungen verschieden gut geeignet.)

In diesem Zusammenhang (verschiedene Mächtigkeit von Hochsprachen) geht Graham auf die Evolution von Programmiersprachen ein – und stellt Java dabei als toten (aussterbenden) Pfad dar – quasi als “Neandertaler der Programmiersprachen” ;-) Ausserdem argumentiert er, dass es nicht nur verschieden gute Sprachen gibt, sondern tatsächlich eine beste/mächtigste, und zwar Lisp.

Eines seiner Argument ist, dass (gute) Programmiersprachen zwei Eigenschaften haben müssen: Abstraktheit und Mächtigkeit.

Bzgl. Abstraktheit: Es müssen die richtigen Abstraktionen für die Aufgabe sein. So sagt Graham, dass Prolog sehr mächtige Abstraktionen hat – aber nur zur Lösung von etwa 2% aller Probleme – für alle anderen Probleme müsse man diese Abstraktionen missbrauchen um Quasi-Pascal-Programme zu schreiben (S. 150f).

Mächtigkeit zeigt sich darin, dass eine Programmiersprache mit wenigen Konzepten möglichst viel leisten kann. Und dabei ist Effizienz nicht so wichtig – Rechner werden immer schneller und viel dieses Geschwindgkeitszuwachses kann dafür verwendet werden, es einfacher für Menschen zu machen, Computer zu programmieren. (“Wasting programmer time is the true inefficiency, not wasting machine time.”, S. 161)

Bei der Einschätzung, dass Lisp die derzeit mächtigste Programmiersprache ist, bezieht Graham sich unter anderem auf den Essay “How to Become a Hacker” von Eric Raymond. Dieser schreibt dort, dass “Would-be Hacker” folgende Programmiersprachen lernen/können sollten

  • Python und Java (leicht zu lernen)
  • C (um Unix zu hacken)
  • Perl (für Systemadministration und CGI-Skripten)
  • und schließlich Lisp

Dabei wird für Lisp nach Aussage Grahams immer das Argument zum Lernen von Latein angegeben: Man wird Lisp nicht nutzen können/wollen, aber man wird ein besserer Programmierer (in den anderen Sprachen), wenn man einmal Lisp verstanden hat.

Dies sieht Graham allerdings nicht so … Seiner Meinung nach ist Lisp schon heute eine Sprache, die einem Vorteile gegenüber anderen verschafft – und wird es in Zukunft immer mehr werden.

Auf Seite 183 bringt Graham noch einen anderen interessanten Vergleich von Programmiersprachen: Vor einigen Jahren war Java “cool” bei Hackern, dann kam Perl, dann Python, und neuerdings Ruby. “If you look at these languages in order (…) you notice an interesting pattern. (…) Each one is progressively more like Lisp.” Vor einiger Zeit hätte man Ruby sogar als Lisp-Dialekt verkaufen können – so Graham.

Eine interessante “Bestätigung” von Grahams Argumenten, dass Lisp die mächtigste Programmiersprache ist, sieht er darin, dass er mit Freunden die Software ihres Startups Viaweb komplett in Lisp geschrieben haben – und damit den Vorteil hatten, neue Funktionaliät sehr schnell zu realisieren. Graham schreibt in seinem Buch dazu, dass er in seiner Entrepreneur-Phase seine Wettbewerber immer durch Lektüre ihrer Stellenausschreibungen beobachtet und eingeschätzt hat:

  • “The safest kind were the ones that wanted Oracle experience. You never had to worry about those.”
  • “You were also safe if they said they wanted C++ or Java developers.”
  • “If they wanted Perl or Python programmers, that ould be a bit frightning – that’s starting t sound like a company where the technical side, at least, is run by real hackers.”
  • “If I had ever seen a job posting looking for Lisp hackers, I would have been really worried.”

, ,

  1. #1 von Steffen Mazanek am 4.12.2007 - 7:48

    Ich habe nicht ganz verstanden, warum er ausgerechnet Lisp für die Sprache der Wahl hält, könnte mir aber vorstellen, dass die Argumentation in eine ähnliche Richtung geht wie in dem sehr empfehlenswerten Steele-Papier Growing a language (man braucht etwas Geduld beim Lesen, aber die gewonnene Einsicht entschädigt für die Mühe).

  2. #2 von kochm am 4.12.2007 - 8:06

    Graham gibt ein paar Gründe an, warum Lisp die seiner Meinung nach mächtigste Sprache ist (S. 179): “Garbage collection, introduced by Lisp in about 1960 (…). Dynamic typing (…). Lexical closures, introduced by Lisp in the early 1960s (…). Macros, introduced by Lisp in the mid 1960s (…)”. Insbesondere die Macros sind seiner Meinung nach entscheidend – damit lassen sich Dinge realisieren, die mit anderen Sprachen nur schwer möglich sein. Seine weitere Argumente gehen in die Richtung, dass Lisp nur wenige, dafür aber sehr mächtige Konzepte einführt. Btw: Gerade diese Argumentation erinnert mich häufig an FORTH – auch eine sehr mächtige Sprache mit wenigen sehr grundlegenden Konzepten – ich habe gerne damit programmiert – ist aber irgendwie ausgestorben …

(wird nicht veröffentlicht)