The Future of Programming

Der inspirierendste Tech-Vortrag seit langer Zeit (aller Zeiten?):

Wenn du wenig Zeit hast, dann schau dir nur die letzten 5min an (28:40 – Ende; auch für Nicht-Informatiker verständlich). Ausgangslage: wir schreiben das Jahr 1973, Bret Victor präsentiert die neuesten Computer-Entwicklungen der späten 1960er und frühen 1970er. 40 Jahre später müssen wir als Informatiker feststellen, dass wir versagt haben. Schrecklich versagt. Wir programmieren noch immer in Prozeduren, Textdateien, sequenziellen Programmiermodellen. All die guten Ideen wurden vergessen. Wir haben nichts gelernt.

Aber interessante Frage: wieso all die Kreativität in den 1960ern? Mögliche Antwort: weil niemand wusste, was Programmieren ist. Sie wussten nicht, was sie taten. Also haben sie alles mögliche versucht. Wir nicht. Uns wurde gesagt, wie Programmieren funktioniert. Wir waren in einem Dogma gefangen. Wir waren blind und taub. Er hat recht: es ist schwer, sich aus der Umklammerung von Dogmen zu befreien.

Apropos Dogma. Erinnert stark an die berühmte Rede von Steve Jobs in Stanford:

Your time is limited, so don’t waste it living someone else’s life. Don’t be trapped by dogma — which is living with the results of other people’s thinking. Don’t let the noise of others’ opinions drown out your own inner voice. And most important, have the courage to follow your heart and intuition. They somehow already know what you truly want to become. Everything else is secondary.

Lisp. Again.

Life:

Give a man a fish, and you feed him for a day; show him how to catch fish, and you feed him for a lifetime.
— Anne Isabella Ritchie

 

Computer Science:

If you give someone Fortran, he has Fortran.
If you give someone Lisp, he has any language he pleases.
— Guy Steele

 

Haskell

Meine Damen und Herren: das Haskell Komitee

Diese Gruppe von Mathematikern, Physikern und Informatikern hat in den 1980ern eine Programmiersprache von unvergleichlicher Eleganz geschaffen: Haskell. Du wirst sagen: kann sein, aber niemand benutzt Haskell. Da hast du nicht ganz unrecht, aber abwarten. Radikalität und Schönheit werden sich ihren Weg bahnen in die Köpfe der Menschen. Zumindest ist dies meine Hoffnung. Das Multi-Core Zeitalter wird helfen.

Es ist doch so: C ist für Hacker. Haskell ist für Künstler. Und ohne Kunst ist das Leben eine traurige Veranstaltung.

 

OpenBSD

Huch, schon wieder ein Monat vergangen ohne einen einzigen Blogeintrag verfasst zu haben. Sprechen wir doch mal über Betriebssysteme. Seit Jahren bin ich leidenschaftlicher Linux-Verfechter, doch bin ich vor einigen Wochen über eine Aussage von Theo de Raadt gestolpert, seines Zeichens Chef und Alleinherrscher über das OpenBSD Projekt, von ihm gegründet und vorangetrieben, ein Mann mit einer klaren Vorstellung, wie ein Unix-Betriebssystem auszusehen hat (einfach und elegant), ist er eine äusserst polarisierende Person, weil ausgesprochen radikal und eigenwillig, schroff, rabiat und unnahbar, dem aber selbst seine schärfsten Kritiker, derer es viele gibt, ein hohes Mass an technischem Verständnis attestieren, dieser Theo de Raadt also, der nicht müde wird zu behaupten, dass Linux ein Haufen Schrott ist, sprach folgenden Gedanken aus: Linux ist allein aus Hass gegen Microsoft entstanden. OpenBSD hingegen wird aus Liebe zu Unix entwickelt. Und jetzt Achtung: Liebe > Hass. Deshalb ist OpenBSD besser als Linux. Nun, ich habe OpenBSD in einer VirtualBox installiert und ich muss sagen: es hat was. Unix wie vor 30 Jahren, bescheiden, ehrlich, demütig, nichts da mit dem neumodischen Schnickschnack (Fenster zum rumklicken usw.). Shell, vim, fertig. So muss es ein. OpenBSD wird zwar eher für Server, Firewalls und Embedded Systems eingesetzt, aber ich werde die Desktop-Lösung weiterverfolgen. Da kannst du deine Treiber noch selber schreiben. Ein Betriebssystem für Leute, die wissen wollen, was die Rechenmaschine im Innersten zusammenhält.

Ein typisches De Raadt Zitat, das seine Gedankenwelt auf den Punkt bringt:

The world doesn’t live off jam and fancy perfumes – it lives off bread and meat and potatoes. Nothing changes. All the big fancy stuff is sloppy stuff that crashes. I don’t need dancing baloney – I need stuff that works. That’s not as pretty, and just as hard.

Ein echter Büezer.

Arduino Bot

Heute habe ich mir einen Kindheitstraum erfüllt und einen Roboter gebaut. Dank des Arduino Open-Source Mikrocontrollers ist das alles gar kein Problem mehr. Ein Arduino lag schon seit Jahren bei mir rum und genauso lange bin ich auf der Suche nach einem sinnvollen Verwendungszweck für das Board. Vor einigen Wochen fiel mir das Buch Make: Arduino Bots and Gadgets in die Hände und da wusste ich: der Arduino wird das Gehirn meines Roboters.

Alles was man braucht sind zwei Servos, einen Ultraschall-Sensor, besagtes Arduino Board, eine 9V Batterie, Heisskleber und einen Kleiderbügel aus Draht sowie einige Werkzeuge: Schraubenzieher, Seitenschneider, Zange, Teppichmesser.

Das kommt dabei raus:

Ist er nicht wunderschön?

Der Roboter humpelt vorwärts und weicht zurück, sobald er ein Hindernis entdeckt (das ist der Verdienst des Ultraschall-Sensors). Das Steuerungsprogramm ist noch nicht perfekt und interessanterweise bewegt sich der Roboter besser rückwärts als nach vorne, aber er lebt!

Roboter bestehen im Wesentlichen aus drei Elementen: Sensoren, Mikrocontroller, Aktoren. Die Sensoren versuchen die Umgebung wahrzunehmen und reichen die empfangenen Informationen an den Mikrocontroller weiter. Dieser entscheidet aufgrund der “Sinneseindrücke”, wie er die Aktoren (z.B. Motoren) steuern soll. Bei diesem Roboter haben wir einen Ultraschall-Sensor, der Hindernisse detektiert; diese Information wird an den Arduino Mikrocontroller weitergegeben, der seinerseits die Servos (= Aktoren) steuert.

node.js

Der legendäre Vortrag von Ryan Dahl, in dem er Node.js (das revolutionäre weil non-blocking evented I/O Framework for the V8 JavaScript Engine) vorstellt. Interessant für alle, die sich für Web/Javascript/clevere Ideen begeistern können.
Ich habe es jetzt auch bemerkt, denn die Spatzen pfeifen es von den Dächern: Javascript ist zurück! Als vermurkst und kaputt verschrien, feiert die Programmiersprache ihre viel umjubelte Rückkehr in den Schoss der Web-Gemeinschaft. Da müsste man sich mal ein Buch kaufen und die Sprache lernen.

The Zen of Python

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea — let’s do more of those!

—Tim Peters