Lisp as a Vehicle for Rapid Prototyping (1997)
nhplace.com
nhplace.com
Now if I could only get my React Native programs running with Clojurescript...
tldr: npm install something fast hot reloads data-oriented clojurey goodness
The tooling around lisp is still a distinguishing factor though. I haven't found a free development environment for python that has even a small fraction of the power of SLIME (I don't use python quite enough to investigate commercial offerings, though the one time I used pycharm it was fairly nice, it didn't feel as dynamic as SLIME), and it still has a fairly strong edge against most dynamic languages in terms of optimizing compilers. For some reason, outside of smalltalk/lisp, AOT compilation never caught on with dynamic languages, where you see either an interpreter or a JIT.
Python/Ruby do have dynamic redefinition and higher-order functions and a couple other nifty features, but most of the features I see on this page are still unique to Lisp.
- It supports modular design.
- It supports interactive development, debugging, and update.
These things are true of Ruby and Python in a way that they are not for C, C++, or to a lesser extent TCL.
After college, I didn't use any Lisps for a long time. I tried to get back to it. I tried installing common lisp. I remember the installation process being kind of insane. It felt like I was installing an operating system. The dev ergonomics were weird. I couldn't get it to click again like it did in college.
I messed with (fluxus) for a while. I LOVE live coding stuff, and it treating oGL as a first class standard library is so cool. It seemed like a single guy's passion project. It lacked some facilities that made it click as a daily driver. Also, installing it on my mac was a colossal pain in the ass due to pulse audio issues.
Not too long ago I installed racket. The installation process was painless, and I wrote enough with it that I started to feel that magic again... but then.. I .. wrote too much?
DrRacket was nice when I started, I like images appearing in the REPL. It quickly revealed itself to be hot steaming garbage. SCROLLING is so slow and flickery in a 225~ line source I wrote that it's beyond distracting.
I tried to play around with perlin noise, and generating an image of regular sizes required me to click this alert doubling Dr.Racket's ram allowance like 3 times. I'm sure that's my code's fault, but I'm probably not sticking with it long enough to find out..
I'll try again in a few years I guess.
I've been using Clojure for almost four years - switched three different jobs, never had a problem with finding a Clojure gig.
There are #jobs and #jobs-discuss channels on Clojurians Slack, watch those, some good job postings happen there.
Thanks for reminding me to consider it.
I'll look at it today.
Anyway, DrRacket is mainly an educational IDE, for students who've possibly never written a line of code before. You could see its defaulting to memory-limiting sandboxing as a good thing for intro programming students. (I usually use Emacs, though I do sometimes use DrRacket, for quick tasks, and when I want to use the Macro Stepper.)
I don't know whether the new-ish Jupyter kernel for Racket supports images, but that might be something to look at.
There are also several other good Scheme implementations/variants. Racket has been my favorite, but I'm moving back to building atop RnRS, as unpaid time permits.
lisp, clojure, python, php, ruby, javascript, prolog, smalltalk, basic, lua. I would say clojure & javascript lead the pack due to their support for concurrency.