I chose Common Lisp for my web publishing system. I could not be happier.
Some benefits of Lisp that are less commonly reported:
Lisp let's you imagine a way of doing something, and then just implement that with nothing getting in your way. You can go from something half-assed to a whole-ass in no time. The type system lets you develop quickly and optimize when it's time. You can run interpreted, compiled, and even optimize the rendered machine code.
Image-based computing let's you skip the database for a lot of things as you can just read data into an image at startup and have, essentially, a fast in-memory DB.
Language-oriented programming allows you to extend Lisp with nouns and verbs related to your problem domain. So you can express the solution in terms domain experts already understand.
The hugely underappreciated condition system is far more than a way to do error handling, but can respond to events and do flow control.
Modernizing Common Lisp is something everyone does. We each curate our own distribution from Quicklisp and develop in that. More coordination there would be welcome, but we're not writing in your dad's Lisp.
A kitchen-sink, multi-paradigm language is ideal compared to a more opinionated system in which there are official paved paths to do things. You get to spend more time figuring out what needs to be done than figuring out the official way to do it. If there is a downside to that, it's that you have to take apart enough flashlights to figure out how things work and can't just NPM somebody's afternoon project over and hope it works.
When you have a perfect spec and you just need to implement it efficiently, think C. When you're not totally sure what you're doing, want to explore the problem space and not paint yourself into a corner, think Lisp. Actually, think Lisp anyway because specs are always wrong, so you're always exploring. Lisp makes for living systems that grow and change organically. C is for making complicated but dead automata.
Some benefits of Lisp that are less commonly reported:
Lisp let's you imagine a way of doing something, and then just implement that with nothing getting in your way. You can go from something half-assed to a whole-ass in no time. The type system lets you develop quickly and optimize when it's time. You can run interpreted, compiled, and even optimize the rendered machine code.
Image-based computing let's you skip the database for a lot of things as you can just read data into an image at startup and have, essentially, a fast in-memory DB.
Language-oriented programming allows you to extend Lisp with nouns and verbs related to your problem domain. So you can express the solution in terms domain experts already understand.
The hugely underappreciated condition system is far more than a way to do error handling, but can respond to events and do flow control.
Modernizing Common Lisp is something everyone does. We each curate our own distribution from Quicklisp and develop in that. More coordination there would be welcome, but we're not writing in your dad's Lisp.
A kitchen-sink, multi-paradigm language is ideal compared to a more opinionated system in which there are official paved paths to do things. You get to spend more time figuring out what needs to be done than figuring out the official way to do it. If there is a downside to that, it's that you have to take apart enough flashlights to figure out how things work and can't just NPM somebody's afternoon project over and hope it works.
When you have a perfect spec and you just need to implement it efficiently, think C. When you're not totally sure what you're doing, want to explore the problem space and not paint yourself into a corner, think Lisp. Actually, think Lisp anyway because specs are always wrong, so you're always exploring. Lisp makes for living systems that grow and change organically. C is for making complicated but dead automata.