I'm feeling pretty vindicated on behalf of my fourteen-year-old self. Back in 1997, I was nerdy kid who loved computer games, programming, etc. To me the pinnacle of programming was to be a game programmer. I read books like The Black Art of 3D Game Programming and hung out on newsgroups like rec.games.programmer.1 One day I came across a post entitled "The BEST Programming Language ." It posed the question:

Did you ever get sick and tired of all [...] the unneeded jargon and constant repetitous code refering to the same commands? I hate all of that crap. Tell me. As a question for discussion. What is the easiest AND most versitile programming language out there. We are talking easy as in your 10 year old kid could be developing the next operating system with and versitile in the sense that it could produce ANYTHING.

Since this was the age of real programmers who don't eat quiche, the responses predictably included things like:

HAHAHAHAHAHAHAHA!!

making games in perl :) perl is not versatile enough. Use Borland C++ Builder, no low level crap, direct x support, C++ for kick ass stuff, its not Microsoft! :) If you want to make an OS you best be learning some hardcore C/C++ w/ Assembler.2

Or:

I find that whistling Z-80 opcodes directly into a modem works best, though I will concede that under some exceptional circumstances (complex stock market trading applications, air traffic control systems, etc) very high level languages like Tandy TRS-80 Model I Basic have found a niche market.3

Real programmers who thought assembly was a high level language.

I waded in with my own thoughts :

My vote (please don't laugh to hard4) would be a human language. I am going to say English because that's what I know best, but realistically the first human language to be programmed in would be something much easier to learn. Of course, before this is ever taken seriously they would have to get some very good compilers that can make this really really high level stuff run fast enough. If they could get some decent speed it would be the best all around language. You could develop almost any program in a matter of hours and have few bugs, easily understand it, and the only requirement to use it is you have to know how to write and be able to figure out a keyboard. Imagine writing a simple mario (the old 8bit nintendo one) like game in it:

(The lower level stuff like opening and reading files would have to be done in soemthing lower lever) The program would look something like this:

First, load up all of the files we need. Then, draw the world up on the screen. After that's done, draw the character. Put all the bad guys where they go. When the player presses an arrow key, move the character in the respective direction...

The program goes on. Very Simple. Of course, their would be a lot more to it.

I think the best language for now depends on the task you want. If your doing something without much of a need for speed that is pretty much a dialog based program, I would use Visual Basic. For lower level stuff, like games, network stuff, etc. I would use C++, and a little bit of assembly thrown in.

I've been thinking about this post a lot lately because I also find myself frequently saying "I program in English now." At the time, most people responded pretty dismissively, but looking back from nearly three decades in the future I find a lot of the responses rather interesting. A common theme was that natural languages are just too imprecise to specify a program.

Programming cannot be done in English. Languages meant for human to human communication have far too much ambiguity and require far too much assumption and prior knowledge that it is impractical to define programs with them. When working out algorithms, I often have to write in pseudo code rather than English, because the algorithm can be described much more simply and straightforward in pseudo code than in English.5

One of the things I like about this response is the idea that English is useful for communicating the ideas behind a program or algorithm, but that you need something more precise to encode those ideas for a machine. In a way, this kind of mirrors the way I prompt with LLMs now, where I explain the idea in English but then after the LLM does the first pass at implementation we spend a lot of time pouring over the details of the code.

Or then there's this:

As you built up a library of objects written in 'English++', you'd then find it progressively easier to create more and more complex programs, but you'll still end up with something looking like a lawyer's wet dream.6

Even as we "program in English" nowadays, it's not quite programming in the same way that programming in C++ is. When using a programming language, the lines of code generally all correspond to operations the machine will do. Human languages are an impractical way to describe with this much exactitude. But something I find interesting is pulling in the earlier quote about assumption and prior knowledge. One thing we didn't see coming in that thread is that the "English++ Compilers" of the future would also include the assumptions and prior knowledge needed to process natural language well.

Then of course there were the timelines. People seemed to think programming in English would be possible someday, but timelines varied.

Ok, when the guy was talking about the English language, he was speaking idealistically, he did not mean actually do it. One day like 500 years from now after progressing to like C++++++++++++ we will have super ass star trek computers that can interpret what we say and remove ambiguity by asking the programmer. However we could also have nural links straight to the computer.......7

Such naivete.

I'll admit that in a few (dozen) years, games are likely to be customisable using natural languages, but the actual development is very unlikely to be

  • natural languages are too verbose and imprecise to be of any use.8

Given that we're two dozen in the future now, that timeline didn't seem too far off. And people are actually working on neural computer interfaces now...

Anyway, just how well did my English program from 1997 work out? It occurred to me that my original post was almost a prompt. I extracted some quotes and sent it off as a prompt to Fable:

We're making a simple mario (the old 8bit nintendo one) like game.

First, load up all of the files we need. Then, draw the world up on the screen. After that's done, draw the character. Put all the bad guys where they go. When the player presses an arrow key, move the character in the respective direction...

The program goes on. Very Simple. Of course, their would be a lot more to it.

I was tempted to say more but the more I add the less this is truly a prompt from 1997. Other than the first "We're making," this is entirely quotes from that post. In retrospect, I probably could have left that out. At the time, I probably didn't imagine literally telling the compiler "we're making a simple mario like game" but I figured it was fair because my program was also clearly an excerpt and not the whole thing.

The result:

Screen shot of Super Plumber Bros by Claude

You can play it yourself here . Clearly the model took my "mario-like" instructions a bit too literally. The game definitely has some bugs (jumping is pretty hit and miss), but overall I'm impressed what an under-specified, vague prompt leads to.


1

For my younger readers, newsgroups on USENET were sort of like last century's version of Reddit.

4

Narrator: They did.