Oh sure, there are serious differences under the hood, but to a casual observer glancing at someone’s screen while walking past a cubicle, they all look about the same. Python is the only real big shift, and its main contribution to syntax was getting rid of the curly brackets.
But just because there’s been a great convergence in the dominant languages doesn’t mean that everything is the same. Programmers love to experiment, and they continue to create new languages to solve problems. Many tackle small problems and scratch some personal itch. Some grow, but many sail along happily, running smoothly and doing exactly what they were meant to do.
These outliers may seem absurd at first glance. Why bother inventing an entirely new language? But if you’re asking that question, you’re missing the point. Programmers need to create, expand, and explore—and one of these languages might be just what the doctor ordered.
Morse Code: Not just for cyber criminals anymore
This one wasn’t developed with the best of intentions. Whoever built the Morse Code programming language was almost certainly out to steal your personal information and maybe even break into your bank account to take everything you’ve earned. But there’s something clever and steampunk-ish about a system that encodes instructions in dots and dashes.
Yes, those dots and dashes are eventually turned into regular characters for compilation. Yes, any regular substitution cipher would do the same thing. Yes, it’s not really a new language; it’s more a new character set at best.
But can any other language fill your mind with nostalgia for World War II submarine movies and the days well before the Civil War, when Samuel Morse stewed over the right message to demonstrate what could be done with the wire he had strung between Baltimore and Washington? Morse’s question: “What hath God wrought?”
Take the ScummVM adventure
Many classic adventure games were written in a domain-specific language optimized for game play that involves moving through a sequence of nodes with descriptions and occasional objects. Several languages were created over the years to support such games, and LucasFilms called its version Script Creation Utility for Maniac Mansion, or Scumm for short.
Anyone who wants to explore these realms, pick up their virtual objects, and solve the mysteries can still do it. ScummVM is a modern, GPL-protected, game-playing engine that will read Scumm files and take you back into those magical worlds. Some people are even writing new Scumm encounters.
Scumm is not the only adventure game language available, though. Gamefic is a Ruby-based framework under active development, and Adventure Game Studio is a Windows-based tool with a drag-and-drop editor for adding graphics and animated sprites. BBC Basic fans can turn to Adventure Language and JSBeeb to write and run games in a browser.
Shsql database: For command-line aficionados
Some users expect their databases to work with beautiful graphical interfaces that let you browse through the data with the greatest of ease. But the folks who created Shsql don’t need pretty pictures, cute clickable icons, or morphing layouts.
They like the command line, and they want to be able to create, update, or delete data from the shell. Shsql is Structured Query Language, but it’s integrated with the operating system and sits ready to store your data from the command-line interface.
‘F’ is not just for Fortran
In the 1960s, Fortran was the dominant language, with new features coming out all the time. People joked that they weren’t sure what programming would be like in the future, but they knew it would be called Fortran. They weren’t entirely wrong.
The F language gives Fortran lovers a way to use the data structures, scientific approach, and coding styles they’ve always loved. It’s backward-compatible with Fortran 77, so you can link to your old code, even if it’s stored as a dusty deck of punch cards.
Note: Don’t confuse F with F#, the functional language designed for the .NET world, where C# is also popular.
MUMPS is about more than medical records
The MUMPS language was born in the 1960s, when the hospital industrial complex first began to talk about electronic medical records. MUMPS stood for “Massachusetts General Hospital Utility Multi-Programming System.” That name stuck until 1992, when someone tried to compete with the newfangled C by giving it the single-letter name of M.
The developers were far ahead of the game because they understood the value of creating solid, ACID (atomic, consistent, independent, and durable) transaction support for tracking medical records.
Today, the M user group updates the buzzword by noting that M was one of the first to offer a “reliable schema-less” or “NoSQL” database system, conceptually similar to Amazon SimpleDB and Google BigTable, but with the advantage of a much longer, time-tested track record of success. It’s old but still ahead of its time.
Sweave: When you need two languages in one
Sweave isn’t just one language; it’s two mixed together in a portmanteau combination, like those cross-bred labradoodles and cockapoos.
A sweave file contains a mixture of R code for analyzing data and LaTeX code for presenting it. You can type human-readable text and then switch, with just a few escape characters, to writing software. The signal that starts a block of computer-readable R code is “<<>>=” and the end character is just the plain “at” sign (@).
The clever game is to start meta programming so the R code spits out LaTeX macros that are then executed to produce new R code. Sophisticated users may want to explore knitr, a cousin built to add more features, including the ability to mix in Rmarkdown. What’s that? A way to use the classic markdown format instead of LaTeX typesetting code. Its start tag is a triple backquote. Somehow at the end, the result is a PDF that’s often pretty readable.
Coq: When you need to play by the rules
The more theoretical software developers like to say that a program is a mathematical proof and a good mathematical proof is also a program. Coq is a language for mathematicians to write out a strictly logical proof, but it’s also not much different from software development.
The language lets you specify definitions and then knit them together into algorithms and theorems. The compiler’s job is not to turn your proof into an executable, but to check to make sure it obeys all of the rules.
Mathematicians can use the language to ensure their proofs are solid. Programmers who need to implement algorithms that are even slightly mathematically complicated can prove out their approach to ensure that it’s trustworthy.
Create a new language with Racket
When CFOs are asked to pay the bills run up by their CIOs, they may mutter under their breath about the “software development racket.” This is probably not the genesis of the name of meta programming language Racket, but it sure makes for a fable to warm the hearts of the cynics. Racket is a newer version of the superflexible LISP language, and one of its main purposes is to create new languages.
A cynic may see a parallel in the way that tax collectors send out tax bills to fund the training of new tax collectors. There’s more to it, though. The language is optimized for building the parsers, tokenizers, and output generators needed to create specialized languages.
Some people even use the term “domain-specific languages” to refer to languages built to solve particular, narrow jobs. There’s brag, a language for building a particular kind of parser. Anatomy helps specify the connections of skeletons. (Real skeletons made of bones, not the metaphorical skeleton code.)
And then there’s bookcover, a language for anyone publishing a book in need of a logically structured cover.
Matthew Butterick, the author of the manual “Beautiful Racket: An introduction to language-oriented programming using Racket,” created a text-based language called Pollen for gathering together the macros and typesetting commands that organize the book. A bold, new language for building a book about building bold, new languages.
It’s all very meta.