15 ms·
Lisp is part of the family of languages that J. Backus referred to as 'transformational languages'. Its ability to self-modify creates programs that are almost
by magicmouse 8y ago
Lisp is part of the family of languages that J. Backus referred to as 'transformational languages'. Its ability to self-modify creates programs that are almost impossible for people other than the author to understand. This is why after 50 years it is still a niche language, and will remain so. There is little demand for programming languages that are hard to maintain. A working program lasts decades, and passes through many hands, and LISP is dead-end technology that will forever keep being brought up as its temptations are irresistible to some.
- vindarel 8y agoFYI Lisp (CL) is still used and being adopted in some fields: - http://lisp-lang.org/success/ http://lisp-lang.org/success/ (pgloader was rewritten from python) - https://github.com/azzamsa/awesome-lisp-companies https://github.com/azzamsa/awesome-lisp-companies Besides what's call Lisp in the Tiobe index(https://www.tiobe.com/tiobe-index/ https://www.tiobe.com/tiobe-index/) is ranked 27, before D, Clojure, Lua, Erlang, Rust, Julia… And I find Lisp programs great to maintain: the language is stable, the ecosystem too. Python programs on the contrary are a chore to maintain, even after only 2 years.
- TurboHaskal 8y agoI am confident that my Lisp code will still run after some decades. What would be the average life expectancy of a JS project?
- oblio 8y agoThere is a certain irony to this. Framework heavy Javascript will be hard to rebuild, even, after 1-2 years (NPM churn). Vanilla JS? Decades. I think you can run a JS script from 1998 without any issues. Modern Vanilla JS written in 2018 has the same backwards compatibility guarantees, it's extremely likely that you'll be able to run it in 2038. Once you add Babel, React & co, all bets are off...
- fauigerzigerk 8y agoThis is one of the eternal debates in software engineering. Knowing that certain powerful features of programming languages can be used to create unmaintanable code, do we ban those features or do we try to harness them by using a disciplined approach to software design? Specifically with regard to meta programming, I think we have seen all that can happen several times over. If you have those features within the programming language they tend to get overused. If you don't have them within the programming language, they get tacked on in some inconsistent, half-assed way as soon as the need for frameworks, DSLs or sophisiticated configuration arises.
- vikeri 8y agoIn Clojure macros are not overused IMO.Even though they are fully supported the community encourages you to only use it when it's absolutely necessary.
- realusername 8y ago> Knowing that certain powerful features of programming languages can be used to create unmaintanable code, do we ban those features or do we try to harness them by using a disciplined approach to software design? I don't have any example were the disciplined approached worked so I would agree with the first option. People overused every single bad feature, here it's Lisp but it's the same in Php, Perl, Javascript or Python.
- oblio 8y ago
- sametmax 8y agoI don't get the downvote. This is my experience too. You browse a code source, unable to understand some of it. You google it and find nothing. Only to realize that the author defined it's own little world. As usual, zero unitest or tutorials. It makes lisp a terrible experience for beginers.
- vindarel 8y agoDon't google it, go to the definition of the function at point (M-. in Slime), or ask the Lisp where this stuff comes from (symbol-package and all). > a terrible experience for beginers. Start with your own stuff ;)
- olzd 8y agoCome on. A lack of tests or documentation isn't specific to Lisp. TBH, I'd rather use a well-designed DSL than a shitty API.
- sametmax 8y agoNo it's not, it's way worst when it about new syntax that functions.
- olzd 8y agoAlright, do you have an actual example to show?
- sametmax 8y agoI don't even need to go far, the last comment I had with a lisper on HN ended by : https://news.ycombinator.com/item?id=17128977 https://news.ycombinator.com/item?id=17128977 I don't know what's the worst. That you can't help it or that you won't ever recognize you have a problem. Unfortunaly there is no Lisp Anonymous, so people leave the language. Shame since it's a fantastic tech.
- 8y ago
- quantisan 8y agoLanguages don't create unmaintainable code, people do. I don't get why there's such hate against Lisp. (Granted, as others have noted, the author of this paper obviously drank from the Lisp kool-aid fountain)
- vanderZwan 8y ago> Languages don't create unmaintainable code, people do Have you ever seen so-called academic code? If your developers are PhDs without a programming background, you're bound to get programs that reflect the complexity of their own throught process plus the subject they are dealing with. I don't think encouraging that through something as unbound as Lisp is a good idea, as much as I love how unbound Lisp is. Python probably hits a sweet spot in this regard.
- vindarel 8y agoI disagree. As Lisp is more moldable you can get to your point more easily, in a clear manner that is not obfuscated by the language limitations, syntax and constructs, and it's easier to refactor (you have less code to refactor). Like in Python, we have context managers (with statements), they're cool but we can't do much inside them. I wanted to use them to add logs to a list and automatically return it from my api. I couldn't, I had to do that manually everywhere. Now enters a new developer. In Python he would learn the base style, function names, the use of our custom context manager plus the need to manually feed and return the list of logs. In Lisp he would learn that our context manager (a macro) handles the logs. --- This thread gets comparisons to Python, so let's enlarge the comparison spectrum: Lisp has a better REPL (enjoy ipython ? You'll love a Lisp REPL !), better type inference, it is a compiled language, making it a breeze to build an executable of your web app and deploy it to your server, a better object system (method combination, polymorphism, methods not bound to classes,…), Lisp is stable,…
- base698 8y agoSome of the worst code I've seen comes from functional languages and lisps. Untangling a 100 line lisp function can be a harrowing experience.
- arethuza 8y agoI used Lisp as my main programming language for about 6 years in the late 80s and early 90s - I remember receiving some code I was expected to integrate and initially not realizing that the code was Lisp due to the rather over-enthusiastic use of reader macros. Edit: Actually, I seem to remember that this was how I learned about reader macros and I went on to over-enthusiastically (ab)use them myself....
- kamaal 8y ago>>This is why after 50 years it is still a niche language, and will remain so. The bigger problem here is the number of programmers have increased disproportionately over the years. For that alone reason technologies had to be dumbed down to a point where anybody could use it. If programming kept its original ethos, it would suffer the same problems one suffers taking a subject like Math mainstream. But the real problem here is just starting now. You now have a whole generation full of masses of programmers who only do XML/JSON parsing, talking to HTTP interfaces and doing HTML and doing nothing more. This is like people doing basic algebra whole life. Eventually you won't get much out of this sort of practice. At some point in time, to not max out the value generated by a system you have to up the level of the game, and that would come at a painful task of having to retrain entire generations of programmers which neither will be easy, and in many people's case it won't be possible. Already languages like Java have shown their limits. To build anything meaningful you need large frameworks, with crazy dependency graphs, to manage which you need one another framework(DI). And with all that you barely get to do the ordinary stuff. So eventually you would have only delayed the use of something like FP, not entirely eliminated it. >>There is little demand for programming languages that are hard to maintain. Java applications with 100 classes to post to REST interfaces will eventually suffer the same fate. 'Maintainability' is a very subjective term. >>A working program lasts decades Not true anymore. This was true pre dot com days. Thanks to all this agile processes and 'fail fast' culture. Code bases have very little life these days. >>LISP is dead-end technology that will forever keep being brought up as its temptations are irresistible to some. The success of Clojure means this is totally false.
- sametmax 8y agoIt's true and is why apple succedeed so much : make things easier for the mass. The lisp community refused, and has a serious elitist taste that you can even feel in the comments. I'm ok with it, but you must accept the price of this is peopme leaving, or not comming in the first place. To me it seems an acceptable deal. Plus you can't have your cake eat it.
- kamaal 8y agoProgramming is not easy. Its at-least as difficult as things you try to do with it. A bit like Math. You can't get simpler because you have to work with the reality it models. The thing with languages like Python. They will lower the bar for entry, but they will keep you at the beginner stage all along the stay. That's OK. Programming isn't a monolith, we already have several layers of programmers based on the complexity of the task they solve. So Lisp will have its own place, so will languages like Haskell and F#. Its also upto the programmer to decide at which layers they like to work.
- mping 8y agoWhen these discussions come up, I always remember a comment from a guy (sorry, can't remember his name) in the scala google groups. People were arguing that the scala compiler was too complicated and someone wanted to write a new language. This guys says he can pop up a Hindley-Millner type-inference lang in a couple of weeks, and someone notes that the adoption wouldn't be as nearly as high as with scala. The guys says he just wants a language where he and his team can be productive. This. 1000x this. Ranters gonna rant, haters gonna hate, but productive people will use whatever floats their boat. For me it's clojure lately. I don't need to convince anyone that 'X' is better than 'Y'. If a new paradigm comes along (actors) that proves valuable, I hope that my language can assimilate it (quasar/pulsar). Otherwise I'm happy. Besides, in today's startup economy, we're lucky if a company lasts months, nevermind about decades.
- verinus 8y agoimho it's not so simple. As a manager I would not want such orchids as we call em in German. What if this "rock star" leaves the team? What if we want to bring in more team members? Who pays for the development of these dev tools? After all we are not payed to write code but to solve problems- a fact devs like to forget. Do they really pay for themselves in therms of savings as suggested by the dev? I don't claim that this questions were not raised and answered, but that from a strategic point of view not the coolest and shiniest toys and concepts may make the most sense.
- lmm 8y ago> The guys says he just wants a language where he and his team can be productive. This. 1000x this. Ranters gonna rant, haters gonna hate, but productive people will use whatever floats their boat. For me it's clojure lately. I don't need to convince anyone that 'X' is better than 'Y'. If a new paradigm comes along (actors) that proves valuable, I hope that my language can assimilate it (quasar/pulsar). Otherwise I'm happy. To "just" be productive you need a huge library/tool ecosystem that, realistically, only a handful of languages are ever going to have at any point in time. Particularly if you want your language to make use of the possibilities that GUIs offer. I love Scala and find its IDE support to be one of its great strengths, but even so it's noticeably behind what you get in Java or C#. And that's a top-20 language.
- bachmeier 8y agoIf you think that is why Lisp is a "niche language" then you should check out C. It has a "preprocessor" and you can do all kinds of things that make it hard to read your code, yet it is by any metric very popular, which provides a counterexample to your claim that "There is little demand for programming languages that are hard to maintain." Check out [1] for a few examples. [1] https://www.cise.ufl.edu/~manuel/obfuscate/obfuscate.html https://www.cise.ufl.edu/~manuel/obfuscate/obfuscate.html
- chii 8y agoAny dumb programmer can write C. Only a smart programmer can write Lisp. The popularity is proportional to how much cognitive capability requirements of the language. The story is the same with Haskell.
- mepian 8y agoA dumb programmer who writes C is like a monkey with a grenade, it's irresponsible.
- armitron 8y agoI think when it comes to C, there are no smart programmers. Everyone is like a monkey with a grenade. They very few people that have proven to be exceptions to this, can be counted on one's hand and thus do not invalidate the premise.
- divs1210 8y agoThis is a fallacy
- chii 8y agoIt's an emperical observation. Compare the popularity of languages, and then compare the "difficulty" of using them. Php, javascript, java, C# : all very popular. Haskell, clojure, Lisp, F#, APL (and derivatives): all very niche, and requires some knowledge that one might consider "higher level" than required for the former list.
- bjoli 8y agoI don't agree. All macros except for things like loop follow the same syntax as a regular function call. The mental overhead of those macros are the same as function calls, with the small difference that you have to know they are syntax so that you don't end up passing it as a function argument. I would say that the operator voodoo of Haskell is worse, and that is coming from someone that uses Haskell on a daily basis.
- kimdotcom 8y agoAnd, yet, because of Lisp, HN exists.
- pgt 8y ago“I don’t need macros, they’re too complicated and not useful,” says the programmer as they use Flow with JSX with Babel with two dozen plugins and maintain two hundred line webpack configs for code with machine-checked comments that parses CSS in template strings at runtime.
- vanderZwan 8y agoThe linked article was talking about code in academic contexts though.
- potta_coffee 8y agoYes it's a bit like the pot calling the kettle black when the tech we're burdened with now is an overcomplicated pile of shit.
- agumonkey 8y agoI think the niche qualification is inappropriate here. Lisp spread ideas around. Most dynamic languages today are basically CL in different clothing (lua, python[1], javascript, php ...). Even cpp is looking a lot more lispy these days with auto and closures. Methinks that lisp value is exploratory, when you want to go crazy deep, you use it to mold every bit of the language as you want and try paradigms/principles. ML or Haskell are also used a lot there but I think it requires a bit more apriori planning (separate grammar / semantics, typing, denotational mindset). Whereas lisp is more hack it until you make it. [1] and if you look Dave Beazley fantastic video talks about "abusing" python metalevel, and compare it to CLOS you will find the difference to be more hard to discern.
- zeveb 8y ago> Its ability to self-modify creates programs that are almost impossible for people other than the author to understand. That's simply not true. I think the only reason that Lisp is unpopular is the syntax, which is unfortunate because it's the syntax which is the source of all its power. As for why the syntax itself is so unpopular, sometimes I wonder if irregular syntax really does help comprehension (i.e., that having {}*&^%$#@! helps as a kind of visual shorthand), but most of the time I think it's really just unfamiliarity.
- patrickg_zill 8y agoSorry if I come across like a jerk, but is that really true, though? Can you point me to some lisp code that's completely bonkers and which most people are incapable of understanding?