<story><title>Practicality: PHP vs Lisp</title><url>http://briancarper.net/blog/386/practicality-php-vs-lisp</url></story><parent_chain><item><author>wvenable</author><text>&quot;PHP is overly verbose and terribly inconsistent and lacks powerful methods of abstraction and proper closures and easy-to-use meta-programming goodness&quot;&lt;p&gt;Sometimes I wonder how much closures and meta-programming is just code for coding sake.  I&apos;ve seen lots of examples of 5 line LISP code that does something totally amazing but you don&apos;t really know what it means but it&apos;s so abstract.  If you have a quick job to do, I don&apos;t see that it&apos;s a limitation in using a language that requires to build the most straight forward solution.&lt;p&gt;PHP is ugly, but for the most part it isn&apos;t horrible -- these days you can easily avoid some of the worst parts and concentrate on making code that would be very equivalent to the same code in, say, Java.  PHP is very straight forward -- it means what it says.&lt;p&gt;&quot;Your web framework in PHP probably isn&apos;t continuation-based, it probably doesn&apos;t compile your s-expression HTML tree into assembler code before rendering it.&quot;&lt;p&gt;This just sounds like over-engineering the problem.</text></item></parent_chain><comment><author>swannodette</author><text>&lt;p&gt;&lt;pre&gt;&lt;code&gt;  Sometimes I wonder how much closures and meta-programming is just code 
  for coding sake. I&apos;ve seen lots of examples of 5 line LISP code that does
  something totally amazing but you don&apos;t really know what it means but it&apos;s
  so abstract
&lt;/code&gt;&lt;/pre&gt;
You could the same for so many PHP frameworks. Why are there so many classes? Why do I have to inherit from a class I don&apos;t understand? Why am I forced to define classes at all? Why are my custom classes 50% getters/setters? Why are my objects mutable? etc. etc. etc.&lt;p&gt;&lt;pre&gt;&lt;code&gt;  (map :last-name people)
&lt;/code&gt;&lt;/pre&gt;
The point is if the language provides the proper level of abstraction, you end writing &lt;i&gt;less of your own hand rolled abstractions&lt;/i&gt;.&lt;p&gt;Again the only thing I&apos;m hearing here is arguments from people who are too lazy to actually see how things are done from a functional perspective. Get off your ass and find out. Then tell me you have a problem with it.</text></comment>
<story><title>Practicality: PHP vs Lisp</title><url>http://briancarper.net/blog/386/practicality-php-vs-lisp</url></story><parent_chain><item><author>wvenable</author><text>&quot;PHP is overly verbose and terribly inconsistent and lacks powerful methods of abstraction and proper closures and easy-to-use meta-programming goodness&quot;&lt;p&gt;Sometimes I wonder how much closures and meta-programming is just code for coding sake.  I&apos;ve seen lots of examples of 5 line LISP code that does something totally amazing but you don&apos;t really know what it means but it&apos;s so abstract.  If you have a quick job to do, I don&apos;t see that it&apos;s a limitation in using a language that requires to build the most straight forward solution.&lt;p&gt;PHP is ugly, but for the most part it isn&apos;t horrible -- these days you can easily avoid some of the worst parts and concentrate on making code that would be very equivalent to the same code in, say, Java.  PHP is very straight forward -- it means what it says.&lt;p&gt;&quot;Your web framework in PHP probably isn&apos;t continuation-based, it probably doesn&apos;t compile your s-expression HTML tree into assembler code before rendering it.&quot;&lt;p&gt;This just sounds like over-engineering the problem.</text></item></parent_chain><comment><author>brlewis</author><text>Say you want to connect to a database, fetch some data, and present it using HTML. Here&apos;s how it can be done using a DSL based on Scheme macros:&lt;p&gt;&lt;a href=&quot;http://brl.codesimply.net/brl_4.html#SEC31&quot; rel=&quot;nofollow&quot;&gt;http://brl.codesimply.net/brl_4.html#SEC31&lt;/a&gt;&lt;p&gt;I can&apos;t forget to fetch the next row from the database. I can&apos;t forget to check that I&apos;m at the end of the result set. Grouping the results is easy and straightforward. The statement and connection objects are automatically closed when the request is done.  Compare that to PHP.&lt;p&gt;I&apos;m getting better, but even today I feel a little irritated when someone says PHP was designed for simple web/database apps. I know what a language designed for simple web/db apps looks like, and PHP is not it.</text></comment>