(via awelonblue)

"Plain English Programming" care of the Osmosian order.

We intend to supplant, in turn, the programming languages, operating systems, and hardware configurations currently in widespread use. Our initial goal is to see Plain English (and other natural-language variants). ... We offer our Plain English compiler as both "proof of concept" and a first step in the right direction. Our integrated development environment includes an elegant desktop interface, a simplified file manager, an efficient text editor, the compiler, and the page-layout routines used to produce all of our documentation, the illustrations for our web site, and this manifesto. It should be noted that all this functionality is embodied in a single, stand-alone, native-code executable less than one megabyte in size. The program runs on the Wintel Kluge, was written entirely in Plain English, and re-compiles itself in less than three seconds.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

There manifesto uses a

There manifesto uses a horrible font, not quite comic sans, but close enough. Scary.

The only sample code they provide is in a zip. Its pretty algorithmic, which I don't think plain English is very suited for (too verbose, reminds me of COBOL). I would expect real natural language programming to involve conversations where you state your requirements to the computer and the computer asks for clarifications where needed.


yes, the font is an indictment of the whole venture (seriously, i'm a font bigot). but anyway their approach was interesting in that they are using a constrained english.

i think their approach is nice for reading, but i wonder how hard it would be to write. when i try to use any of the inform languages, i find that i don't like them. i don't understand how the system will interpret what i write, and i don't know how to phrase things the right way.

I would need some convincing

It certainly seems like there would be quite a learning curve before you knew what the compiler would accept, as there is in existing languages. I'm not at all sure that making the superficial concrete syntax more similar to "plain English" is a recipe for ease of understanding.

When you start to learn this language will you need to wonder why on Earth you can't get ye flask! Because the [compiler]'s certainly not going to tell you?

Maybe they have a compelling answer to this, but I looked at the example pretty carefully.

yet there's something in there somewhere

there was AML from MSR, i think, that was a more english-y syntax than C#. it was very similar but had more little grammatical things in there like "Array of Int" instead of "Int[]" or some such. i can't blankety-blank well find anything about it now, only Spec# which is related but different i think.

i really liked the AML style! it was great to read! i suck at learning math notations for example, i'm a slow learner when it comes to learning a new notation or anything. so even the little change of using just a teeny bit more english was really nice, i personally subjectively found.

i think it was conservative enough that i wouldn't have too much problem writing it, either, as opposed to Inform or Osmosian.

that was a more english-y syntax

It's half-baked, but maybe you'd like this.

F3 is back? Nice! We should

F3 is back? Nice! We should form a club for PL designers working on high-level reactive programming languages.


Inform has similar approach but a much more limited intent.

You can't program in English

You can't program in plain English; it's too vague. Computer languages have to be unambiguous. English isn't.

¿did you read the source material?

they are using a constrained English :-) yes i shoulda been more clear about that :-(

Plain English programming

I was thinking about how to support plain English programming. I think the right semantics would be a recursive temporal logic formula, containing variables. Then the following things can be supported:
* Verbs - these translate directly to logic formulas.
* Adverbs - refer to variables in the logic formula of the verb they modify, hanging additional logic formulas off the variables.
* Nouns - reify the river from the drops of water: we refer to elements of the logic formulas that are localized in some way, for example writing to the same part of the screen. When we declare a noun, we ask for verbs that fit the bill with respect to the logic formula. The given logic formula would be repeated over and over in variations to create an ongoing object. But we would start with a noun as a collection of attributes.
* Adjectives - modify the attributes of a given noun, or act as adverbs on the verbs generated by the reification of the noun. E.g. "the red (adjective) ball (noun)" is also "the ongoing presentation of a ball shape (verb) which reflects red light (adverb)."