Inform system developers, do you approve the Plain English Programming?

Hello!

Inform system developers, the your opinion on Plain English Programming is very important because you are interested in natural-language programming or human-language-level programming.

The Gerry Rzeppa is the co-creator of the Plain English programming language and the Grand Negus of the Osmosian Order of Plain English Programmers.

Inform system developers,

Do you approve the Plain English Programming?

If not, why you does not approve the Plain English Programming?

I realize it is a lot to ask, but if you could take a few minutes to skim this short, illustrated article…

…and then answer (off the top of your head) the questions above, I would be grateful.

Thanks!

1 Like

I am by no means an Inform System developer. However, I find this website and concept interesting.

Can you share who is behind this organization that is mentioned in the site?

Thank you,
v/r
Jeff

1 Like

@fos1,

Who is behing this organization that is mentioned in the site is Gerry Rzeppa.

The Gerry Rzeppa’s email is gerry.rzeppa@pobox.com and the Gerry Rzeppa’s blog is https://osmosianplainenglishprogramming.blog/

Are you the Gerry Rzeppa?

1 Like

@vaporware,

I am not Gerry Rzeppa!

This does seem a lot like Inform 7. I really believe in the importance of human readable code and this code is highly readable. However, it really isn’t the coding that trips up most people; it’s the analysis.

Figuring out how to structure your code is much harder than converting that structure to an arcane syntax. Getting to the pseudo-code is the hard part. It requires conjuring a mental model with many moving parts. This is extremely taxing to working memory and most people don’t have a taste/tolerance for it.

One of the reasons that I think Twine is so successful is that it visualizes the program’s (story’s) structure for you so that you can offload that from working memory.

1 Like

I can say as a professional programmer that the plain English programming of Inform is what turned me off to it completely. It was just so inefficient to do anything in Inform compared to what I could do in code, that it almost hurt to type in the various exercises from the tutorial.

This looks cool! I remember that Gerry posted here several years ago about Plain English, with some idea for an IF project that he was looking for a collaborator for. He didn’t have any luck finding a collaborator here–the project was awfully ambitious for someone who wasn’t already committed to to jump into blind–but Plain English sounded very interesting and I’m glad to see that project is moving along.

One thing I noticed about it is that it uses “the x” to refer back to something that was created before–as in

To append an x coord and a y coord to a polygon:
Create a vertex given the x and the y.
Append the vertex to the polygon’s vertices.

This is something that often gets people in Inform–they want to write "After opening a door: say “You open [the door].”, which won’t work because “the door” doesn’t refer back to the door that’s being opened. You either have to say “the noun” or give the door a temporary name in the rule header as in “After opening a door (called the portal):”.

So that’s nice if they can get it to work. I wonder how it works in more complicated things with two names–like, “To merge a list with another list,” do you wind up referring to “the first list” and “the second list”?

Also it seems like it’s doing graphic programming rather than IF which is fine!

The download is still Windows only though I do have a Windows not-emulator…I’m probably not going to play around with it right now because of lack of time, but it does seem interesting from the natural language programming perspective.

1 Like

It was just so inefficient to do anything in Inform compared to what I could do in code, that it almost hurt to type in the various exercises from the tutorial.

How do you feel about playing parser games?

I should maybe be clear that I was not turned off to Inform games. I was turned off to writing games in Inform, which is very different.

I enjoy both styles of Interactive Fiction.

I also understand that coding is hard for a lot of people. If this plain English approach works for someone, then great. I just don’t think those who are already fluent in writing code will gravitate to it.

I think the subtext there was that you might have said:

It was just so inefficient to do anything in text adventures compared to what I could do in dungeon crawlers(?), that it almost hurt to type in the commands.

…unless I misunderstood.

For the record, I mostly agree with your feelings on Inform, but maybe not for the same reasons. I’m skeptical about English language programming for most tasks. Maybe it’s good for young students with no programming experience, but then again maybe it’s like how we all learned BASIC on C64 back in the day, because it was easy, and subsequently needed to un-learn all those habits.

I guess this sounds hypocritical coming from someone working on a sort of natural language-like programming language, but in the case of IF, natural language does somehow seem appropriate.

The thing about Inform, to me, is it kinda feels shoehorned. You still need to learn special constructions and do most of the things you’d do in any other language, and I feel like that might be more clearly represented in a standard-issue language. No offense to any Inform fans, it is pretty amazing that it works, but somehow doesn’t feel “natural.”

