lisp (Blog)http://www.turnkeylinux.org/blog/term/125/0
enGetting started with Python and Lisphttp://www.turnkeylinux.org/blog/getting-started-with-python-and-lisp
<p>A few weeks ago I talked with a friend studying computer science who I
discovered had never experienced the joy of programming with a high
level language. Not only that but he didn't have the first clue what he
was missing. I feared without my immediate intervention another
perfectly good mind would be wasted in programming hell. At his
university they were using Java for nearly everything so he had somehow
gotten the terribly mistaken idea that it didn't really matter what
programming language one used. I carefully explained that:</p>
<ol class="arabic simple">
<li>Programming languages were not equivalent. Not by a longshot.</li>
<li>Java is rarely the language of choice for really good programmers</li>
<li>The two languages I recommend taking a close look at are Python and
Lisp.</li>
</ol>
<p>He had never heard of Python or Lisp before so I helpfully provided a
list of links to resources that would hopefully help get him started.
Then I figured I'd share those resources with the community for the
benefit of other misguided programmers in similar circumstances.</p>
<p>Also, next time this issue comes up I won't have to waste any breath
proselytizing. I'll just point to this blog post.</p>
<div class="section" id="python-resources">
<h2>Python resources</h2>
<ul class="simple">
<li><a class="reference external" href="http://www.cs.ubc.ca/wccce/Program03/papers/Toby.html">Python as a first programming language for everyone</a></li>
<li><a class="reference external" href="http://docs.python.org/tutorial/">Python tutorial</a></li>
<li><a class="reference external" href="http://www.python.org/getit/">Python installer</a> (yes, Windows is
supported)</li>
</ul>
</div>
<div class="section" id="lisp-resources">
<h2>Lisp resources</h2>
<ul class="simple">
<li>The blog post I wrote: <a class="reference external" href="http://www.turnkeylinux.org/blog/to-lisp-or-not-to-lisp">To Lisp or not to Lisp, that is the question</a></li>
<li><a class="reference external" href="http://clojure.org">Clojure</a>: a free modern dialect of Lisp that runs on the Java VM</li>
<li><a class="reference external" href="http://java.ociweb.com/mark/clojure/article.html">Clojure - Functional programming for the JVM</a></li>
<li><a class="reference external" href="http://www.youtube.com/watch?v=Aoeav%5FT1ARU&amp;feature=PlayList&amp;p=AC43CFB134E85266&amp;index=0">A YouTube series course</a></li>
</ul>
</div>
<div class="section" id="paul-graham">
<h2>Paul Graham</h2>
<p>Paul Graham has written extensively about this stuff. Listen to this
guy, he really gets it.</p>
<ul class="simple">
<li><a class="reference external" href="http://www.paulgraham.com/avg.html">Beating the averages</a></li>
<li><a class="reference external" href="http://www.paulgraham.com/pypar.html">The Python Paradox</a></li>
<li><a class="reference external" href="http://www.paulgraham.com/icad.html">Revenge of the nerds</a></li>
<li><a class="reference external" href="http://www.paulgraham.com/power.html">Succinctness is Power</a></li>
<li><a class="reference external" href="http://www.paulgraham.com/carl.html">Carl de Marcken: Inside Orbitz</a></li>
</ul>
<p>He's also written a book (&quot;On Lisp&quot;) you can buy or download for free:</p>
<p><a class="reference external" href="http://www.paulgraham.com/onlisp.html">http://www.paulgraham.com/onlisp.html</a></p>
</div>
http://www.turnkeylinux.org/blog/getting-started-with-python-and-lisp#commentsdevelopmentlisppythonSun, 19 Apr 2015 21:00:02 +0000Liraz Siri2782 at http://www.turnkeylinux.orgTo Lisp or not to Lisp, that is the question.http://www.turnkeylinux.org/blog/to-lisp-or-not-to-lisp
<p>
<em>Musings on Lisp by a routinely Pythonic programmer</em></p>
<p>
Last week I did some maintenance on various Python projects I haven&#39;t touched in years (literally), and I was surprised by how easy, almost trivial it was to reorient myself and make the necessary changes.</p>
<p>
That observation came at the right time because I&#39;ve been reading up on Lisp dialects for a while now and questioning whether or not I should be programming in Lisp instead. Lisp enthusiasts (converts?) certainly make persuasive arguments, typically advocating Lisp as the one-true-language with near religious zeal.</p>
<!--break-->
<p>
As programming languages go, I&#39;m not very loyal. Over the years I&#39;ve programmed in the usual assortment of languages (e.g., C, C++, Java). Then I discovered how much more productive I could be using a high-level interpreted language and I fell in love. With Perl. The affair lasted a few years until I realized she was a capricious, evil mistress and I left her in disgust for a younger, more elegant programming language: Python. With which I&#39;ve been living happily ever after. No complaints. I have a happy text life. But sometimes, lying in bed late at night, my mind wanders and I wonder, if there isn&#39;t something even better out there for me. Just waiting to be discovered...</p>
<p>
Could Lisp be that temptress?</p>
<p>
Here&#39;s the thing: I&#39;ve done my homework and it seems to be true that the various Lisp dialects are inherently more powerful programming languages than Python.</p>
<p>
The reason for this is that Lisp isn&#39;t really a language at all. It&#39;s more of a mathematical entity. You might say it wasn&#39;t invented but discovered. In fact if there is intelligent life in the universe and they have computers I&#39;ll bet they have something equivalent to Lisp too.</p>
<p>
You see, other &quot;languages&quot; are compiled/interpreted into a tree of instructions. With Lisp, you write programs directly in a lightweight text representation of the instruction tree. The learning curve is substantial. If you&#39;ve programmed in other languages many things need to be unlearned. And the result, with all of those parentheses can look intimidating to someone who&#39;s mind isn&#39;t used to Lisp.</p>
<p>
What makes Lisp so powerful is that there is no distinction between data and code. Code is data. Data is code. Lisp macros take advantage of this by allowing you to execute code at compile time that generates your runtime program. Features that need to be built into other languages (e.g., support for object-oriented programming) can be added to Lisp as a standard library of sorts. At its core you can think of Lisp as a sort of meta-programming language.</p>
<p>
All of this makes Lisp extremely powerful, but... wait for it... this power comes with a price.</p>
<p>
Compared with Python, Lisp is much harder to read and much more verbose than Python. Lisp makes it easier for a programmer to create mind-numbingly complex code. If you think a big ball of mud is bad, imagine a program implemented in a programming language that is itself a big ball of mud. Of course, you can write good and bad programs in any language but Lisp gives you more rope to hang yourself since you can redefine anything and reprogram the language itself.</p>
<p>
Since Lisp is so flexible when you try to understand a Lisp program there is a decent chance you are looking at a program written in a domain-specific programming language invented by the programmer that you need to learn and understand first before you can understand the program. It won&#39;t necessarily help much that this language superficially shares the parse-tree syntax of Lisp. Two functionally equivalent Lisp programs may be as different under the hood as two programs implemented in Haskell vs Erlang.</p>
<p>
Whether it makes sense to pay the price for all this power ultimately depends on the type of programs you are writing and the type of programmers you have in your team.</p>
<p>
In my mind just because you <em>can</em> implement your own programming language doesn&#39;t mean you <em>should</em>. I think it&#39;s only rarely a good idea. Programming languages are hard to design well. Usually, I&#39;d rather let Guido and the other language design experts in the Python community carefully work out what features a language should have rather then hack out my own.</p>
<p>
Unless the inherent complexity of a program is very deep (e.g., AI like tasks) and to dig in you actually do need the power to extend your programming language. In that case, Lisp might be a good choice <em>if</em> you have programmers you can trust not to abuse it.</p>
<p>
Note that many famous programmers who know both still prefer Python for most programming tasks. Where Lisp is optimized for power, Python is optimized for simplicity and ease of use.</p>http://www.turnkeylinux.org/blog/to-lisp-or-not-to-lisp#commentsdevelopmentlisppythonTue, 12 Oct 2010 07:15:51 +0000Liraz Siri1419 at http://www.turnkeylinux.org