Clojure Erfinder Rich Hickey über Zeit und die Nachteile von OOP

Clojure und Funktionale Programmierung ist für mich derzeit ein sehr interessantes Thema. Von C++ und Java kommend, mit Objekt orientierter Programmierung als state of the art Paradigma, ist die Tatsache, dass Clojure nicht OO ist und es auch gar nicht versucht, zunächst durchaus abstoßend. Ich bin auch noch nicht überzeugt davon, dass komplett davon ab zu kommen richtig ist. Rich Hickey, der Erfinder von Clojure, ist auch der Meinung, dass das Denken in Identitäten für uns Menschen sehr natürlich und verständlich ist und das man dies nicht komplett verwerfen sollte. Dennoch erklärt er, was an unserer derzeitigen Sichtweise falsch ist.

„You cannot step twice into the same river.“ (Heraclitus)

(Der Fluss ist nur ein Konstrukt das wir errichten, er besteht in Wirklichkeit nur aus Wassermolekülen, die zu einem späteren Zeitpunkt allerdings ganz andere sind. Einmal ganz davon abgesehen, dass allein die Tatsache dass die Teilchen sich „geändert“ haben, so etwas wie Zeit erzeugt wird. Mehr dazu aber im Vortrag.)

Ich selber kann den Inhalt, des über eine Stunde dauernden Vortrags, in dieser Kürze sicher nicht wiedergeben und ihr solltet euch lieber selber anhören. Er macht einem einige Dinge bewusst, die einem das Leben im Programmieralltag durchaus erleichtern können. Es handelt sich hierbei nicht direkt um einen Vortrag über Clojure, sondern vielmehr um Grundlagen über die damit Verbunde Herangehensweise. Zugegebenermaßen klingt diese zu Anfang fast schon Philosophisch, was wahrscheinlich nicht von Ungefähr kommt, wie man im Laufe des Videos erfährt. Gegen Ende kommt der Vortrag dann zu Konstrukten und Implementierungsmöglichkeiten, wie sie in Clojure verwendet werden und schließt damit den Kreis zu möglichen Anwendungen. Von sich selber sagt Hickey nämlich er sei ein Pragmatiker; einer der sich sehr gut der Theoretischen Grundlagen bedient, wie ich finde.

http://www.infoq.com/presentations/Are-We-There-Yet-Rich-Hickey

Vielleicht kann man in Zukunft einen Weg finden OO und Funktionale Programmierung zu vereinen. Ich werde mich erst einmal weiter mit Clojure beschäftigen und kann dann vielleicht entscheiden man hier letztendlich bei Spaghetticode landen wird.

Advertisements

Annoyme milestone 0.1.0 erreicht

Ich hatte endlich mal wieder ein wenig Zeit und habe beschlossen, dass annoyme den im Wiki definierten milestone 0.1.0 erreicht hat.

Die Änderungen belaufen sich allerdings hauptsächlich auf organisatorische und Paketier-Themen. So war der Milestone definiert als Packaging, documentation, source-forge setup, womit als nächstes dem Ausbau neuer Features nichts mehr im Wege steht.
Die Anwendung ist nun mittels cpack paketierbar und das Ergebnis auch auf der SF Seite verfügbar. Die Projektseite ist https://sourceforge.net/projects/annoyme/ und der Link zum Binary https://sourceforge.net/projects/annoyme/files/

Der Code ist in Github unter dem Tag milestone-0.1.0 oder auf der SF Seite als snapshot verfügbar.

Annoyme

Viele Projekte haben wohl eine Geschichte die dahinter steckt. So auch meine aktuelle kleine Bastelei.

Ich war auf der Arbeit wie immer fleißig am Programmieren und irgendwie ist das Thema aufgekommen, dass ich doch so laut Tippen würde. Ich glaube man könnte mir tatsächlich eine alte mechanische Schreibmaschine unter die Finger legen und würde einfach weiter klimpern.

Daraufhin habe ich jedenfalls entgegnet, dass die Kollegen lieber froh sein sollten, dass ich keine Schreibmaschinensounds, wie im standard ICQ Client, an hätte.

Aus Spass suchte ich nach einem Client unter X der so etwas kann und habe leider nichts gefunden. Ich konnte es kaum verstehen, wo dieses Feature doch derart essenziell ist.

Wie dem auch sei bin ich immer froh wenn ich etwas finde dass es noch nicht gibt – wie oft ist es vorgekommen das ich der Meinung war eine Tolle Idee zu haben und irgendwann feststellen musste, dass es das (leider) schon längst gab. (So wie Instant Messaging über IRC http://www.bitlbee.org/)

Somit habe ich mich nun dran gemacht einen Schreibmaschinensound-Effekt Client für X zu schreiben. Passender weise heißt dieser Annoyme.

Es hat sich herausgestellt, dass das globale empfangen der Tastatur Event nicht ganz so einfach ist wie erwartet aber dank einem funktionierenden XEvIE nun doch möglich ist.

Ich habe mir für das Projekt in C++ einen Account bei github erstellt und werde es darüber pflegen. Ich sehe es als Gelegenheit etwas mehr Erfahrung mit git zu sammeln. Bisher macht es einen relativ benutzerfreundlichen Eindruck.

http://github.com/dedeibel/annoyme/tree/master