<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>PaulBarry.com - Scala, Clojure and Lisplets</title>
  <subtitle type="html">My thoughts, ideas, questions and concerns on technology, sports, music and life</subtitle>
  <id>tag:paulbarry.com,2007:Paulbarry.com</id>
  <generator uri="http://www.paulbarry.com" version="3.0">PaulBarry.com</generator>
  <link href="http://paulbarry.com/xml/atom/article/4852/feed.xml" rel="self" type="application/atom+xml"/>
  <link href="http://paulbarry.com/articles/2007/12/22/scala-clojure-and-lisplets" rel="alternate" type="text/html"/>

  <updated>2008-11-04T04:46:54-05:00</updated>
  <entry>
    <author>
      <name>Paul Barry</name>
      <email>mail@paulbarry.com</email>
    </author>
    <id>urn:uuid:83b09dd9-42d1-4311-a72a-e137a172e840</id>

    <published>2007-12-22T11:47:14-05:00</published>
    <updated>2007-12-22T11:47:14-05:00</updated>
    <title type="html">Scala, Clojure and Lisplets</title>
    <link href="http://paulbarry.com/articles/2007/12/22/scala-clojure-and-lisplets" rel="alternate" type="text/html"/>

    <category term="technology" scheme="http://paulbarry.com/articles/category/technology" label="Technology"/>
        <category term="Clojure" scheme="http://paulbarry.com/articles/tag/clojure"/>
    <category term="JVM" scheme="http://paulbarry.com/articles/tag/jvm"/>
    <category term="lisp" scheme="http://paulbarry.com/articles/tag/lisp"/>
    <category term="Scala" scheme="http://paulbarry.com/articles/tag/scala"/>
    <category term="Java" scheme="http://paulbarry.com/articles/tag/java"/>
    <category term="Lisplets" scheme="http://paulbarry.com/articles/tag/lisplets"/>
        <summary type="html">&lt;p&gt;As a result of reading &lt;a href=&quot;http://steve-yegge.blogspot.com/2007/12/codes-worst-enemy.html&quot;&gt;Steve Yegge&apos;s latest blog rant&lt;/a&gt;, I have discovered a few new interesting things.   Steve&apos;s rant is very anti-Java for all the right reasons, but falls apart when it gets to the &quot;So here&apos;s what I&apos;m going to do about it&quot; part.  He&apos;s switching to another language, one that runs on the JVM, but not Lisp, Jython, JRuby or Groovy, but for apparently no good reason, JavaScript.  Not that JavaScript is a bad language, but I see reason why you would choose that over Lisp, Python or Ruby, and he fails to offer one.&lt;/p&gt;

&lt;p&gt;The good thing is that through the comments of this post I learned about a few things, either directly or indirectly.  Some of these thing have been around for a long time, but hey, I&apos;m just learning about them.&lt;/p&gt;

&lt;p&gt;First, there is a ground swell of support for &lt;a href=&quot;http://www.scala-lang.org/&quot;&gt;Scala&lt;/a&gt;.  I checked out the docs on their site and does look like a very powerful, expressive language.  It seems to have many of the features of Lisp without being a Lisp dialect.  It is syntactically Java-ish, but unlike Groovy, which really for some reason just seems like much-needed syntactic sugar for Java, Scala feels lieke a completely different language.  In other words, and not that this is saying Groovy is a bad thing, but Groovy really isn&apos;t conceptually different than Java, where as Scala is, with things like case classes, for example.  This is a language I&apos;ll have to look into some more.  &lt;/p&gt;

&lt;p&gt;There is also a mention of a new List-dialect for the JVM called &lt;a href=&quot;http://clojure.sourceforge.net/&quot;&gt;Clojure&lt;/a&gt;.  Clojure creator Rich Hickey (you need a blog Rich) recently gave a &lt;a href=&quot;http://lispnyc.org/wiki.clp?page=past-meetings&quot;&gt;presentation on Clojure at LispNYC&lt;/a&gt; and the audio and slides are there.  Clojure has a bunch of interesting ideas in it which he explains in the presentation.  Clojure has a literal syntax for vectors (a.k.a arrays, lists) and maps (a.k.a Hashtables, Dicts) in addition to the traditional lisp lists.  It is not quite a purely functional language, but strongly encourages it, making it the default programming paradigm over object-orientation.  I&apos;ve been wanting to check out Haskell and Erlang to get familiar with the functional programming paradigm, but Clojure might be a good way to get some exposure to that as well.&lt;/p&gt;

