TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

How Lisp Became God's Own Programming Language

614 点作者 chwolfe超过 6 年前

34 条评论

default-kramer超过 6 年前
&gt; McCarthy built Lisp out of parts so fundamental that it is hard to say whether he invented it or discovered it.<p>I loved that sentence! I&#x27;m guessing epistemology or a similar field has pondered the &quot;invented or discovered&quot; question already, and if so, I want to read about it.<p>&gt; [on SICP:] Those concepts were general enough that any language could have been used<p>What?? In chapter 4, you write your own Lisp interpreter. If they had chosen C++, would you be writing a C++ compiler? Or a Lisp interpreter in C++? Either way, it would be ugly. And most languages would encounter problems even before they got to chapter 4. What made SICP great was building abstractions out of primitives. Most languages give you some abstractions, and others simply can&#x27;t be built (at least not elegantly). I can&#x27;t imagine SICP using a language that doesn&#x27;t feel a lot like Lisp.<p>That said, count me among the people whose first Lisp exposure was SICP. And yeah, it was really fun and really enlightening. I am loving Racket now, but Racket is big and practical. SICP is small and beautiful - as I recall, the authors deliberately avoid using most of the language. (They used Scheme, but I think Lisp would have worked fine too, right?)
评论 #18227715 未加载
评论 #18230009 未加载
评论 #18227631 未加载
评论 #18230259 未加载
评论 #18227804 未加载
评论 #18227360 未加载
评论 #18228618 未加载
评论 #18228178 未加载
评论 #18246809 未加载
评论 #18228361 未加载
评论 #18228352 未加载
评论 #18228626 未加载
joe_the_user超过 6 年前
Lisp is a powerful language that allows one to mix multiple logical levels within a program (especially through it&#x27;s homoiconicity).<p>Shrdlu is perhaps the most classic illustration of Lisp&#x27;s power[1], A classic program from 1968-70 that allowed natural language communication about a micro world. It was written in a version of Lisp even more free-form than today. When I looked at the source code a while back, it&#x27;s parsing of natural language involved a wide-variety of on-the-fly fix-ups and such to take into account the multiple irregularities of human language.<p>The thing about Lisp&#x27;s power is it allows the production of complex program quickly but doesn&#x27;t particularly have a standard way of gluing these programs together. The other classic Lisp work, The Bipolar Lisp Programmer[2], describes how Lisp has multiple partial implementations of important libraries and programs simply because it allows a certain type of personality to by themselves produce something that&#x27;s remarkably good but doesn&#x27;t encourage any particular group effort.<p>Lisp is certainly evidence that &quot;language matters&quot; but not evidence that Lisp is where one should stop.<p>[1] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;SHRDLU" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;SHRDLU</a><p>[2] <a href="http:&#x2F;&#x2F;marktarver.com&#x2F;bipolar.html" rel="nofollow">http:&#x2F;&#x2F;marktarver.com&#x2F;bipolar.html</a>
评论 #18228423 未加载
评论 #18226879 未加载
评论 #18228342 未加载
评论 #18227394 未加载
评论 #18226572 未加载
YeGoblynQueenne超过 6 年前
&gt;&gt; Two decades after its creation, Lisp had become, according to the famous Hacker’s Dictionary, the “mother tongue” of artificial intelligence research.<p>More precisely, Lisp became the &quot;mother tongue&quot; of AI research <i>in the United States</i>. Europe and Japan, which at the time also had a significant output into AI research, instead used Prolog as a lingua franca.<p>This is interesting to note, because a common use of Lisp in AI was (is?) to write an interpreter for a logic programming language and then use that interpreter to perform inference tasks as required (this approach is evident, for example, in Structure and Interpretation of Computer Programs, which devotes chapter 4.3 to the development of a logic programming language, the <i>query language</i>, which is basically Prolog with Lisp parentheses).<p>Hence the common response, by Prolog programmers, to Greenspun&#x27;s tenth rule, that:<p><pre><code> Any sufficiently complicated Lisp program contains an ad-hoc, informally-specified, bug-ridden, slow implementation of Edinburgh Prolog.</code></pre>
评论 #18229223 未加载
评论 #18229227 未加载
评论 #18230779 未加载
评论 #18230976 未加载
Phemist超过 6 年前
<a href="http:&#x2F;&#x2F;kingjamesprogramming.tumblr.com&#x2F;" rel="nofollow">http:&#x2F;&#x2F;kingjamesprogramming.tumblr.com&#x2F;</a> contains a selection of &quot;verses&quot; generated with a markov chain trained on SICP, the King James Bible and some other works. The results are oftentimes hilarious and some of the Lisp related quotes are very thematic:<p><pre><code> 13:32 And we declare unto you the power and elegance of Lisp and Algol. Lisp, whose name is Holy </code></pre> (and one that doesn&#x27;t necessarily mix in something from King James)<p><pre><code> A powerful programming language should be an effective program that can execute any Lisp program.</code></pre>
loosetypes超过 6 年前
For whatever reason I really enjoyed the Symbolics graphics and animations demo[0] linked in the article.<p>I was born in the 90s and have constantly heard the narrative that technological progress is getting faster and faster, and that we&#x27;re currently at the forefront. And then I see something like this. They had basically photoshop before I was even alive!?<p>[0] <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=gV5obrYaogU" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=gV5obrYaogU</a>
评论 #18228277 未加载
评论 #18226584 未加载
评论 #18226752 未加载
评论 #18230969 未加载
评论 #18227700 未加载
YeGoblynQueenne超过 6 年前
&gt;&gt; They do this even though Lisp is now the second-oldest programming language in widespread use, younger only than Fortran, and even then by just one year.<p>And the third-oldest is COBOL (it&#x27;s at least as widespread as FORTRAN; arguably, it&#x27;s even more widespread than both FORTRAN and LISP together, considering that it&#x27;s used by pretty much every financial org on the planet).<p>It seems that, alredy from such an early time, the kind of languages we would end up creating was already pretty much set in stone: FORTRAN, as the grandady of languages aimed at scientists and mathematicians, that modern-day R, Python, Julia etc draw their heritage from; LISP as the grandmother of languages aimed to computer scientists and AI researchers, still spawning an unending multitude of LISP variants, including Scheme, ML and Haskell; and COBOL, the amorphous blob sitting gibbering and spitting at the center of the universe of enterprise programmers, that begat the Javas, VBs and Adas of modern years.<p>(Note that I&#x27;m referring to language philosophy and intended uses- not syntax or semantics).<p>(I&#x27;m also leaving out large swaths of the programming community: the Perl uses and the C hackers etc. It&#x27;s a limited simile, OK?).
评论 #18227868 未加载
评论 #18229883 未加载
zakum1超过 6 年前
In the history of Lisp, the paper by Richard Gabriel: <a href="https:&#x2F;&#x2F;www.dreamsongs.com&#x2F;WIB.html" rel="nofollow">https:&#x2F;&#x2F;www.dreamsongs.com&#x2F;WIB.html</a>, “Lisp: Good News, Bad News, How to Win Big” is insightful and beautifully written.<p>I am surprised it is not mentioned in the article wrt the “winter period” in which Lisp popularity waned.
metonymy超过 6 年前
If you want to read SICP, it is available in HTML, EPUB here: <a href="https:&#x2F;&#x2F;github.com&#x2F;sarabander&#x2F;sicp" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;sarabander&#x2F;sicp</a> also here: <a href="https:&#x2F;&#x2F;sicpebook.wordpress.com&#x2F;ebook&#x2F;" rel="nofollow">https:&#x2F;&#x2F;sicpebook.wordpress.com&#x2F;ebook&#x2F;</a>. Not available in EPUB on Amazon or Google.
zimablue超过 6 年前
I think this article reverses cause and effects. It seems to start from the assumption that there&#x27;s nothing special about LISP and then points to big cultural moments where programmers revered it and said &quot;this accounts for 20% of the meme&quot; etc.<p>I&#x27;d say those cultural moments exist because LISP &#x2F;is&#x2F; something special. You could write SICP in Java (someone probably has) but the code would be way longer and less beautiful.
kbumsik超过 6 年前
As a dev from non-CS major, I personally havn&#x27;t learnt anything about Lisp but I would like to know. Is Clojure (specifically ClojureScript) a good start to study about it?
评论 #18228573 未加载
评论 #18228446 未加载
评论 #18230797 未加载
评论 #18228377 未加载
kidsnow超过 6 年前
The principle of orthogonal design is something I learned in CS, but hardly anyone mentions any more. The idea boils down to building software parts in a consistent way such that can be combined and re-used to form new things. The way you can accomplish this is by having very few rules. The more &quot;syntaxy&quot; a language is, the less orthogonal it is.<p>For more reading and discussion on this topic: <a href="https:&#x2F;&#x2F;softwareengineering.stackexchange.com&#x2F;questions&#x2F;103567&#x2F;what-is-the-most-orthogonal-programming-language" rel="nofollow">https:&#x2F;&#x2F;softwareengineering.stackexchange.com&#x2F;questions&#x2F;1035...</a>
sn41超过 6 年前
In addition to SICP, John Allen&#x27;s &quot;The Anatomy of Lisp&quot; is also a great book to learn computing concepts through Lisp.
评论 #18226608 未加载
aswanson超过 6 年前
Far too many intelligent programmers swear by lisp for there to be no &quot;there&quot; there. I&#x27;m trying to learn it in my nonexistent spare time.
评论 #18229374 未加载
评论 #18230091 未加载
ancarda超过 6 年前
Having spent months learning Haskell, I&#x27;m interested to pickup another mind-expanding language. If I read SICP (and also watch the MIT lectures), what dialect should I follow along in? Ideally I would learn something people are using today so there would be usable libraries. I mostly write website backends and APIs.<p>Clojure? Common Lisp? Something else?
评论 #18227853 未加载
评论 #18227885 未加载
评论 #18230305 未加载
评论 #18227909 未加载
评论 #18227953 未加载
评论 #18227566 未加载
sova超过 6 年前
&gt;nobody has or will make anything practical with Lisp<p>I made a website with Clojure (a Lisp) that is indeed practical: <a href="http:&#x2F;&#x2F;practicalhuman.org" rel="nofollow">http:&#x2F;&#x2F;practicalhuman.org</a>
评论 #18226581 未加载
评论 #18226911 未加载
评论 #18226845 未加载
评论 #18226883 未加载
评论 #18226862 未加载
aportnoy超过 6 年前
How do you build a simple beautiful website like this?
评论 #18226952 未加载
评论 #18226990 未加载
collyw超过 6 年前
Would it be worth going through SCIP without prior knowledge of LISP (i.e. could I pick it up from the book) or is it better to have some knowledge beforehand?
评论 #18228026 未加载
评论 #18227590 未加载
评论 #18228132 未加载
andrewstuart超过 6 年前
Is assembly the devil&#x27;s own programming language?
评论 #18226549 未加载
评论 #18226497 未加载
评论 #18226641 未加载
评论 #18230813 未加载
评论 #18227295 未加载
评论 #18226554 未加载
Shorel超过 6 年前
I think the test to find out if a programmer can eventually learn to work on a Lisp codebase lies in his&#x2F;her opinion about the conditional (ternary) operator.<p>If the programmer hates the C(T)O because it is too confusing, that programmer is hopeless about using Lisp.<p>If the programmer sees the C(T)O as a trivial syntax that helps to make the code short and neat, then that programmer will love Lisp.
评论 #18228967 未加载
评论 #18228606 未加载
pjmlp超过 6 年前
&gt; Ruby got… well, Ruby is a Lisp<p>If only it had the same level of AOT&#x2F;JIT compilers that most Lisp variants enjoy.
zeveb超过 6 年前
Another two factors in the &#x27;00s re-rise of Lisp were Steve Yegge&#x27;s Drunken Blog Rants (<a href="https:&#x2F;&#x2F;sites.google.com&#x2F;site&#x2F;steveyegge2&#x2F;blog-rants" rel="nofollow">https:&#x2F;&#x2F;sites.google.com&#x2F;site&#x2F;steveyegge2&#x2F;blog-rants</a>) &amp; Practical Common Lisp (<a href="http:&#x2F;&#x2F;gigamonkeys.com&#x2F;book" rel="nofollow">http:&#x2F;&#x2F;gigamonkeys.com&#x2F;book</a>).<p>The former was, at the time, very influential (and deservedly so); the latter was and remains the best reference for actually using Common Lisp to write real software (Edi Weitz&#x27;s Common Lisp Recipes is an excellent companion volume).
robbrit超过 6 年前
Back in 2007 I thought it was silly that SBCL (and SmallTalk too) distributed its applications as &quot;images&quot;. Seems they&#x27;ve been re-invented today as &quot;containers&quot;, which are suddenly an amazing idea.
zepto超过 6 年前
Prolog is probably the language of god.
评论 #18226705 未加载
评论 #18227574 未加载
评论 #18227191 未加载
unixhero超过 6 年前
... I thought that was HolyC :-)
decafbad超过 6 年前
Lisp programmers and Lisp braggers are distinct groups.
etatoby超过 6 年前
Lisp and Scheme are great. They would be my favorite programming languages, <i>if they had a statically typed, Hindley-Milner type system.</i><p>As they stand, they are great learning tools, but I would never build something serious with them. Let alone questions about parallelism, concurrency, available libraries, development tools, etc.<p>Any suggestions are welcome.
评论 #18230848 未加载
评论 #18242550 未加载
评论 #18229989 未加载
评论 #18230606 未加载
cztomsik超过 6 年前
Everybody&#x27;s just praising lisp like it&#x27;s the best language ever, yet very few people are actually using it - and I think it&#x27;s because it&#x27;s really easy to write smart code which has to be explained over and over again to new people (and to your future-you).<p>I think this should be noted.
armitron超过 6 年前
On SICP and Lisp, I was recently asked:<p><pre><code> &quot;Thanks a lot for this insightful reply! I&#x27;ve read about how powerful are Lisp languages (for example for AI), my question is: does Emacs really use all this theoretically powerful functionality of these languages? In what way is this metalinguistic abstraction used? In the built-in functions of Emacs, the powerful packages made by the community, or the Elisp tweaking of a casual Emacs user to customize it (or all three of those). I&#x27;ve read a lot of people praising and a lot of people despising Elisp. Do these people who dislike Elisp do it because they want a yet more powerful Lisp dialect (like Scheme) or because they want to use a completely different language? PD: Excuse my ignorance, I&#x27;m still learning about programming. As a side note, would you recommend me to read SICP if I just have small notions of OOP with Python and Java and I want to learn more about these topics? Will I be able to follow it? </code></pre> Let me start from the end: Reading SICP changed everything I thought I knew about programming and shattered any sort of non-empirical foundation - that I had built up to that point - regarding how my mind worked and how I interfaced with reality. It&#x27;s not just a book about programming, there are layers of understanding in there that can blow your worldview apart. That said, you do need to make an effort by paying attention when you go through the book and (mostly) doing the exercises. The videos on youtube are also worth watching in-parallel with reading the book. The less you know about programming when you go through SICP, the easier it will be for you to &quot;get&quot; it since you&#x27;ll have no hardwired - reinforced by the passage of time and investment of personal effort - prior notions of what programming is and how it should be done.<p>* Metalinguistic abstraction<p>Short answer: all three.<p>Long answer: The key idea behind SICP and the philosophy of Lisp is metalinguistic abstraction which can be described as coming up with and expressing new ideas by first creating a language that allows you to think about said ideas. Think about that for a minute.<p>It follows then that the &#x27;base&#x27; language [or interpreter in the classical sense] that you use to do that, should not get in your way and must be primarily focused in facilitating that process. Lisp is geared towards you building a new language on top of it, one that allows you to think about certain ideas, and then solve your problems in that language. Do you need all that power when you&#x27;re making crud REST apps or working in a well-trodden domain? Probably not. What happens when you&#x27;re exploring ideas in your mind? When you&#x27;re thinking about problems that have no established solutions? When you&#x27;re trying to navigate domains that are fuzzy and confusing? Well, that&#x27;s when having Lisp around makes a big difference because the language will not get in your way and it&#x27;ll make it as easy as possible for you to craft tools that let you reason effectively in said domains.<p>Let&#x27;s use Python as an example since you mentioned it. Python is not that language since it&#x27;s very opinionated and constrained by its decisions in the design space and, additionally, has been deliberately created with entirely different considerations in mind (popular appeal). This is very well illustrated by the idiotic Python moto &quot;There&#x27;s only one way to do it&quot; which, in practice, isn&#x27;t even the case for Python itself. A perfect example of style over substance, yet people lap it up. You can pick and choose a few features that superficially seem similar to Lisp features but that does not make Python a good language for metalinguistic abstraction. This is a classic example of the whole of Lisp being much more than the sum of its parts, and in reality languages like Python don&#x27;t even do a good job of reimplementing some of these parts. This is the reason I don&#x27;t want to just list a bunch of Lisp features that factor into metalinguistic abstraction (e.g. macros and symbols).<p>* Feedback loops<p>The other key part of Lisp and also something expressed fully by the Lisp machines is the notion of a cybernetic feedback loop that you enter each time you&#x27;re programming. In crud, visual terms:<p>[Your mind - Ideas] &lt;--&gt; Programming Language &lt;--&gt; [Artifact-in-Reality]<p>You have certain ideas in your mind that you&#x27;re trying to manipulate, mold and express through a programming language that leads to the creation of an artifact (your program) in reality. As you see from my diagram, this is a bidirectional process. You act upon (or model) the artifact in reality but you&#x27;re also acted upon by it (iterative refinement). The medium is the programming language itself. This process becomes much more effective the shorter this feedback loop gets. Lisp allows you to deliberately shorten that feedback loop so that you _mesh with your artifact in reality_. Cybernetic entanglement if you will. Few other languages do that as well as Lisp (Smalltalk and Forth come to mind). Notice that I emphasized your mind and reality&#x2F;artifact in that previous diagram, but not the medium, the programming language. I did that in order to show that the ideal state is for that programming language not to exist at all.<p>* Differences between Lisps<p>All Lisps allow you to express metalinguistic abstraction (they wouldn&#x27;t be Lisps otherwise). Not all Lisps allow you to shorten the feedback loop with the same efficiency.<p>The Lisps that best do the latter come out of the tradition of the Lisp machines. Today this means Common Lisp and Emacs Lisp (they&#x27;re very similar and you can get most of what Common Lisp offers on the language level in Emacs Lisp today). For that reason, I don&#x27;t think Scheme is more powerful than Emacs Lisp, since Scheme lacks the focus on interactivity and is very different to both CL and Emacs Lisp.<p>As far as other people&#x27;s opinions go, my rule of thumb is that I&#x27;d rather educate myself about the concepts and form my own opinions than blindly follow the herd. Which is why I also think that people who are sufficiently impressed by an introduction to Lisp (such as the OP article) to want to learn it and ask &quot;Which Lisp should I learn? I want something that is used a lot today&quot; are completely missing the point. You&#x27;ll notice that most programming today is done for money, in languages that are geared towards popularity and commoditization. For me, programming is an Art or high philosophy if we take the latter to stand for love of wisdom. And as someone has said, philosophical truths are not passed around like pieces of eight, but are lived through praxis.<p>P.S. The talk by Gerry Sussman (<a href="https:&#x2F;&#x2F;www.infoq.com&#x2F;presentations&#x2F;We-Really-Dont-Know-How-To-Compute" rel="nofollow">https:&#x2F;&#x2F;www.infoq.com&#x2F;presentations&#x2F;We-Really-Dont-Know-How-...</a>) that I saw mentioned in HN yesterday provides an excellent demonstration of metalinguistic abstraction and also serves as an amalgamation of some of my other ideas about Lisp.
评论 #18228258 未加载
catacombs超过 6 年前
Lisp is God&#x27;s language. TempleOS is God&#x27;s operating system.
vertline3超过 6 年前
in XKCD comic &quot;Lisp&quot; God also says the universe was mostly hacked together with Perl.<p>Edit: I see I read the story but I didn&#x27;t click the first comic, just the second one, Sorry disregard.<p>Another language that gets holy reverence is smalltalk.
评论 #18226208 未加载
ASipos超过 6 年前
&gt; a field as esoteric as “recursive function theory”<p>How can this kind of descriptions persist when recursive functions are <i>the very thing</i> that a computer computes.
评论 #18230966 未加载
评论 #18229344 未加载
评论 #18228689 未加载
keithnz超过 6 年前
I thought god mucked around on quantum computers, and I think we can all feel a little bit better that god can&#x27;t seem to write bug free code either.
评论 #18226131 未加载
评论 #18226373 未加载
leshow超过 6 年前
I&#x27;m not familiar with any of these memes about lisp. If anything, the stuff you&#x27;re claiming about lisp I&#x27;ve heard about Haskell.
oldandtired超过 6 年前
Lisp - oh what it could have been. It had such potential, but then it got broken. I find it fascinating that those who are dedicated to the proselytisation of Lisp don&#x27;t see the brokenness of the language. For them, all of the broken things are the features of the language.<p>Scheme was one attempt to fix some of those flaws.<p>In latter times, we see the development of Kernel to fix other flaws.<p>So many second class citizens, so many exceptions to the rule.<p>I am going through the source code for Maxima CAS (written in Lisp) and in so many ways, it&#x27;s a mess. I am not at all disparaging those who have been involved in writing the Maxima CAS system and its source. They have done an incredible job and what they have achieved is remarkable.<p>However, like any software system of any complexity in any language, it has lots of areas that are difficult to maintain, let alone advance. In that regard, Lisp has not been as an advantageous language as it could have been.<p>Lisp (as in Common Lisp and its add-ons) is not a simple language and it is not a consistent language (see CLHS - Common Lisp Hyper Spec docs).<p>When I first came across it in the latter 1970&#x27;s, I thought &quot;wow&quot;. But its flaws quickly came to the fore.<p>So, there is no way that it would ever be God&#x27;s own programming language. Especially since, God doesn&#x27;t need to program, that&#x27;s just for us very limited mortals.
评论 #18226799 未加载
评论 #18226975 未加载
评论 #18226496 未加载