"The Many Faces of an Undying Programming Language"
@technomancy Haha, I knew someone would mention that. I wasn't technically apt enough at that age to have learned the typical CUA-style keyboard shortcuts, so learning it didn't feel foreign or unnatural in the way that it might for an experienced programmer being introduced to Emacs. I was mostly writing HTML by hand at the time, and I remember being able to use the menu bar to insert tags. It was a nice experience.
I should find my old laptop and see if I can pull the config off of it.
> I suspect the reason luajit is running so slowly for you is that the JIT hasn't had time to warm up and perform optimization traces. does the performance improve if you run (say) thousands of passes instead of just one?
I actually thought the luajit performance was quite good. I wanted to avoid rigor here because I'm a bit of a statistics noob, but I'll do a run where I try to get to i.i.d iterations. I should probably do something similar for Racket, which is also JITed.
@technomancy For sure. I've done a bit of reading on statistically-sound benchmarking, since we do some comparisons of sequence alignment algorithms in my lab, but I still defer to my statistician friends for help with the design and interpretation. I thought the most appropriate thing to do was to just wave hands and give the disclaimer that it is complete hand-waving.
Benchmark is still running at the moment. Ten iterations since I've started.
@technomancy One difference between that success story and mine is that I haven't done much to optimize my raytracer. In all implementations, it's a rather naïve translation of the underlying equations.
@jakob @technomancy I thought so as well, but nope. There are glaring deficiencies in cl-lib/eieio that make this surprisingly hard:
- with-slots is incompatible with cl-defstruct and expects cl-defclass.
- cl-defclass can be made to create functions like cl-defstruct, but fails when using cl-defmethod because it for some reason creates predicates and clashes with what cl-defclass generated.
- with-slots can be made to work with cl-defstruct, but my macrology is more of a sham than shim and fails with even wilder errors than with the previous approach.
I'm pondering to instead rewrite this in a more idiomatic way without option types, but that would require actually understanding the code. Maybe another time.
"I appreciate SDF but it's a general-purpose server and the name doesn't make it obvious that it's about art." - Eugen Rochko