&lt;p&gt;Another thing I found is &lt;a href=&quot;http://lisplets.sourceforge.net&quot;&gt;Lisplets&lt;/a&gt;, which was created by Rich Hickey as well a few years ago.  It is a Java Servlet that packages up the entire environment of an HTTP request, request parameters, cookies, session, etc, into an S-expression that is then handed off to a Lisp interpreter that listens on a socket.  Lisp then reads the s-expression, does whatever it does, and then returns data to the Servlet which gets sent to the client.  &lt;a href=&quot;http://www.fractalconcept.com/asp/sdataQ18hOH9s8rSpDM==/sdataQuvY9x3g$ecX&quot;&gt;Mod_lisp&lt;/a&gt; is based on a similar concept.  I think it&apos;s kind of interesting to think of web development in this manner, with a definitive layer of abstraction between the processing of request into a data structure, and then processing the request based on that data structure.&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;As a result of reading &lt;a href=&quot;http://steve-yegge.blogspot.com/2007/12/codes-worst-enemy.html&quot;&gt;Steve Yegge&apos;s latest blog rant&lt;/a&gt;, I have discovered a few new interesting things.   Steve&apos;s rant is very anti-Java for all the right reasons, but falls apart when it gets to the &quot;So here&apos;s what I&apos;m going to do about it&quot; part.  He&apos;s switching to another language, one that runs on the JVM, but not Lisp, Jython, JRuby or Groovy, but for apparently no good reason, JavaScript.  Not that JavaScript is a bad language, but I see reason why you would choose that over Lisp, Python or Ruby, and he fails to offer one.&lt;/p&gt;

&lt;p&gt;The good thing is that through the comments of this post I learned about a few things, either directly or indirectly.  Some of these thing have been around for a long time, but hey, I&apos;m just learning about them.&lt;/p&gt;

&lt;p&gt;First, there is a ground swell of support for &lt;a href=&quot;http://www.scala-lang.org/&quot;&gt;Scala&lt;/a&gt;.  I checked out the docs on their site and does look like a very powerful, expressive language.  It seems to have many of the features of Lisp without being a Lisp dialect.  It is syntactically Java-ish, but unlike Groovy, which really for some reason just seems like much-needed syntactic sugar for Java, Scala feels lieke a completely different language.  In other words, and not that this is saying Groovy is a bad thing, but Groovy really isn&apos;t conceptually different than Java, where as Scala is, with things like case classes, for example.  This is a language I&apos;ll have to look into some more.  &lt;/p&gt;

&lt;p&gt;There is also a mention of a new List-dialect for the JVM called &lt;a href=&quot;http://clojure.sourceforge.net/&quot;&gt;Clojure&lt;/a&gt;.  Clojure creator Rich Hickey (you need a blog Rich) recently gave a &lt;a href=&quot;http://lispnyc.org/wiki.clp?page=past-meetings&quot;&gt;presentation on Clojure at LispNYC&lt;/a&gt; and the audio and slides are there.  Clojure has a bunch of interesting ideas in it which he explains in the presentation.  Clojure has a literal syntax for vectors (a.k.a arrays, lists) and maps (a.k.a Hashtables, Dicts) in addition to the traditional lisp lists.  It is not quite a purely functional language, but strongly encourages it, making it the default programming paradigm over object-orientation.  I&apos;ve been wanting to check out Haskell and Erlang to get familiar with the functional programming paradigm, but Clojure might be a good way to get some exposure to that as well.&lt;/p&gt;

&lt;p&gt;Another thing I found is &lt;a href=&quot;http://lisplets.sourceforge.net&quot;&gt;Lisplets&lt;/a&gt;, which was created by Rich Hickey as well a few years ago.  It is a Java Servlet that packages up the entire environment of an HTTP request, request parameters, cookies, session, etc, into an S-expression that is then handed off to a Lisp interpreter that listens on a socket.  Lisp then reads the s-expression, does whatever it does, and then returns data to the Servlet which gets sent to the client.  &lt;a href=&quot;http://www.fractalconcept.com/asp/sdataQ18hOH9s8rSpDM==/sdataQuvY9x3g$ecX&quot;&gt;Mod_lisp&lt;/a&gt; is based on a similar concept.  I think it&apos;s kind of interesting to think of web development in this manner, with a definitive layer of abstraction between the processing of request into a data structure, and then processing the request based on that data structure.&lt;/p&gt;
</content>
  </entry>
  </feed>