I’ve tried to go in a different direction here, where “the words don’t matter” and there is less than a handful of constructions. Sentences are basically pure data, and the whole thing can be thought of as a triplestore, with the words on the ends representing two “nodes” with some kind of relationship, and the word in the middle being an “edge” representing the kind of relationship… except that it is actually a tuplestore, so each datapoint is more flexible and can represent whatever you want (weighted edges, multiple relationships at once, etc.)

To give an example from another recent post here, in Inform:

After going south from sandy beach when the red crab is not carried by the player:
    move the red crab to shallows.

This is sorta magical-feeling to me; we need to know about how Inform breaks down the sentence in our “query.” In the thing I’m working on, you might write something like this:

player wants to move south, player is in beach? crab is in beach?
	player tries to move south.
	crab wants to move north.

The difference here being, each part of the “query” directly reflects an existing datapoint, and each part of the result directly represents a datapoint that’s checked for by some engine-level query. There’s no guessing or prior knowledge required about how a compound sentence is interpreted.

/OT

1 Like

As long as we are going off topic :slight_smile:

My general observation of IF is that the games conform very hard to the tool set in which they are written. Inform games really look like Inform games. Twine games really look like Twine games.

It’s pretty rare in visual gaming to have the whole user base look at the game play and go, ‘Oh that’s clearly a CryEngine game not an Unreal game.’ It seems like a pervasive problem in the genre right now.

Since I have the existing ability set to make games using different tools, I’m trying to do that while still trying to stick to the spirit of IF. I did that in the last IFComp and will do so again at the upcoming one.

I believe the difference here is the difference between a “choice” based system like Twine and parser based games like Inform, TADS, or the new Dialog.

It would be difficult to differentiate between games written with of the three parser based games just by playing the games but easy to tell the difference between a parser based game and a Twine game.

Jeff

Not as hard as one might think. Testing a few of the default verbs will usually tell you which system the game was built in: most Inform games will show Graham Nelson’s default response to one or more of “kiss me”, “eat me”, or “burn me”, for example.

Are these verbs, 'kiss, eat, burn" taken from the story line or just as a test on their own to determine which authoring system is in use?

In this manner, one would have to be very familiar with the various authoring systems to determine which was in use in this way.

v/r
Jeff

A rhyming sequence of commands with distinct default responses in both ZILF and Inform 7:

hit me
take me
burn me
wake me

Yes, what I meant was that if you even play parser games, you’re accustomed to writing in English-like syntax already; I never saw anyone complaining that they have to write “put fish in box” instead of fish->(box) or whatever.

Less facetiously: I7 is code. The syntax is well matched to the style of project I7 is for - “The fish is in the box” is both a well formed I7 term and a natural way to express the end result. The limiting factor to how efficiently you can code isn’t typing, it’s thinking, and the design of I7 makes it possible to “think in I7” in a way that you can’t with most languages.

I think there is an element of gatekeeping in implying that Real Programmers are going to be naturally put off. It’s also manifestly false; many brilliant I7 authors are professional programmers in other languages.

4 Likes

For a different view—as a programmer, I’ve found that I7 code is easier to read than any other language I’ve worked with, even if it’s not necessarily easier to write.

To me, the goal of imitating natural English isn’t to make writing Inform any easier (since, as has been pointed out, you still have to remember specific syntaxes and such), but to make reading it easier, when you come back to your project three years later and need to rediscover how everything works. Even as a longtime programmer, I’m much, much faster at skimming a page of English text and grasping its general meaning than a page of C++.

3 Likes

Yes, exactly this. Code that is easy to read is easy to maintain. It’s more important than efficiency of keystrokes during coding because most of that coding time is spent stare at the screen trying to figure out what you want to do next, not typing.

I also believe that non-linear narratives deserve non-linear tools. Really, something like Trizbort should be part of the Inform7 IDE and not just for geography, but for mapping all relationships.

1 Like

This is a huge advantage; most anyone who doesn’t know Inform 7 can probably make relative sense of the code and figure out what it’s doing. One of the best ways to learn I7 is to study the source text of a well-made game. Ryan Veeder and Emily Short both have published source texts for this very purpose, and Aaron Reed annotated an entire game he created in book form as instruction.

Also, I7 code can actually be entertaining to read, especially if it’s commented well. If the complete Cragne Manor source ever comes out, it’s probably going to be the War and Peace of Inform source texts.