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

科技回声

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

GitHubTwitter

首页

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

资源链接

HackerNews API原版 HackerNewsNext.js

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

The Lisp Curse (2017)

64 点作者 gphilip大约 3 年前

12 条评论

at_a_remove大约 3 年前
The <i>results</i> (many many packages doing fifty to eighty percent of what you need) are what drove me from Perl and what makes me very uncomfortable with the growing disdain for the standard library in Python. I really don&#x27;t want to write my own XML libraries or whatever, I would rather just import whatever the standard solution is. I also do not want to have to do a roundup of the available solutions and try to figure out which is most applicable, then hope that it will actually do the job.<p>A lot of people are very into whatever the language is, but for me, I want a huge standard library.
badsectoracula大约 3 年前
&gt; Making Scheme object-oriented is a sophomore homework assignment. On the other hand, adding object orientation to C requires the programming chops of Bjarne Stroustrup.<p>C++ added a ton of additional stuff to C. The original Objective-C is a much simpler approach on adding object orientation to C and at its core it&#x27;d all be about finding expressions like<p><pre><code> [foo bar:baz boo:hoo] </code></pre> and replacing them with something like<p><pre><code> obj_send(foo, msg_foobarboo, baz, hoo); </code></pre> and linking with an underlying runtime that handles message passing of course.<p>An alternative would be Turbo Pascal 5.5-style OOP where<p><pre><code> struct foo : base { foo(); ~foo(); void blah(); } foo::foo(){ base(); } foo::~foo(){ ~base(); } void foo::blah(){} </code></pre> would be accepted but aside from the C++-like syntax for constructors, destructors (which handle the hidden VMT field) and methods nothing is done automatically and instead you are expected to explicitly construct and destroy the objects (if needed), e.g.<p><pre><code> struct foo foo; foo.foo(); &#x2F;* call constructor chain *&#x2F; foo.~foo(); &#x2F;* call destructor chain *&#x2F; </code></pre> or<p><pre><code> struct foo* foo = malloc(sizeof(struct foo)); foo-&gt;foo(); &#x2F;* call constructor chain *&#x2F; foo-&gt;~foo(); &#x2F;* call destructor chain *&#x2F; free(foo); </code></pre> Note that Objective-C handles (or handled at the past, not sure how things changed nowadays) allocation and construction in separate steps too.<p>Of course unlike a language with Lisp-like macros you&#x27;d need to modify a compiler or write a preprocessor to do the above, which makes it a bit harder, but in any case adding object orientation to C does not mean you have to make it as complex as C++.
评论 #30802887 未加载
评论 #30803357 未加载
arethuza大约 3 年前
<i>&quot;The hardest problem in computer science is not being an opinionated jerk about everything.&quot;</i><p>From the author&#x27;s home page.<p>Edit: Potentially ignoring that quote - I can&#x27;t help observing that although I used Common Lisp as my main development language for 6 years in an academic research environment and <i>really</i> enjoyed it I&#x27;ve never wanted to use it since then...
rileyphone大约 3 年前
I would argue that rather than some curse of expressiveness, the lackluster showing from the community in recent years has been the results of a premature standards process. Common Lisp hasn&#x27;t changed since before I was born, and while to some people that denotes stability, it also leaves new features to be done in the manner the author describes, as 80% projects by lone hackers. The language is more than capable of supporting modern development, but simply requires learning too much context and historical baggage to be appealing to any but the most devoted. This has little to do with expressivity, but more with history and economics. Most successful languages have one or more companies devoting resources to the language and libraries. Lisp has multiple implementations of the language but no blessed one, which means the fossilized standards are the point of departure for each of them, many remnants of the era of software you can buy.<p>There are still a lot of interesting things happening with Lisp, but I can&#x27;t see how Common Lisp will be the path forward. Of course, there have been many challengers seeking to upset it as King Lisp, including this site&#x27;s very own Arc. Clojure has seen the most commercial success in recent years, though the extent that it&#x27;s actually a Lisp is debatable. I&#x27;m a fan of Kernel [0], which makes macros first class members of the language, like everything else. Who knows, but saying it&#x27;s power will necessarily lead to its downfall is a kind of fatalistic mentality that I have little patience for.<p>[0] <a href="https:&#x2F;&#x2F;web.cs.wpi.edu&#x2F;%7Ejshutt&#x2F;kernel.html" rel="nofollow">https:&#x2F;&#x2F;web.cs.wpi.edu&#x2F;%7Ejshutt&#x2F;kernel.html</a>
评论 #30802732 未加载
johnisgood大约 3 年前
&gt; Dr. Mark Tarver — twice-quoted, above — wrote a dialect of Lisp called Qi. It is less than ten thousand lines of macros running atop Clisp. It implements most of the unique features of Haskell and OCaml. In some respects, Qi surpasses them. For instance, Qi&#x27;s type inferencing engine is Turing complete. In a world where teams of talented academics were needed to write Haskell, one man, Dr. Tarver wrote Qi all by his lonesome.<p>Check out <a href="https:&#x2F;&#x2F;github.com&#x2F;factor&#x2F;factor" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;factor&#x2F;factor</a>. Check out how much stuff they have implemented early on, just 2-4 guys tops. I found it really impressive.
toolslive大约 3 年前
&gt; Employers much prefer that workers be fungible, rather than maximally productive.
评论 #30803671 未加载
davidgrenier大约 3 年前
I just wish more people understood that something being Turing Complete isn&#x27;t a feature, it&#x27;s a flaw.
评论 #30803688 未加载
评论 #30801989 未加载
ashton314大约 3 年前
<i>Mathematicians and physicists would rather use another&#x27;s toothbrush than another&#x27;s notation.</i><p>Perhaps The Curse is because Lisp programmers are generally of the same ilk as mathematicians and physicists?
Flankk大约 3 年前
&gt; <i>Real Hackers have also known, for a while, that C and C++ are not appropriate for most programs that don&#x27;t need to do arbitrary bit-fiddling.</i><p>Strongly disagree with this statement. I&#x27;ve read it so many places now that it has to be a meme. I actually wish I could use C++ on the web instead of this JS nightmare ecosystem. I don&#x27;t understand where the idea comes from. I&#x27;m never &quot;bit-fiddling&quot; in C++ and almost never need to use pointers.
评论 #30802007 未加载
评论 #30801879 未加载
评论 #30801579 未加载
评论 #30805574 未加载
评论 #30801682 未加载
评论 #30801950 未加载
评论 #30801518 未加载
评论 #30802341 未加载
rurban大约 3 年前
nit: it&#x27;s (2011) not (2017)<p>otherwise, he speaks from my heart. social issues only
adregan大约 3 年前
OP posted despite the opening paragraph!<p>&gt; Update on October 6, 2017. N.B.: Please stop submitting this to Hacker News! Look at the Hacker News search results for this essay. Check out the note for the first entry: Come on, everyone! Let&#x27;s beat the dead horse one more time!<p>Past discussions <a href="https:&#x2F;&#x2F;hn.algolia.com&#x2F;?query=The%20Lisp%20Curse&amp;type=story&amp;dateRange=all&amp;sort=byDate&amp;storyText=false&amp;prefix&amp;page=0" rel="nofollow">https:&#x2F;&#x2F;hn.algolia.com&#x2F;?query=The%20Lisp%20Curse&amp;type=story&amp;...</a>
评论 #30802489 未加载
评论 #30803094 未加载
评论 #30803045 未加载
评论 #30803268 未加载
stevenally大约 3 年前
If Lisp is do efficient for development, why are there essentially no commercial products that use it?
评论 #30802141 未加载
评论 #30803227 未加载
评论 #30801957 未加载
评论 #30802408 未加载
评论 #30802734 未加载
评论 #30802527 未加载
评论 #30801919 未加载
评论 #30802256 未加载
评论 #30802066 未加载