pages tagged lispftbloghttp://bewatermyfriend.org/tag/lisp/ftblogikiwiki2021-01-06T11:00:47ZNew Programming Languages with Rackethttp://bewatermyfriend.org/p/2021/000/ft2021-01-06T11:00:47Z2021-01-06T10:46:55Z
<p>There was a <a href="https://media.ccc.de/v/rc3-257534-all_programming_language_suck_just_build_your_own_language_oriented_programming_with_racket#t=3811">talk at Remote Chaos by Michael
Sperber</a>
about using <code>syntax-parse</code>, which is Racket's most advanced system to express
syntactic extensions, that is one of the important cogs for implementing new
programming languages on top of Racket. Anything that promotes awesome Scheme
technology is cool with me. ;)</p>
Dive into Clojurehttp://bewatermyfriend.org/p/2012/005/ft2013-06-03T16:19:01Z2012-03-28T07:18:28Z
<p>Es gibt ja jede Menge Programmiersprachen auf der JavaVM. Die beiden Dinge
(also <a href="http://en.wikipedia.org/wiki/Java_Virtual_Machine">die VM</a> und
<a href="http://en.wikipedia.org/wiki/Java_(programming_language)">die Sprache</a>)
gleichzusetzen ist so ziemlich das Unzutreffenste, das man annehmen kann.</p>
<p>Es gibt Portierungen von Sprachen wie
<a href="http://en.wikipedia.org/wiki/Ruby_Programming_Language">Ruby</a>,
<a href="http://en.wikipedia.org/wiki/Python_(programming_language)">Python</a>,
<a href="http://en.wikipedia.org/wiki/Tcl">Tcl</a>
(<a href="http://en.wikipedia.org/wiki/JRuby">JRuby</a>,
<a href="http://en.wikipedia.org/wiki/Jython">Jython</a>,
<a href="http://en.wikipedia.org/wiki/Tcl/Java#Jacl">Jacl</a>) und vielen anderen. Aber es
gibt auch eine Reihe von Sprachen, die speziell für die JVM ausgelegt worden
sind.</p>
<p>Als erstes fällt einem dabei vielleicht
<a href="http://en.wikipedia.org/wiki/Groovy_%28programming_language%29">Groovy</a> ein.
Wenn man typische Skriptaufgaben auf der JVM lösen möchte, ist das vielleicht
sogar das Mittel der Wahl. Besonders, wenn man Erfahrung mit Java hat, denn
Java-Code ist in den allermeisten Fällen syntaktisch korrekter Groovy-Code.</p>
<p>Dann ist da
<a href="http://en.wikipedia.org/wiki/Scala_%28programming_language%29">Scala</a>. Und
Scala ist im Moment "everybody's darling", so scheint es mir. Es handelt sich
dabei um eine Sprache, die objektorientierte und funktionale Ansätze zu
vereinen versucht.</p>
<p>Zu guter Letzt ist da <a href="http://en.wikipedia.org/wiki/Clojure">Clojure</a>, was im
Kern ein Lisp ist. Das heißt, die Sprache hat eine extrem einfache Syntax.
Clojure hat zudem hohe Interoperabilität mit Java (wenn man möchte - oder muß).
Die Sprache implementiert
<a href="http://en.wikipedia.org/wiki/Software_transactional_memory">Software Transactional Memory</a>
als Teil der Sprache, was Clojure zum Einsatz in Programmen mit simultanen
Abläufen prädestiniert.</p>
<p>Als echtes Lisp hat Clojure natürlich eine
<a href="http://en.wikipedia.org/wiki/REPL">REPL</a> (in
<a href="http://en.wikipedia.org/wiki/Emacs">emacs</a> steht sogar
<a href="http://en.wikipedia.org/wiki/SLIME">slime</a> als Interaktionsmodus zur Verfügung
- Common-Lisper werden nun frohlocken...). Und natürlich hat die Sprache ein
Makrosystem. Keine
"<a href="http://en.wikipedia.org/wiki/Hygienic_macro">hygenic macros</a>", wie in
<a href="http://en.wikipedia.org/wiki/Scheme_(programming_language)">Scheme</a>; eher
klassische Lisp Makros, wie in
<a href="http://en.wikipedia.org/wiki/Common_Lisp">Common Lisp</a>. Allerdings hat
Clojures System ein paar Tricks eingebaut, die unbeabsichtigte Namenskonflikte
umschiffen sollten. (Ein Makrosystem ist kein zu unterschätzendes Argument für
eine Sprache. Wenn man nur die Makros aus C kennt, hat man vielleicht Angst vor
dem Konzept. Richtige Makrosysteme, wie sie die verschiedenen Lisps
implementieren sind dagegen unglaublich mächtige Werkzeuge in einer Sprache.
Sie machen Lisps - und damit Clojure - zu programmierbaren Programmiersprachen.
Wer die Möglichkeiten davon noch nicht kennt verpaßt etwas. Wirklich.)</p>
<p>Scala und Clojure stehen beide schon lange auf der Liste der Sprachen, die ich
mir genauer ansehen wollte. Und ich denke, man kann schon heraushören, welche
der beiden Sprachen mich mehr beeindruckt bisher.
<a href="http://en.wikipedia.org/wiki/Steve_Yegge">Steve Yegge</a> geht im Vorwort des
Buches "<a href="http://www.manning.com/fogus/">The Joy of Clojure</a>" sogar so weit zu
sagen: <em>"[...]Clojure feels like a minor miracle. It's an astoundingly
high-quality language, sure - in fact, I'm beginning to think it's the best
I've ever seen[...]"</em>.</p>
<p>Der Entwickler von Clojure (Rich Hickey) hat vor einiger Zeit längere
Einführungsvorträge in die Sprache gehalten. Einmal für Leute die aus der Java
Ecke kommen und ein anderes Mal für Leute mit Lisp Hintergrund. Hier sind Links:</p>
<ul>
<li>Clojure für Javaprogrammierer
(<a href="http://www.youtube.com/watch?v=P76Vbsk_3J0">Teil 1</a>,
<a href="http://www.youtube.com/watch?v=hb3rurFxrZ8">Teil 2</a>)</li>
<li>Clojure für Lispprogrammierer
(<a href="http://www.youtube.com/watch?v=cPNkH-7PRTk">Teil 1</a>,
<a href="http://www.youtube.com/watch?v=7mbcYxHO0nM">Teil 2</a>)</li>
</ul>
<p>Lisper können sich die Java-Vorträge sparen. Java-Leute möchten sich vielleicht
erst die Java-Version geben und danach zur Vertiefung noch einmal die
Lisp-Version ansehen, da hier naturgemäß noch etwas tiefer auf den
Lisp-Charakter von Clojure eingegangen wird.</p>
<p>Die Vorträge sind ziemlich lang, also viel Spaß beim Schauen!</p>
<p><strong>[Update 2013-06-03]</strong></p>
<p>Da schau her. Offenbar hat "blib.tv" entschieden alle Clojure Videos vom Netz
zu nehmen. Und das ohne den zahlenden Kunden Rich Hickey davon zu informieren.
Charmeoffensive nennt man das wohl, würde ich sagen. Egal. Es gibt ja noch
andere Videoportale im Netz: Die Videolinks weiter oben sind entsprechend neu
gesetzt.</p>