Schemescape

Development log of a life-long coder

One quarter of the way to 100 programming languages

I'm 25% of the way to having written code in 100 different programming languages.

See this repository for proof.

Week 3 (plus a day)

As planned, I slowed down from last week, but I still managed to make it to the 25% mark. That's 25 languages down, and 75 to go! Now that I'm no longer rushing, I'm enjoying the process of playing with new languages more.

All languages were new to me for this week. Notably, I didn't even realize that PostScript was a programming language at all! Turns out it's a Forth-like (stack-based) procedural language. I still feel like I'm struggling with stack-based languages, but it might just be a matter of perspective--compared to straight assembly, Forths are a joy to use!

The rest of this post contains notes on the languages I used.

BBC BASIC

I've never seen or used a BBC Micro (the closest I've used is a Commodore 64), but it's famous enough that I wanted to give one an (emulated) spin.

Unison

Unison stores and references code in a content-addressed syntax tree format, allowing for things like accurate incremental builds. It appears to be designed for distributed systems, so I'm not in the target audience, but it sounded interesting enough that I've always wanted to try it.

Lil

Lil is a bespoke scripting language for Decker (a Mac Classic-esque multimedia tool). Despite being a single header of around 1300 lines of (dense) C code, Lil packs an impressive array of features: immutable data structures, vector programming, and a built-in query language.

PostScript

PostScript isn't just a document format, it's a programming language! Who knew? Open my solution in a document viewer and see for yourself! (Just tried it in GIMP and it works!)

I can't imagine such a security minefield of a format being created today. It's basically a quilt made out of red flags. PDF has had enough exploits and it's (supposedly) declarative! I will probably never open a PostScript file from the web again (though I promise I'm too inept at stack-based languages to have created a virus).

Regardless, here are my notes about the language:

fe

fe is a minimal Lisp that uses a fixed block of memory (no dynamic allocations). It is not to be confused with Fe, whose web site mentions smart contracts.

Given that fe is less than 900 lines of readable C, it's an impressively ergonomic language.