3 ms·
> I'm convinced Lisp self-asphyxiated by fighting a last stand on parentheses, which is so far from the point of Lisp. I think the reason Lisp self-asphyxiated
by lmilcin 6y ago
> I'm convinced Lisp self-asphyxiated by fighting a last stand on parentheses, which is so far from the point of Lisp.
I think the reason Lisp self-asphyxiated is because people don't get it.
Most try to spend a little bit time programming it as if it was C/Java/Python/whetever else they have used on their last project. They just see a language that can do what they need but it is all wonky and so why bother?
Compared to other languages, to get benefits from using Lisp you actually need to understand what the benefits are and what causes the benefits.
You can switch from C to Python and reap benefits of Python without having some kind of deep understanding.
That's because programming in Python is basically same thing as programming in C, it is just more efficient. There is less stuff to set up (unless you run into compatibility problems), less stuff take care for (begone pesky pointers and memory allocation!) and better API to do repeatable tasks.
On the other hand programming in Lisp is different than every other language. But you also can program as if you were programming any other language. So you get confused about what makes Lisp different and if you don't stick it out you might think you just learned Lisp and "what is all teh fuss about?"
I think getting from regular programming to Lisp should be presented as same step change as going from not programming to programming.
Person who has never programmed and never heard about programming might have a lot of trouble understanding why you would even want to program (in the end it is just adding numbers -- why would that accomplish anything, I am not an accountant?)
- Guthur 6y agoFor me it's that lisp just sets up the language to be so easily used at multiple levels of abstraction, which is all at once a truism by also not nearly enough to communicate what it is like to use. At this stage there are likely many languages that will allow you to work at similar number of abstractions including syntax, but I'd be surprised if many feel so much like idiomatic code. Implementing macros has some constraints but it's quite possible to internalise and start writing s-exp manipulating code as if it was just any standard problem.
- lmilcin 6y agoThat is a good point. To be able to utilize Lisp well you need to be able to structure your application, but you would need already a lot of experience and exposure to well structured applications. Whereas if you are a Java developer you get structure from people who designed Spring and now this is how you fill in controller, this is how you make service method, this is how you make your database layer... all these decisions were already made for you and you just need to follow to get a passable result. Freedom is a double-edged sword. If you don't know how to use it it may very well be worse than not having it in the first place.
- q-big 6y ago> That's because programming in Python is basically same thing as programming in C, it is just more efficient. You likely got this illusion because from beginning on, you actually programmed in C in a very "Pythonic" way.
- lmilcin 6y agoActually, I learned by programming assembly for a long gone platform, 25 years ago. I have learned Python already after many years programming in C, Perl, Java and Common Lisp, professionally. Experience with Lisp gave me a certain way of looking at programming languages. Rather than "oh, how fun!", I am more like "let's see which subset of Lisp it implements". The only really interesting language in recent years that I have learned is Rust which truly does something new and it recalibrated my thinking about utility of making further subsets of Lisps. It seems there is still a lot of possibility for improvement from the language standpoint, and that it is possible that a lot of improvement may come from restricting the developer from doing certain things rather than giving unrestricted freedom.
- mattyw 6y ago> I think the reason Lisp self-asphyxiated is because people don't get it. As programmer who has spent most time in Python/Java/C but has dabbled in a few lisp dialects but isn’t sure if I “get it”: how can I know if I “get it” or not?
- tluyben2 6y agoIt clicked for me only after getting significantly far in SICP back in the day, doing all the excersizes and creating things inspired by the book. Before that I just thought lispys were just some weird emacs thing. While this is a long time ago for me, I think it still will work for you to feel that 'click'.
- lmilcin 6y agoFor me it clicked after I red Practical Common Lisp, ANSI Common Lisp and On Lisp, Let over Lambda and after I did couple projects in Common Lisp. One day I looked at various REST API clients generated by JHipster. The clients generated for all languages had huge amount of boilerplate. "Well, that's fair for ability to generate it from DSL", I thought to myself. Then I looked at the code generated for Clojure client and it was many, many times smaller and looked as if somebody wrote it by hand. It was nice and neat. Basically, the calls to APIs were macros and rather than generate a stack of code to be put in repository, the macros generated everything at runtime. The DSL was translated 1:1 to calls to macros and all the complexity of the generated code was completely hidden. This caused me to spend considerable time thinking about the nature of difference between lisp and all those other languages and at some point it just clicked.
- rscho 6y agoAre you in love with Lisp? Then yes, you get it ;)
- AnimalMuppet 6y ago> That's because programming in Python is basically same thing as programming in C, it is just more efficient. Depends on what you're doing. If you're writing an operating system, programming in Python is not at all the same thing as programming in C. Ditto if you're writing an embedded system, especially if it uses memory-mapped IO.
- lmilcin 6y agoWell, I meant from the point of view of the act of programming. It is understood that programming languages have other strengths and weaknesses. For example, JavaScript will be more suitable to programming in browser app than Python, even though Python is better general purpose language. Those strengths and weaknesses frequently come down to some pretty arbitrary choices the author made and have nothing to do with the language. I can imagine situation where JavaScript never happened and instead we would be programming browsers in Python.