3 ms·
- Array indices start at 0. :) [Half-joking.] - An excellent debugger and condition system! - Code won’t be broken in 20 years (which I value when developing
by reikonomusha 7y ago
- Array indices start at 0. :) [Half-joking.]
- An excellent debugger and condition system!
- Code won’t be broken in 20 years (which I value when developing things like compilers). There’s one standard, and several de facto standard extensions.
- Almost 30 years of history, documentation, discussions, etc. Every corner of the language has been discussed to death.
- Several stable, mature, and independent choices of open source implementation.
- Implementations are written in Lisp all the way down. You can immediately jump to the definition of anything at any depth, and often edit or redefine to taste. (Example, I improved SBCL’s integer square root in my live image, and submitted a patch.) The only off-limits bits are a part of the runtime, like the garbage collector.
- Several independent choices of commercial implementation and commercial support.
- Generally easy to optimize and micro-optimize code. Easy to edit/disassemble/debug.
- Easy to write assembly code with SBCL.
- Fast start-up time, easy to compile into native executables. No JIT lags.
- Excellent IDE support through Emacs and SLIME. Incremental development is real with Lisp, and absolutely not so with Julia.
- Easy to dynamically generate and compile code at runtime.
- Excellent metasyntactic programming facilities. (Macros, symbol macros, reader macros, ...)
Negatives compared to Julia:
- Poor support for numerical libraries and poor support for plotting, much to the chagrin of a scientific programmer like myself.
- No hip website or hip foundation backing it.
- Quiet community, with very broad interests. Not everybody is rallying around one theme in Lisp. You got database programmers, game programmers, scientific programmers, etc. This could be a positive, if the community were larger.
- dtornabene 7y ago- Implementations are written in Lisp all the way down. You can immediately jump to the definition of anything at any depth, and often edit or redefine to taste. (Example, I improved SBCL’s integer square root in my live image, and submitted a patch.) The only off-limits bits are a part of the runtime, like the garbage collector. I'd add even the GC is accessible if you have the knowledge. Grammarly has a blog post that talks in part about manipulating parts of the GC to achieve higher through put by keeping heap objects (I think!) from reclamation.
- reikonomusha 7y agoYes, lots of tunable aspects of the GC are available at runtime. You can enable/disable GC, pin memory, control how much of the heap is dedicated to which generations, control GC rate, etc. You just can’t muddle with the actual GC algorithm readily from your image. (Not that you’d ever want to??)
- snaky 7y agoThere's talk about using off-the-heap data structures in one of the most successfull software piece written in Lisp, AllegroGraph. "Escape from the Heap: Low-Level Programming in Common Lisp" https://www.youtube.com/watch?v=S7nEZ3TuFpA https://www.youtube.com/watch?v=S7nEZ3TuFpA
- dtornabene 7y agoThis is an excellent talk.
- valarauko 7y agoWhat's a good lisp to get started with? I'm a bioinformatician who's semi-competent with python & R.
- wglb 7y agoI recommend SBCL with emacs. http://www.sbcl.org/platform-table.html http://www.sbcl.org/platform-table.html