{"id":530,"date":"2009-12-10T01:27:37","date_gmt":"2009-12-10T06:27:37","guid":{"rendered":"http:\/\/vgable.com\/blog\/?p=530"},"modified":"2009-12-10T04:45:36","modified_gmt":"2009-12-10T09:45:36","slug":"being-a-lisp-is-a-handicap","status":"publish","type":"post","link":"https:\/\/vgable.com\/blog\/2009\/12\/10\/being-a-lisp-is-a-handicap\/","title":{"rendered":"Being a Lisp is a Handicap"},"content":{"rendered":"<blockquote>\n<h3>Being a Lisp Is a Handicap<\/h3>\n<p><strong>There are a large number of people who find Lisp code hard to read<\/strong>. I\u2019m one of them. I\u2019m fully prepared to admit that this is a shortcoming in myself not Lisp, but I think the shortcoming is widely shared.<\/p>\n<p>Perhaps if I\u2019d learned Lisp before plunging into the procedural mainstream, I wouldn\u2019t have this problem \u2014 but it\u2019s <strong>not clear the results of <a href=\"http:\/\/news.ycombinator.com\/item?id=103286\">MIT\u2019s decades-long experiment<\/a> in doing so would support that hypothesis.<\/strong><\/p>\n<p>I think it\u2019s worse than that. In school, we all learn<br \/>\n<code>3 + 4 = 7<\/code> and then <br \/>\n<code>sin(?\/2) = 1<\/code><br \/>\nand then <strong>many of us speak languages with infix verbs. So Lisp is fighting uphill.<\/strong><\/p>\n<p>It also may be the case that <strong>there\u2019s something about some human minds that has trouble with thinking about data list-at-a-time rather than item-at-a-time<\/strong> \u2026<br \/>\n\u2026<\/p>\n<p>I think I really totally understand the value of being <a href=\"http:\/\/en.wikipedia.org\/wiki\/Homoiconicity\">homoiconic<\/a>, and the awesome power of macros, and the notion of the reader. <strong>I want to like Lisp; but I think readability is an insanely important characteristic in programming systems.<\/strong><\/p>\n<p>Practically speaking, this means that it\u2019d be hard for me to go out there on Sun\u2019s (or Oracle\u2019s) behalf and tell them that the way to take the best advantage of modern many-core hardware is to start with S-Expressions before breakfast.\n<\/p><\/blockquote>\n<p>&#8212;<a href=\"http:\/\/www.tbray.org\/ongoing\/When\/200x\/2009\/12\/01\/Clojure-Theses\">Tim Bray<\/a> (emphasis mine)<\/p>\n<p>I&#8217;m afraid he&#8217;s on to something. We have an <a href=\"http:\/\/www.amazon.com\/gp\/product\/0061336467?ie=UTF8&#038;tag=vincgabl-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0061336467\">amazing ability to parse language<\/a>.  But people aren&#8217;t terribly good at building the kinds of stacks needed to parse LISP with their short term memory.<\/p>\n<blockquote><p>This is the cheese that the rat that the cat that the dog that the neighbor owned bothered chased ate.<\/p><\/blockquote>\n<p>Say <em>what<\/em>?!<\/p>\n<blockquote><p>\n(This is the cheese (that the rat (that the cat (that the dog (that the neighbor owned) bothered) chased) ate)).\n<\/p><\/blockquote>\n<p>See the LISP connection?<\/p>\n<p>All functional languages are fighting an uphill battle to be understood. The world we evolved in is stateful (modal) and imperative. We navigate it in a me-at-a-time way. Unfortunately, LISP&#8217;s prefix syntax is another, unnecessary, barrier.<\/p>\n<p>The bottom line is that <strong>every word of code spends more time being read than written<\/strong> &#8212; so writing in a syntax that most people have a hard time reading is one of the worst programming choices imaginable. I believe <a href=\"http:\/\/www.haskell.org\/\">functional programming<\/a> languages are well worth learning; but I don&#8217;t believe it&#8217;s worth suffering a poor syntax.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Being a Lisp Is a Handicap There are a large number of people who find Lisp code hard to read. I\u2019m one of them. I\u2019m fully prepared to admit that this is a shortcoming in myself not Lisp, but I think the shortcoming is widely shared. Perhaps if I\u2019d learned Lisp before plunging into the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16,4],"tags":[326,325,417,514,48],"class_list":["post-530","post","type-post","status-publish","format-standard","hentry","category-accessibility","category-programming","tag-functional-programming","tag-lisp","tag-programming-language-design","tag-readability","tag-syntax"],"_links":{"self":[{"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/posts\/530","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/comments?post=530"}],"version-history":[{"count":5,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/posts\/530\/revisions"}],"predecessor-version":[{"id":535,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/posts\/530\/revisions\/535"}],"wp:attachment":[{"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/media?parent=530"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/categories?post=530"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/tags?post=530"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}