3 ms·
After 35 years of programming, I discovered Common Lisp and programming is enjoyable again. I wish I'd discovered it earlier. With what I've learned in the las
by drmeister 8y ago
After 35 years of programming, I discovered Common Lisp and programming is enjoyable again. I wish I'd discovered it earlier.
With what I've learned in the last five years I've (1) written a Common Lisp compiler that interoperates with C++ and uses LLVM as the backend (github.com/cando-developers/clasp); (2) I've used it as the basis of a programming environment for designing new molecules and materials; (3) we've developed a Jupyterlab kernel and ported Jupyter widgets to Common Lisp as the graphical user interface for the programming environment.
I say "I've" and then "we've" because while I started this myself - several people have joined me and we are now turning it into products.
Common Lisp is great - no other language is as rich and expressive and fun to program in. Real macros (code that writes code!), multiple dispatch, conditions and restarts - it goes on and on. There are lots of features in Common Lisp that haven't made it into other languages.
[edit]
Oh - and then there is this: http://greenlab.di.uminho.pt/wp-content/uploads/2017/09/paperSLE.pdf http://greenlab.di.uminho.pt/wp-content/uploads/2017/09/pape...
Of all the dynamic languages (and who doesn't like dynamic languages?) Common Lisp is the most energy efficient by a long shot.
- PopsiclePete 8y agoOne thing I struggle to understand is how common lisp deals with the "modern" multi-core world. Not just "async i/o" - that's just the tip of the iceberg - but concurrency in general. I know that common lisp (the spec) explicitly doesn't mention any of this - it was the early 90's so who cared anyway - but how would you fit common lisp into a modern server-side app that has to process many things at once? Or is that just not an area that it's concerned with?
- drmeister 8y agoI implemented multithreading in Clasp using pthreads and added support for the 'bordeaux-threads' library (https://github.com/sionescu/bordeaux-threads https://github.com/sionescu/bordeaux-threads). Now any program that does multi-threading using the bordeaux-threads library works in Clasp. This is how Common Lisp adds support for new capabilities.
- wedesoft 8y agoThanks. I really enjoyed your Google Techtalk about CLASP https://www.youtube.com/watch?v=8X69_42Mj-g https://www.youtube.com/watch?v=8X69_42Mj-g