50 Comments
Feb 15Liked by Gary Marcus

These articles/statements about programming a computer using English versus a formal programming language all start from the assumption that English is a superior tool. I think that's because we (English speakers) are all really familiar with it because we've been using it for our entire lives! But if you spend any amount of time thinking about it - English is a terrible language! We humans are terrible at communicating with each other and we think a computer is somehow gonna be better? How many times have you said or heard someone say, "...you just don't understand what I'm saying?" That's an English language "programming bug" between two native English speaking computers and it happens ALL THE TIME!

Expand full comment
Feb 15Liked by Gary Marcus

Reminds me of the ol' DWIM (Do What I Mean) instruction and, augmenting the GoTo, we have the very helpful ComeFrom. Not exactly English but close enough....

Expand full comment
Feb 15·edited Feb 17Liked by Gary Marcus

Two things:

1. This is exactly the point. The inherent randomness of GenAI is new to IT. I told people in a meeting today: "the newness is that IT always wax essentially explainable and predictable, even big data analytics. But GenAI's essence is that it is essentially unexplainable and unpredictable. This will be something that will be hard for people, as they will tend to assume the old.

2. Dixit Perlis: “When someone says, “I want a programming language in which I need only say what I want done,” give him a lollipop.” (repaired after Scott's helpful correction below)

Expand full comment
Feb 15Liked by Gary Marcus

I think about LLM (especially coding via LLM) as writing down your request, sliding it under a door, and getting a paper or book (or program) back. You have to work to verify that the output meets your expectations, you have no idea how it produced that output, and the same request slipped underneath might result in a partially or entirely different result.

(We had a similar fad in the late 90s/early 00s about code generation. You'd do some light work in a DML, run a code generator that had a template to turn that DML into a _slew_ of code. The difference then was that it was deterministic and you could read the template or the code generator. This is so much worse in nearly every respect.)

Expand full comment
Feb 15Liked by Gary Marcus

It took too long for this article to get to the point I was thinking as soon as I started reading: natural language is, by nature, way too imprecise for serious work. Code written in English will inevitably make unwarranted assumptions, based on statistical likelihood, that are difficult to de-program. Getting the code to do exactly what I want will be like if my spell check repeatedly corrected the spelling of my last name from “Cooke” to “cook,” without my being able to go back and override it.

Expand full comment

Can't resist: D. Knuth. "Literate programming is a methodology that combines a programming language with a documentation language, thereby making programs more robust, more portable, more easily maintained, and arguably more fun to write than programs that are written only in a high-level language. The main idea is to treat a program as a piece of literature, addressed to human beings rather than to a computer." (I know, not quite the same as dictating your code in English, but I would bank more on this approach in view of the current state of the art).

Expand full comment

I recently had a discussion (argument?) with someone on Reddit about the false promise of programming in English. They were claiming that LLMs would revolutionize this. As you say here, the problem isn't translating the English to code. Sure, perhaps LLMs can help with that. The real problem is that people can't describe useful, non-trivial programs in English. That's not going to change any time soon as it's a human limitation. To do it properly requires a conversation that contains many exchanges like this one: Human: "... and then I want the program to print the list." Programmer: "What if the list is a million pages long?" Human: "Well, then I wouldn't want it printed out but saved as a text file."

What we really need is an AGI that can take the human's original problem description and ask questions about it, and fold what it learns into an eventual solution. This is what a software analyst does and the good ones get paid big bucks to do it. LLMs aren't close to doing this.

Expand full comment
Feb 16Liked by Gary Marcus

Absolutely my first response here is "Dude, have you _seen_ English?"

But close behind is wait, whose English?

Expand full comment
Feb 16·edited Feb 16Liked by Gary Marcus

"It’s because formal languages make it much, much easier to specify what you want" - that is precisely why we have invented the whole mathematical notation, because natural language is imprecise and ambiguous. To precisely specify something in natural language would require a lot more text than a formal language and the uncertainty whether the other party understood you correctly remains because there is no formal description of natural language and each individual has slightly different understanding of what each expression means, an understanding that we acquire through personal experience which varies for each person.

Expand full comment
Feb 15Liked by Gary Marcus

"My trust in the coding infrastructure was essentially absolute. " ^100. This looks like another assault against the truth where the truth takes a back-seat behind the convenience of the AI.

Expand full comment

English has many levels, just like World of Warcraft has like 70 or 100 levels. A computer won't understand a quaternary definition of a word in an esoteric context, unless it has been trained on that very instance. In many ways, the intentional obscurity in-jokes code-speak is what makes English organic, rather than standardized, to keep machines from learning too much semantics. A PhD might help one get further in leveling up. Or reading a lot.

Expand full comment
Feb 29·edited Feb 29Liked by Gary Marcus

As I understand it, we are absolutely doomed to this sort of failure of we try to use English to program a an LLM. We don't use English in the same way the machine uses English. Take the word "match," whereas we can define it without using word commonly associated with it: a small wooden stick tipped with phosphorous sulfide; to an LLM it is defined by the degree of its associations with other words, probably words like fire, ignition, flame, campfire etc. Therefore whereas we would think of the word "match" and the word "smore" as having only the most tangential of relationships, the machine would think of these words as tightly related as they share many of the same associated words. In a very real sense, our use of the English language simply isn't similar enough to the machines use of it for us to ever be sure of getting our meaning across. It's not even clear to me that the machine's version of English and our version of English even have an identical range of meanings that it is possible to express. The words and phrases we use don't mean the same thing to us that they do to the machine. We simply aren't even capable of building a useful model in our heads as to how to use the language in the same way the machine does so we can't even know where we went wrong except by trial and error in every single specific case and even when we think we've found something that works, we can never be sure of it.

Expand full comment
Feb 23Liked by Gary Marcus

If English were a great tool for precisely expressing behavior then contract law wouldn't be a thing.

Expand full comment

Great stuff here. A big part of the problem, I think, is the inherent ambiguity in language. A word points to an object in the world, but it is not equivalent to that object. Code, in contrast, points to fairly discrete digital objects (1s and 0s, pixels, etc.). Language can't be reduced to 1s and 0s, and the *meaning* of images can't be reduced to 1s and 0s, because all that stuff is ultimately ambiguous!

Expand full comment
Feb 16Liked by Gary Marcus

It’s nuts how quickly so many are eager to forget the valuable lessons around software development. Back in the early aughts at Carnegie Mellon, Applied Math/Computer Science majors didn’t spend much time learning programming languages at all. The first two meaningful computer science classes were Fundamental Structures of Programming I & II. Most who graduated from that program could learn a programming language in a day or two and write elegant code because the syntax was never been the most important part, it has always been the careful structuring of the code. Second important principle was that the further away you got from the machine’s most native code (machine language), the more likely complexity would start to creep in. Assembler language was the next best thing, but after that developers are subject to the bugs of the various compilers or interpreters. The English language as a coding language has to be so far up that totem pole as to make writing code a monumental effort just to get even the most basic things right. Maybe someone will figure it out, but it feels like it cannot possibly lead to better software being developed, not to mention that those too lazy to learn proper programming languages are likely not the sorts of people we’d want developing code anyway 😉

Expand full comment
Feb 16Liked by Gary Marcus

I am neither a language expert nor a programmer in the strict sense. I am 'only' using Python and R for scripting as a researcher. But from that perspective, it seems exactly right to me that the point of a programming language is to make the computer do exactly what it is told. It would break everything if the fuzziness of natural language would be introduced into the arrangement, starting with the reproducibility of analysis workflows.

Expand full comment