Programming languages often have a juicy core of one kind or another. Back in the 60s and 70s we had a lovely assortment of languages each of which took some particular idea to heart and then ran as far was they could with that idea. SETL – using sets – is a good example. It was a lot of fun to write in it’s framework, and I can recall with great delight one point in it’s history when they managed to get the compiler’s optimizer to the point were it spontaneously discovered assorted famous graph algorithms.
Other examples include:
- SIMULA – using what what we’d now call light weight threads.
- SNOBOL – centered around pattern matching which informed a whole tangle of other languages like SL5, and Prolog, and such.
- LISP – with its symbols, lists, etc. etc.
- APL – with its arrays
- etc. etc.
There others that stand atop a big data structure; SQL, Emacs, and Autocad.
And, there are a few that stand on an unusual computational model, like Prolog, and the search/pattern matching languages (including expert systems), and the constraint based systems.
A very few are almost only about some syntaxtic or semantic gimic; like forth, postscript, or Python.
That era is largely over, that search space has been mined out. I guess some of the work on genetic programming or machine learning are the modern decedents of this style of language design.
All these languages have a kind of inward looking quality to them. They don’t really care much about their users. If there are applications, well that’s nice. Their enthusiasm is rooted in their the juicy (often somewhat eccentric) center, not the tedium of actually putting them to use. To a greater or lesser degree you can make that critique about all programming languages.
Which brings me to a last night. Harry Mairson gave a nice little talk to the Boston Lisp meeting about a spin off of his hobby – which is making string instruments.
Apparently we don’t actually have a good handle on how our ancestors designed and built their instruments. Insta-theories might include that they trace older, or maybe they had templates they handed down, etc. etc.
One recent theory is that they had recipes that guided the making of patterns using only compass and straight edge. There is a book that makes this case. “Functional Geometry and the Traité de Lutherie.”
When Harry found and read this book is got to wondering if the descriptions in the book might be converted into something more algorithmic. So after a while he spun of a little language where the juicy core was a compass and straight edge. … time passes … and now he can write programs that almost sketch out the designs for cellos and such. It was an awesome, eccentric, fun talk.
It’s notable that he did this backward. He started from the application and ended up with a cute new language based on a curious juicy center.
I found myself wondering. To what extent the design languages used by craftsmen in the middle ages rested on the compass and straightedge. Architecture? Furniture? Music? Here’s graphic I found showing a bit of (presumably modern) font design.
His work is not yet published, so all of you who are suddenly tempted to write a web server using only a compass and straight edge are best advised to wait until it is.