7 ms·
I seriously don’t get why lisp is so popular on HN, it’s basically unreadable to very most of developers. It’s an ivory tower.
by dirtnugget 6y ago
I seriously don’t get why lisp is so popular on HN, it’s basically unreadable to very most of developers. It’s an ivory tower.
- fetbaffe 6y agoI think you answered your own question.
- dirtnugget 6y agoThere is no good reason to use an esoteric language in production except in order to make yourself irreplaceable.
- dirtnugget 6y agoAnd that’s the epitome of selfishness
- dirtnugget 6y agoRemember Rick: https://link.medium.com/iRs4xvGXK6 https://link.medium.com/iRs4xvGXK6
- bluefox 6y agoHere you go https://plaster.tymoon.eu/view/678 https://plaster.tymoon.eu/view/678
- capableweb 6y agoI wouldn't say Common Lisp is a esoteric language. Esoteric makes me think Brainfuck and other similar languages. Common Lisp and lisps in general are languages you can be productive in, in a "building a product" sense, which you cannot say about most esoteric languages.
- dirtnugget 6y agoThe author himself says it’s esoteric
- lispm 6y agoHe didn't. He wrote: 'Contrary to popular opinion, Lisp is an incredibly practical language for building production systems.'
- dirtnugget 6y agoPlease read the dam article: "We’ve built an esoteric application (even by Lisp standards)"
- lispm 6y agoI've read it. It says: 'We’ve built an esoteric application (even by Lisp standards)' The application was considered by the author to be esoteric in 2015, not the programming language. Quote: "Our Lisp services are conceptually a classical AI application that operates on huge piles of knowledge created by linguists and researchers. It’s mostly a CPU-bound program, and it is one of the biggest consumers of computing resources in our network." The application is the compute core of a cloud-based grammar checker with lots of complex lingustic knowledge, which generates a lot of processing load. And "(even by Lisp standards)" just means that there are other applications in the Natural Language Processing domain, which were written in Lisp, like software to do machine translation between language or text content checking systems for technical documents.
- dirtnugget 6y agoAlso, if you’re really willing to go into it you could be productive in Brainfuck. Doesn’t mean it applies to the general crowd.
- justbaker 6y agoIt’s not a good comparison at all. Learning lisp or understanding it is a good base knowledge regardless of your primarily language. It’s not a language that’s truly esoteric and difficult to reason about by nature. Metaprogramming/macros can be difficult for those inexperienced, but not impossible. Esoteric languages are often created to either use unfamiliar syntax compared to common languages or unfamiliar paradigms to those. In the end, a lot of things are very similar in nature with esoteric languages, just a very different way, with syntax that’s not as readable as common languages. Lisp is certainly readable and easy to grin even if you have little knowledge of the language
- dang 6y agoPlease don't do programming language flamewars on HN. They're tedious.
- pritovido 6y agoYou are ignorant of reality, and the first thing that you ignore is that you are ignorant. With Lisp you don't even need to write lisp code. You can write java, c++,c, swift code... using lisp. That is , you can write lisp code without people realizing you are writing lisp code. The only thing they will notice is that your code looks almost too perfect, too well formatted and justified, are extremely productive and never make mistakes.
- potta_coffee 6y agoHow can one write C for example using lisp? Are you talking about compiling to C?
- lispm 6y agoSometimes people write Lisp code and use translators to C or C++. Some of that code then will be maintained in C / C++. Some of these tools were custom developed, but there existed also specialized Lisp to C translators, which produced 'maintainable' code. For example the first version of the .net garbage collector was written in Common Lisp and then translated to C++. Since then it was maintained and enhanced in the C++ version. https://web.archive.org/web/20150307034829/http://blogs.msdn.com/b/patrick_dussud/archive/2006/11/21/how-it-all-started-aka-the-birth-of-the-clr.aspx https://web.archive.org/web/20150307034829/http://blogs.msdn...
- potta_coffee 6y agoInteresting, I was not aware of this, thank you.
- erik_seaberg 6y agoLanguages have strengths and weaknesses. Learning the right language to express a solution is easier than doing it the hard way in the wrong language just because you happen to know it.
- Redoubts 6y agoThere's also onanism.
- mapcars 6y agoErm, Lisps were used back in time for many production systems when C++ wasn't even started. Looks like your definition of esoteric and production is based on couple of years of cheap CS courses.
- bitwize 6y agoOxford's definition of esoteric: "intended for or likely to be understood by only a small number of people with a specialized knowledge or interest." Today, C++ is a dominant programming language. Lisp is only used in niche applications. Therefore, it is likely only to be understood by a small number of people with specialized knowledge -- hence, it is esoteric.
- zelphirkalt 6y agoUpon conception it was neither "intended" nor "likely" "to be understood by only a small number of people with a specialized knowledge or interest" and it is still not intended that way nor likely, that only few people _can_ understand it. It is just that people choose not to take time and understand it. I don't agree with the conclusion you draw from a definition of esoteric, that is without context anyway, taken from a natural language dictionary.
- mapcars 6y ago>Lisp is only used in niche applications Which niche btw?
- DoreenMichele 6y agoHN is written in Lisp. So anyone interested in cloning HN, better understanding HN, etc, would have reason to be interested in reading up on it, even if it's not something they work with normally. Humans being human, I would think it strange if a forum written in Lisp failed to have some sort of pro-Lisp bias.
- egl2020 6y agoYou're completely right, there's nothing for you in lisp. Nothing to see here. Just move on.
- matvore 6y ago> it’s basically unreadable to very most of developers The ubiquity of parenthesis has a purpose - it lets you treat code as data. Your argument only makes sense if syntax choice were 100% based on taste. But it's not (simplicity of syntax brings with it practical features), so it's great that some people are exploring other options. And it's not intrinsically less readable than say, something like: https://gcc.gnu.org/onlinedocs/gcc-4.6.3/libstdc++/api/a01115_source.html https://gcc.gnu.org/onlinedocs/gcc-4.6.3/libstdc++/api/a0111...
- doublesCs 6y ago> The ubiquity of parenthesis has a purpose - it lets you treat code as data. Your argument only makes sense if syntax choice were 100% based on taste. But it's not (simplicity of syntax brings with it practical features), so it's great that some people are exploring other options. Are you sure? Plenty of languages[1,2] allow you to treat code as data and they don't need that many parenthesis. [1] https://docs.python.org/3.8/library/ast.html https://docs.python.org/3.8/library/ast.html [2] https://docs.julialang.org/en/v1/manual/metaprogramming/index.html https://docs.julialang.org/en/v1/manual/metaprogramming/inde...
- kgwgk 6y agoThat's not code as data, that's parsed code as data. julia> :(a + b*c + 1) == Meta.parse("a + b*c + 1") == Expr(:call, :+, :a, Expr(:call, :*, :b, :c), 1) true Why not just use a single representation (+ a (* b c) 1) ?
- doublesCs 6y ago> That's not code as data, that's parsed code as data. I would say: you can execute it, therefore it's code. What am I missing? > Why not just use a single representation (+ a (* b c) 1) ? Are you saying you don't like the default print? You can write a println method for type Expr which prints it any way you want. Seems like a miniscule thing to nitpick.
- pritovido 6y agoI will explain it for you. Lisp is hard to master, like playing the violin, but if you master it you can get enormous rewards. Other languages are more like "playing guitar hero", most of the work is done for you and it it way easier to learn. HN is like a musician network but for programmers. It attracts lots of people around the world that master lisp like musicians master an instrument. I will tell you about myself, I had a lisp master that did teach me that what had taken me weeks in c, c++ and python code he could do it in lisp in minutes. As I saw this man "play his instrument" it was obvious that if I wanted to be a good programmer I should master it myself. Because I had this master teaching me, I could learn it fast. The "secret" of Lisp is that you can automate your code writing, making you tens or hundred of times more capable with your code. "Ivory tower" means it is not related to reality. Lisp is very real, like violins are real.
- andi999 6y agoThats the story beeing told. Since I havent seen it, my critical mind starts to think, that this is actually a myth. Do you know of any published (in the sense one can reas the code) examples that show this claim (and the reddit v1 is not such an example) (Of course anybody can chime in, it should be actually easy, if the claim that here the experts are lingering around)
- avalys 6y agoCould you give me an example of a real-world software engineering task which takes “weeks” in Python and minutes in Lisp?
- srean 6y agoNot weeks to minutes, but still, try writing an Airlines booking, scheduling application which gets the traveler the best route given his/her requirements.
- andi999 6y agoOther people tried (and succeeded). Like Sabre (seems to be c++, but most is actually SQL it seems), or Amadeus. Well, what I mean: can you elaborate a bit more?
- jlarocco 6y agoIs it so hard to click "hide"?
- TeMPOraL 6y ago"Unreadable" is a choice at this point. Here's a simple trick to make Lisp instantly readable. Take a line of code from an algol-like language: foo(bar(), baz(quux)) then, shift every opening parenthesis one token to the left: (foo (bar), (baz quux)) and drop the commas: (foo (bar) (baz quux)) Now you have an equivalent piece of Lisp code.
- klyrs 6y agoHard agree. I don't use lisp, but people in an adjacent department do (yes, in prod). It takes a few minutes to learn to read lisp. Arithmetic takes a lil bit to grok, but short expressions are easy. I wouldn't share lisp that I've written with my coworkers ;)
- dwheeler 6y agoIf you prefer to use Lisp with a more conventional syntax, check out "readable Lisp: https://readable.sourceforge.io/ https://readable.sourceforge.io/ It has three levels of notation, depending on what you want. There is even a quick lisp library.
- TeMPOraL 6y agoPersonally, I like Lisp the way it is. I fully agree with this image: https://www.reddit.com/r/lisp/comments/e2e5o/lispovision/ https://www.reddit.com/r/lisp/comments/e2e5o/lispovision/
- Koshkin 6y agoTo be fair, bracket abuse is pretty widespread. Lisp, at least, is honest and very consistent in their use. And I don’t find things like [](){} particularly readable (that was valid C++ syntax, BTW).
- ByteJockey 6y agoI haven't done C++ in a very long time. That's a lambda that does nothing, right?
- Koshkin 6y agoCorrect.
- mypalmike 6y agoThe reason is arguably this essay, written by a founder of ycombinator who many here wish to emulate or get the attention of. http://www.paulgraham.com/avg.html http://www.paulgraham.com/avg.html
- _emacsomancer_ 6y agoHN itself is written in a lisp. But I don't understand the unreadability claim: lisp syntax is extremely simple, and therefore (for me, someone is not a developer by profession) extremely readable. What makes it unreadable for you? The parentheses? (https://i.redd.it/9gwghrz9rcs11.jpg https://i.redd.it/9gwghrz9rcs11.jpg)
- protomyth 6y agoI find languages like MUMPS unreadable, but I also know a few folks that love it and truly confused why I don't. I programmed a lot of production code with Perl, and that confuses the heck out of a lot of programmers. I loved Postscript and Forth, but I keep running into people that think they are complicated and hard to follow when the rules are so simple. People are hateful of selector-syntax in Smalltalk and Objective-C, but I think its the most easily understandable syntax out there because the what the variables are for is right there instead of just a comma separated list of variables with no hints. I truly wonder if the C family of languages gets so ingrained that anything else is just seen as crappy? Lisp benefits greatly from a decent text editor, but it is quite readable.
- ByteJockey 6y agoSo, emacs? We are talking lisp here. I don't think there's anything that compares.
- mark_l_watson 6y agoIndeed, I have a friend who totally loved Mumps. I have almost 40 years with Common Lisp, love the language, but I have always been fairly open to what customers want. I know people who do amazing things with Python or Java. I don’t much care about other peoples’ preferences for politics, programming language selection, or religion (or lack thereof). It seems best for a team to choose a stack by some form consensus, and stick with it. I have read the linked article several times in the 5 years since it was written, and I enjoy the shared experience. But the article could also have been about using Clojure, or Ruby, etc., etc. And also been interesting.
- fractallyte 6y agoI have a complaint. Each comment from the parent poster has been downvoted, so much so that I struggle to read them. Is this what we do now? Instead of agreeing to disagree, or (better!) explaining our viewpoint, we make comments fade into the background? Whatever happened to edification? Because, these are valid comments! The real world bears them out! I strongly disagree, but that does not make me (or anyone else) right. This is a forum for discussion, so - discuss!
- memexy 6y agoWell said.
- jiyinyiyong 6y agoSee S-expressions in another way like this http://cirru.org/ http://cirru.org/ .