I came across this post talking about numerical speed in Clojure, so I thought I would try out the equivalent in Common Lisp (Clozure CL) on my Macbook:
CL-USER> (let* ((arr-size 3000000)
(double-arr (make-array arr-size :element-type 'single-float)))
(dotimes (i arr-size)
(setf (aref double-arr i) (random 1.0)))
(time (loop for i from 0 below arr-size
summing (aref double-arr i))))
(LOOP FOR I FROM 0 BELOW ARR-SIZE SUMMING (AREF DOUBLE-ARR I))
took 45,649 microseconds (0.045649 seconds) to run.
During that period, and with 4 available CPU cores,
45,558 microseconds (0.045558 seconds) were spent in user mode
57 microseconds (0.000057 seconds) were spent in system mode
45 milliseconds, not bad.
What if you did the following:
- Take a chromebook
- Modify the chromium build running to run Sbcl within it.
- Create lisp bindings to the internal surface, so that all UI elements can be created and manipulated within the Lisp image.
- Allow downloading, compiling and running arbitrary lisp code
- One of the tabs is always a Repl
- Add a caching filesystem that would persist part or whole of the image
… might this create a modern-day Lisp machine? Maybe.
Did I miss anything obvious here? If not, this sounds doable in a few years.
I’m lazy, do you if you like this idea (I’m sure there’s a guaranteed niche market for these machines), go ahead and throw it on to Kickstarter. Or something.
Many good things, to be sure, but more has been omitted.
Perhaps Kent Pitman expressed it the best:
My only problem with this is that things are ALREADY sped up. What’s the point of running a zillion times faster than the machines of yesteryear, yet still not be willing to sacrifice a dime of it to anything other than doing the same kinds of boring computations that you did before? I want speedups not just to make my same old boring life faster, but to buy me the flexibility to do something I wasn’t willing to do at slower speeds.