Revisiting I7 (& T3) – An Unfair Comparison

I had a nice long post, then accidentally deleted it before saving it, so this will not be as good as the original.

I’ve decided to give up on I7. Oh, yeah, you say. “I thought you decided to give up on T3?” Well, <blush>, yes. I’ve been back and forth, up and down, and all over the town. The thing is, for me, both have a steep learning curve, and before I actually set out to learn rather than just read, I want to be sure which to tackle. Learning will mean actual coding and that takes time. Sometimes a LOT of time.

A WIP I am dusting off and working on requires complex scoping. Scoping meaning having objects in scope for the player character. What I want is an area, several rooms, where the player can see and hear things going on all over the area, but not take, touch, and smell them. Let’s just say for the purposes of this story I need that area to be several rooms, not one.

My WIP is originally written in I6, which I could proceed forward with, or not. Since I don’t have much written yet I could also rewrite it in T2. Or I could rewrite it in I7 or T3. This is partly why I have been bouncing all over the place, whatever will scope the best for me will probably be what I go with. So it’s all open, it could be either old or new Inform or TADs. OTOH, both T3 and I7, for me, have steep learning curves. So stay with the old, or go with the new? I know difficult scoping in I6 is hard and hacky (I know I6 pretty darn well). Not sure about T2, it may not be a lot better (I only know the basics of T2). Or maybe I this is an opportunity to pursue a newer system.

Going with that idea I asked both Emily and Eric how I would code this in I7 and T3 respectively.

It turns out that there is a complex scoping example similar to what I want already in the I7 manual. Emily pointed me to it, Stately Gardens:

Now, I know I did not prepare myself by reading the manual up to that point, and I know I barely know I7, but when I saw that my brain said quite clearly… 

{  give(me, clean simple code) = that I can read
        + please, please, please!!! } and a lot SHORTER than I7 too;

Because I like my brain (I’d have a hard time getting along without it), I stopped and listened. Okay, brain, I7 is out.

But, let’s face it, I7 was not designed for programmers. That was not its intent – it was designed for non-programmers.  I really admire, and I mean really, that Graham, with Emily’s help, have designed a system that non-programmers can use.  This was something people had asked (and begged) for in raif for years. Writers would eagerly come and discouragedly go, wanting to write games but being unable to code. However, practically everyone thought it could-not-be-done.

It is a master stroke that Graham has apparently accomplished the impossible.

So for non-programmers (and programmers alike)  I7 is brief and easy for the easy stuff, for the short stuff, like laying out a game map, room descriptions, and bare-boned NPCs. If I have sounded bitter (actually I know I have sounded bitter, or disappointed anyway), I must admit that it has stemmed from envy. The idea of laying out a game map with the basics, of fleshing out a game so quickly and easily, appeals greatly. But because of my dyslexia, writing the more complex and longer sentences would be very difficult, as I tend to get phrases in the wrong places. Or get them in places the I7 compiler does not like. Also because words can overwhelm me, I cannot always see the logic underlying them. So I have had to be in the envious corner.

But, still, is it really brief and easy? I7 sentences are really macros that invoke more complex coding under the surface, in the VM. So by forcing programming into a NL interface it makes it so that complicated things in I7 just about have to be wordy. Because in simple declarative English it takes a lot of sentences to say complicated things. Without real conjunctive phrases, abbreviations, and programming conventions like brackets, punctuation, and other things, there is really no way to be brief in such English for complicated things.

Recently, answering Dave C.’s poll on raif, someone said that unfortunately I7 reminded them of unpleasant COBOL, and I knew exactly what he meant. (I had to learn COBOL way back when in college for a CS major.) Wordy, wordy  – COBOL takes a lot of words to say something simple, because everything but everything must be spelled out exactly. It gets very tedious. It gets tedious quickly.

Here is Eric’s response:

DistanceConnector [room1, room2, room3, room4, room5, room6];

It may need a little tweaking, but that is essentially it. Brief, brief, brief. It is with type of thing, frankly, that programming has it all over English and always will. Now, of course, this probably won’t work for non-programmers, not when they have to understand even more code, essentially understand programming, to be able to understand that statement. So it’s not really fair to compare I7 to T3, the design intents are quite different. But for programmers, what a relief!

So, for me, I7 is now out. T3 is back in. Now we shall see about that steep learning curve and if there is any way to lower it down a bit.

I7, on the other hand, has done something radical, something new – it has busted open the rather exclusive IF world composed of programmers and writer/programmers to a larger group, that of just writers. This is exciting as well as challenging. Whether it will work, that non-programming writers can learn to write IF and learn to love writing IF, I think has yet to be proven. But based on the last yearly comp it already seems to be happening.

Hats off to Graham and Emily! It’s a brave new world.

P.S. I will eventually be reading all of the I7 manual and making more comments in the future. I still think the manual would benefit from some diagrams explaining the syntax logic, like it is explained in the BNF, but simpler so a normal person can read it,  and with keyword highlighting.


0 Responses to “Revisiting I7 (& T3) – An Unfair Comparison”

  1. Leave a Comment

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: