Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2010  »  01  »  Nebenläufig  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

Malerei

Nach dieser Vorbereitung folgt nun die Funktion, die alles zusammenbaut. In der Funktion »mandelbrot-parallel« erzeugt das Programm zunächst einen Jframe und ein Jpanel, für das es die Methode »paintComponent« implementiert, was der Befehl »proxy« ermöglicht. Die Welt, gespeichert in der Ref »world«, darf das Programm nicht direkt manipulieren, also erzeugt es mit »dosync« eine Transaktion, in der der Befehl »ref-set« der Welt eine neue Liste von leeren Vektoren zuweist (Zeile 107). Danach bekommt das Panel die im Parameter-Satz definierte Größe zugewiesen. Maps sind Funktionen ihrer Schlüssel, das macht den Quelltext kompakt. Eine weitere kompakte Schreibweise erlaubt »doto« (Zeile 114): Es ruft auf dem ersten Argument, einem Java-Objekt, alle darauf folgenden Methoden auf.

Ab Zeile 119 folgt das Herzstück dieses Programms. Mit »dorun« bewirkt der Programmierer Seiteneffekte. Die komplette Parallelisierung des Algorithmus steckt in dem p von »pmap« in Zeile 121. Hier handelt es sich um den oben beschrieben Befehl »map«, der sich aber automatisch auf die vorhandenen CPUs oderKerne verteilt. Wie das auf einem Notebook mit zwei Cores (Intel Core2 Duo 1,8 GHz, 2 GByte RAM) während der Berechnung aussieht, zeigt die Abbildung 2. Obwohl durch den zweiten Kern kein großer Gewinn zu erwarten ist, da ja das wiederholte Zeichnen des Jpanel schon einen zweiten Thread beschäftigt, sinkt die Zeit für die Berechnung durch »pmap« von rund 5 Sekunden auf etwa 4.


Abbildung 2: Das Programm lastet bei der Berechnung zwei Prozessorkerne aus.

Die anonyme Funktion (»fn«), die hier in »pmap« zur Anwendung kommt, verändert »world« in einer Transaktion (»dosync«), indem sie »alter« aufruft. Dieses »alter« nimmt eine Funktion entgegen, die keine Seiteneffekte hat. Dafür muss der Programmierer sorgen. Hintergrund dieser Anforderung ist das Transaktionsmodell, das die Funktion unter Umständen mehrfach ausführt. Der Rückgabewert dieser Funktion ist der neue Wert der Ref. In diesem Falle schreibt »assoc« dazu die vorher neu berechnete Zeile (»newline«) in den aktuellen Zustand (»state«) der Welt und liefert diese neue Welt zurück.

Nach dieser Manipulation von »world« in einer Transaktion kann der Agent das Signal bekommen, die Welt neu zu zeichnen (»send-off«). Das Resultat zeigt die Abbildung 3.


Abbildung 3: Das Resultat von Closures Arbeit: Eine grafische Darstellung der Mandelbrot-Menge.

Neues und Bewährtes

Clojure ist neu und bringt zwei wesentliche Features mit: Unterstützung für Concurrency direkt in der Sprache und eine enge Verwandschaft mit Java. Das erste macht die Sprache interessant und gut geeignet für die nächsten Generationen von Prozessoren, das zweite gibt Clojure die Chance, produktiv eingesetzt zu werden. Der Einstieg scheint nicht leicht, ist aber einfacher, als mancher denkt ([9], [10]). Die interaktive Entwicklung an der REPL hilft dabei.

Während der Erstellung dieses Artikels hat Clojure ihren zweiten Geburtstag gefeiert. In diesen beiden Jahren hat die Sprache sowohl in der Java- als auch in der Lisp-Community einige Aufmerksamkeit erregt. Ob sie sich durchsetzen kann, wird sich bis zum vierten Geburtstag sicherlich zeigen. Herzlichen Glückwunsch, Clojure! (mhu)

Infos

[1] Clojure-Webseite: [http://www.clojure.org]

[2] Clojure-1.0-Download: [http://clojure.googlecode.com/files/clojure_1.0.0.zip]

[3] Enclojure für Netbeans: [http://www.enclojure.org/]

[4] Clojure-Mode, Swank-Backend: [http://github.com/jochu/]

[5] SLIME: [http://common-lisp.net/project/slime/]

[6] Vim Clojure: [http://kotka.de/projects/clojure/vimclojure.html]

[7] Counterclockwise: [http://code.google.com/p/counterclockwise/]

[8] Clojure und Contrib auf Github: [http://github.com/richhickey]

[9] Ausführlicher Artikel für Einsteiger: [http://java.ociweb.com/marks/clojure/article.html]

[10] Clojure-Vorträge als Videos: [http://clojure.blip.tv]

Der Autor

Stefan Kamphausen ist Physiker und hat eine Vorliebe für Sprachen der Lisp-Familie. Derzeit arbeitet er an einem Buch zum Thema Clojure.

Sie können diesen Artikel als PDF für 99 Cent kaufen. Klicken Sie dazu einfach auf eine der beiden Bezahloptionen Paypal oder ClickandBuy.


Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Code-Vehikel Alternativen zu den populären Programmiersprachen
Android: Der Rivale Googles offene Plattform für mobile Endgeräte - der erste Eindruck
Konservierungsmittel Objektdatenbank Db4o für Java und Mono
Schön rechnen Grafisch anspruchsvolle Bilder programmieren mit Processing
Wissenstransfer Aussichtsreiche Würfelkandidaten unter der Lupe
Groß in Mode Workshop: Major Modes für (X)Emacs
Whitepaper
Daten Migration - Eine Publikation von Bloor Research

Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.

Download PDF (Registrierung erforderlich)
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele

Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
Kommentare (4)
von
ska,
16.03.2010 23:28
Buch angekündigt
Das in der Autoren-Info angedeutete Buch hat mittlerweile eine Webseite: http://www.clojure-buch.de
von
ska,
09.12.2009 15:06
Re: Autsch
Hallo Joschi,

der Teil war humorvoll gedacht, hat aber scheinbar nicht geklappt. Wir haben uns doch zu sehr an Smilies im Text gewöhnt, und Texte ohne diese Auszeichnung verfehlen dann ihre Wirkung.
von
joschi,
06.12.2009 13:58
Autsch
"einfache alte Java-Objekte"

Dem geneigten, fachkundigen Leser ist zwar klar, dass POJOs (plain old Java objects) gemeint sind, allerdings war diese mit dem Holzhammer erzwungene Übersetzung wirklich unnötig.
von
FB,
03.12.2009 16:46
Fehler im Link
Der Link zum ausführlichen Artikel ist fehlerhaft. Richtig ist
http://java.ociweb.com/mark/clojure/article.html