4 ms·
I don't think Lisp is ugly or anything, but part of me wonders if, in languages with syntax, the lack of expressivity is a feature rather than a bug. Partially
by overgard 7y ago
I don't think Lisp is ugly or anything, but part of me wonders if, in languages with syntax, the lack of expressivity is a feature rather than a bug. Partially because wrong things look wrong, if the syntax is intelligently designed. The setx example he gave seemed perfect in that respect, while it's superficially pretty neat, the maintainer in me started to think about what it would be like to debug that, or all the horrible ways it could act slightly different than you'd expect. I kind of like that assignment in the languages I use is really boring for the most part. I dont think that setf example is a footgun per se, but, I would have to look at it more closely than in another language like python.
- kyllo 7y agoThe best thing about a highly expressive language is that you can do anything you want to. The worst thing about a highly expressive language is that you can do anything you want to. Expressive power vs. intelligibility (for the sake of common convention and communication in a team setting) is a real tradeoff, and the "principle of least power" does partially explain the popularity of slightly less-powerful languages like Java, Python, and Go, where there is generally just one idiomatic pattern for accomplishing a given task.
- jacobush 7y agoI have done some Real Work ™ in Lisp, but dear deity, Forth... that to me really is you can do anything you want to - in such a scary way I have never worked up the courage to actually learn it.
- astrobe_ 7y agoIf you go full Forth you start with writing your own interpreter, so what you are scared of is really your own shadow. And that's one of the qualities of Forth: to stop worrying, stop being scared of yourself, stop being scared of the future... Or more precisely it learns you to fear the right thing: namely the Great Evil of Accidental Complexity, which often disguise itself as necessary evil.
- jacobush 7y agoThat resonates... I'm actually afraid of what I may become taking that path. :)
- geocar 7y agoThat is cute, but Java, Python and Go all also have multiple, huge, commercial sponsors, and I think it's a mistake to dismiss this impact as less significant than the balance between expressive power and intelligibility. The real problem is that even with Lisp's local maximum for expressive power, it is still just a local maximum: Trying to bolt array programming or type systems onto Lisp ends up with something that doesn't feel much like lisp anymore and certainly doesn't feel like APL or an ML. Is there another maximum? I think this is still worth pursuing, but it doesn't seem to be something that a company even as big as Google or Facebook or Oracle can put their back into. What's important to Facebook and Oracle and Google? Popularity. And "intelligibility" as a social construct definitely seems to be related to popularity, but I've never been convinced to believe you must sacrifice intelligibility to get expressive power, or that we can't make programmers any smarter, only that we haven't figured out how to do either yet.
- lispm 7y ago> the maintainer in me started to think about what it would be like to debug that That's a valid question. Lisp macros open up a new dimension programming and now we have the problem to debug/maintain code with macros. The SETF machinery in one way tries to simplify code (the code then has one style of assignments, not different ways and one does not need to know a special accessor - just wrap a form which looks like it GETs the value and Lisp will figure out how to SET the value). OTOH the SETF machinery is non-trivial. It's usually quite usable, but some of the details are complex - especially since it is user-extensible. It's definitely something to look for: programmers in a Lisp project might need some extra education when it comes to macro programming, to make sure, that they have a good understanding of the basic mechanisms. Also it always makes sense in a team to have more than one person looking at a macro implementation.
- BiteCode_dev 7y agoLisp languages give every programmer the power to be a language designer. Unfortunately most people are not meant to be. Most devs are not even very good at coding, and hence PR reviews, style guidelines, design recommendations, linters, etc. Humans are very flawed creatures. Now add to that: - if a feature exists, it will be used. - at work, you don't have unlimited resources, you have constraints, and you will take shortcuts. And now you have a good picture of why, yes, lack of expressiveness is a something that you might want.