Compass and Straight Edge

EuclideProgramming 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 within it’s framework.   I still my  delight when, at one point, they managed to get the compiler’s optimizer to the point where it spontaneously discovered assorted famous graph algorithms.

Other examples include:

  • SIMULA – using what we’d now call lightweight 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.

Some stand on an unusual computational model.   Rule based (truth maintenance?) systems like Unix make or Prolog.   The constraint based systems.  Lazy evaluation.

A very few are almost only about some syntactic or semantic gimmick; like forth, postscript, or Python.

Is that era is largely over?   The search space has been mined out?  I guess some 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.

DSC02333Which 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 traced existing instruments, 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 he got to wondering if the descriptions in the book might be converted into something more algorithmic.  He spun off 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.

Update: Cool, there is now a paper you can read.  I look forward to seeing your web servers.

6 thoughts on “Compass and Straight Edge

  1. arden henderson

    Just a typo feedback (not a comment post keeper):
    write in it’s framework
    one point in it’s history
    with it’s symbols, lists, etc. etc.
    with it’s arrays

    errors: it’s

    fix: its

    This sort of apostrophe error is easy to prevent with a quick search for all apostrophes before publishing and then a quick look and/or fix. Could be done with a pre-publish script, too. (Btw, not sure the contact-me recaptcha provides a working email.) Great article! Thanks!

  2. mtraven

    Don’t know that the entire space of spaces for languages is entirely played out; there is stuff around Hadoop/Big Data (Pig, Cascalog), probabilistic programming (Church)….to name only the ones that I wish I had more time to learn.

  3. Ben Hyde

    mtraven – your most likely right. Thought for some reason the current generation of these don’t feel the same; but that probably isn’t fair.

  4. Douglas Knight

    Surely you meant to link to the paper? Your new post probably should, too. You seem to mean this paper from just a few months after your post. Is there anything else in the ensuing years? Google news points to two articles in the Strad, one recent, and one in 2017.

Leave a Reply

Your email address will not be published. Required fields are marked *