{"id":87,"date":"2010-11-22T23:07:34","date_gmt":"2010-11-22T22:07:34","guid":{"rendered":"http:\/\/thoughtflow.dk\/?p=87"},"modified":"2014-04-11T14:12:03","modified_gmt":"2014-04-11T12:12:03","slug":"lisp-frustrations","status":"publish","type":"post","link":"https:\/\/davidlebech.com\/thoughtflow\/lisp-frustrations\/","title":{"rendered":"Lisp"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"\/thoughtflow\/wp-content\/uploads\/iseasylisp1-300x114.png\" alt=\"Is Lisp easy?\" title=\"Is Lisp easy? No\" width=\"300\" height=\"114\" class=\"alignright size-medium wp-image-100\" srcset=\"https:\/\/davidlebech.com\/thoughtflow\/wp-content\/uploads\/iseasylisp1-300x114.png 300w, https:\/\/davidlebech.com\/thoughtflow\/wp-content\/uploads\/iseasylisp1.png 467w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/>I try. I really do. I read articles, I write code, I frustrate myself and I force myself to spend countless hours making things work. Whatever I do, I keep bumping my head into yet another wall. I&#8217;m trying to grasp Lisp.<\/p>\n<p>According to John McCarthy, Lisp represents a <a href=\"http:\/\/www-formal.stanford.edu\/jmc\/lisp20th\/lisp20th.html\">local optimum in the space of programming languages<\/a>. What he and everyone else fail to tell people learning Lisp (at least me) is that is represents a <em>global<\/em> minimum in the space of programming language learnability.<\/p>\n<p>There are many good resources to help understanding Lisp everywhere, ranging from <a href=\"http:\/\/paulgraham.com\/rootsoflisp.html\">almost philosophical<\/a> over <a href=\"http:\/\/www.defmacro.org\/ramblings\/lisp.html\">paedagogical introductions<\/a> to more <a href=\"http:\/\/java.ociweb.com\/mark\/clojure\/article.html\">technical<\/a> articles. I have also managed to do <em>something<\/em> in Lisp, like implementing <a href=\"https:\/\/github.com\/dlebech\/FastICA-in-Clojure\">FastICA for Independent Component Analysis<\/a> in Clojure, a dialect of Lisp, and at the moment, I&#8217;m trying to implement FP-growth, a well-known and fairly scalable Association Rule Mining algorithm. And yes, whenever something succeeds (after many hours of pondering), it is a pleasing experiencing to notice how few lines are sometimes needed to accomplish complex tasks.<\/p>\n<p>But I&#8217;m not satisfied. I&#8217;m frustrated. When I was learning Java in the early days of my academic career, I was rarely <em>frustrated<\/em> when faced with new problems to solve. But learning Lisp is like having a very unstable nuclear power plant living in the brain. Meltdowns are inevitable and occur quite often.<\/p>\n<p>And the worst thing about Lisp is not Lisp itself. It is the feeling of incompetence that hits you in the face whenever you cannot figure something out. The feeling of mediocrity is not very pleasant and the meltdowns are tough on one&#8217;s self-esteem. The thought: &#8220;Maybe I am just an <a href=\"http:\/\/www.paulgraham.com\/avg.html\">average programmer<\/a>&#8221; pops up constantly.<\/p>\n<p>&#8220;I want to believe&#8221; that Lisp is great. I hope I will see the light. I&#8217;m looking for the promised epiphany. And I most certainly will not settle with mediocrity&#8230; ever.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I try. I really do. I read articles, I write code, I frustrate myself and I force myself to spend countless hours making things work. Whatever I do, I keep bumping my head into yet another wall. I&#8217;m trying to grasp Lisp. According to John McCarthy, Lisp represents a local optimum in the space of [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[44,43,11,45],"class_list":["post-87","post","type-post","status-publish","format-standard","hentry","category-technology","tag-clojure","tag-lisp","tag-open-source","tag-programming"],"_links":{"self":[{"href":"https:\/\/davidlebech.com\/thoughtflow\/wp-json\/wp\/v2\/posts\/87","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/davidlebech.com\/thoughtflow\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/davidlebech.com\/thoughtflow\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/davidlebech.com\/thoughtflow\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/davidlebech.com\/thoughtflow\/wp-json\/wp\/v2\/comments?post=87"}],"version-history":[{"count":0,"href":"https:\/\/davidlebech.com\/thoughtflow\/wp-json\/wp\/v2\/posts\/87\/revisions"}],"wp:attachment":[{"href":"https:\/\/davidlebech.com\/thoughtflow\/wp-json\/wp\/v2\/media?parent=87"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/davidlebech.com\/thoughtflow\/wp-json\/wp\/v2\/categories?post=87"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/davidlebech.com\/thoughtflow\/wp-json\/wp\/v2\/tags?post=87"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}