I would like to mention Inform7, an IDE for developing interactive fiction (aka “text adventures”) in natural language programming (i.e. in plain English).
Natural language programming is not often mentioned in DSL discussions, which is rather a pity because it’s a fascinating field. From what I gather, there haven’t been all that many natural language programming tools created either.
Obviously, text adventures lends themselves naturally to the adoption of this kind programming, since the author intends to create a textual world using language. Inform7 (aka i7) has been around for many years (15 or more, I can’t even remember) and although it’s still WIP thousands of adventures have been created with it, in many languages (not only English, but always programmed in “English”).
Due to my appreciation of the genre (which dates back to the 80’s) I’ve used Inform7 myself quite extensively, and I was really impressed by the way the “illusion” of being programming in plain English is delivered.
To offer some very brief examples of the level of quality that i7 has achieved, you only need to look at the various examples found in its Recipe Book. The language is quite flexible at picking up semantic variation of common constructs, allowing end users to build their world in a very spontaneous way.
This is an i7 source code example taken from Writing with Inform, the i7 learning manual:
"Cave Entrance"
The Cobble Crawl is a room. "You are crawling over cobbles in a low passage.
There is a dim light at the east end of the passage."
A wicker cage is here. "There is a small wicker cage discarded nearby."
The Debris Room is west of the Crawl. "You are in a debris room filled with
stuff washed in from the surface. A low wide passage with cobbles becomes
plugged with mud and debris here, but an awkward canyon leads upward and west.
A note on the wall says, 'Magic word XYZZY'."
The black rod is here. "A three foot black rod with a rusty star on one end lies
nearby."
Above the Debris Room is the Sloping E/W Canyon. West of the Canyon is the
Orange River Chamber.
You can easily spot how signifiers like here
are correctly contextualized, and how west of the Crawl
is correctly understood as a spatial reference to The Cobble Crawl
room previously created.
Text adventures used be the exclusive domain of programmers, until i7 arrived and introduced Natural Language Programming, thus opening the doors to non-programmers authors. I see this as a great DSL achievement, especially since literature and prose should be the domain of writers, not programmers.
Ultimately, Inform7 is just an overlay build on top of Inform (aka Inform 6), which was one of the first “second generation” text-adventure programming languages — and indeed Inform 6 code is what ultimately i7 will produce and compile.
Having used this tool myself I can clearly see the benefits of moving toward natural language based DSLs, and I think that i7 might be the best available example in this field (the language is very powerful and feature rich, allowing to define verbs with multiple objects, kinds, proprieties and relationships).
Inform7 is an open source tool, but the full source code hasn’t been yet published. The first official release, with full source disclosure, was due in December 2019, but then Catalina OS stopped supporting 32-bit application (as well as Apple Store) which forced i7 developers to provide patches to allow macOS users to keep using the product. Then the COVID-19 emergency started, and for some reason or another the project hasn’t been updated since.
Here you might find some presentation material from two recent talks by Inform7’s creator, Graham Nelson, were he also speaks about the challenges of Natural Language Programming and parsing:
- Opening Inform — Narrascope 2019 talk
- Assessing Inform — London 2018 talk
I would love to see Natural Language Programming mentioned more often when speaking of DSLs, and I think it has a great potential in the field of providing human-accessible interfaces to software and technologies.