TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Lisp is Abstract Syntax

35 pointsby mrbbkabout 11 years ago

8 comments

GeneralMayhemabout 11 years ago
I have yet to hear a good explanation why homoiconicity is a good thing or in any way easier to learn. My main problem is that you have to know all the same things, but they become unknown unknowns. Not being able to tell at a glance that the argument list in a lambda expression, as one of the most common examples, is doing something other than execute code is very confusing if you're expecting everything to follow the (func arg1 arg2) pattern. On the other hand, when you encounter different syntax, it's immediately obvious that you need to know something else - a known unknown, which is easier to correct.
评论 #7608680 未加载
评论 #7606976 未加载
评论 #7607135 未加载
评论 #7607294 未加载
评论 #7607067 未加载
评论 #7608224 未加载
joe_the_userabout 11 years ago
<i>The abstract syntax was intended to be used writing programs until designers could get around to creating a concrete syntax with human-readable punctuation (instead of Lots of Irritating Silly Parentheses), but programmers soon got used to programming directly in abstract syntax.</i><p>That&#x27;s <i>some</i> programmers who got used to the syntax. It may be absolutely true that once you get used to LISP&#x27;s syntax, it is better than any other. The problem is that since one is dealing with human beings, and with human beings you have the power of first impression and the tendency to make snap decisions based on these, people initial difficulty in grokking LISP&#x27;s syntax is always going to be a hurdle for the language.
评论 #7606487 未加载
lcedpabout 11 years ago
<i>The abstract syntax was intended to be used writing programs until designers could get around to creating a concrete syntax with human-readable punctuation (instead of Lots of Irritating Silly Parentheses), but programmers soon got used to programming directly in abstract syntax.</i><p>Perhaps it was, but..<p>1) The nature of research is so that you can&#x27;t always predict in which way your invention will be useful. To me and many others it seems lisp syntax is quite handy.<p>2) If we take Clojure for the sake of example, we&#x27;d see that it comes with some neat macros which are important part of the language. Those can be viewed as mentioned concrete syntax elements built upon the abstract syntax. Punctuation&#x27;s been improved as well.
PaulHouleabout 11 years ago
Well, yeah.<p>I think the popularity of lisp comes down to the hostility the mit ai lab had towards noam chomsky who in the 1960s spoke out about the vietnam war and thus bit the hand that funds cs research.<p>All other computer languages (except for forth) embraced formal grammar concepts but mit rejected them out of spite.<p>If mit had stopped burning the dragon book and embraced algol syntax we might have been spared the horrors of c, c++ and java but no, they just gave us 1 more reason rt 128 is a boulevard ofbroken dreams.
评论 #7606795 未加载
评论 #7606934 未加载
hajileabout 11 years ago
The biggest proof of the overwhelming preference for parens can be found in the dylan programming language. Despite having M-expression syntax (in fact, the original spec was prefix lisp), the same CLOS object system, and even a macro system, the language has gone nowhere with lispers. More interesting is that dylan was also unpopular with ALGOL programmers. The existence of &quot;sweet expressions&quot; (M-expressions) allowing infix syntax in existing lisp languages further removes this as the main issue.<p>The worst answer as to why people hate lisp is the &quot;too many parenthesis&quot; argument. C-style programmers are just as happy to mash 5-6 paren&#x2F;curly-brace sets together in one line. The only major difference is location. For example, (if test (&lt;result&gt;) (&lt;alternate&gt;)) vs if(test){&lt;result&gt;}else{&lt;alternate&gt;}. In addition, the only reason the closing parens are on a separate line in C and the same line in lisp is convention.<p>I suspect the biggest barrier to ANY language is having a non-C syntax style rather than infix vs prefix or parenthesis. The inertia is simply too great.
cjoabout 11 years ago
What I think this is missing which was a huge part of the SICP course is that Lisp is probably the best language to write your own language in with a custom syntax tailored for the problem space you&#x27;re working on. Even if it isn&#x27;t trivial to do.<p>An example is Clojure&#x27;s Hiccup[0] where there&#x27;s a whole new syntax for dynamic HTML generation. It&#x27;s not a full new Turing-complete language, but it&#x27;s a custom syntax and vocabulary that illustrates Lisp&#x27;s extensibility (a sample of Hiccup in action is linked below, though it isn&#x27;t mine.)<p>[0] - <a href="https://github.com/yokolet/hiccup-samples/blob/master/src/hiccup_templating/views/contents.clj" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;yokolet&#x2F;hiccup-samples&#x2F;blob&#x2F;master&#x2F;src&#x2F;hi...</a>
评论 #7606911 未加载
评论 #7607052 未加载
tluyben2about 11 years ago
What most people have with Lisp syntax, I have with Objective-c. I am mostly blind to syntax (I skip from language to language fast reading&#x2F;writing) except for some esoteric languages (like <a href="http://www.hakank.org/k/" rel="nofollow">http:&#x2F;&#x2F;www.hakank.org&#x2F;k&#x2F;</a>) AND Objective-c. I find it extremely annoying to read while I do it every day. Writing is better for some reason, but far removed from other languages. So I see why some people would not like Lisp syntax while I find it very pleasant&#x2F;enjoyable to read.
endlessvoid94about 11 years ago
&quot;preventing advancement&quot; is a pretty bold assumption.