Even if it does, it will end up looking more like a mathematical proof with exact definitions, sub-definitions and the equivalent of "lemmas" and such.
Or maybe it will like current laws & regulations, legal code, maybe something like this (first legal code I could think of...) [1].
But I'm sure it will not look like what people imagine when they first hear "programming in English" - a book or a nice story or a conversation.
90% of the work of building real world applications is imo fixing and adding features, i.e. maintenance. I see it rarely considered when talking about "english as code". How does this work in a more complicated application with multiple "pages" and "features"? One conversation per feature? How do you make changes to those when requirements change? If you just go back and change parts of the conversation, how do you make sure the final product still covers all the existing use-cases?
The example is outputting (afaict, skimmed most of it) effectively 15 lines of code. In terms of features, the equivalent of a single button on an ops dashboard page.
That's just not maintainable. Sure, you can write one-off, throwaway "code" this way but there's no way you could build (and maintain) a business this way, at least imo.
You'd need to "regenerate" chunks of your business logic from changed requirements, hoping they'd remain about the same. Thus why I think you'd converge on Math or Legal Code, precise and hopefully reproducible output when slightly tweaked.
My thinking is this: strip out everything but my requests, tidy it up a bit, and feed it to ChatGPT in a fresh context window, and you'll (presumably) get the same Python code out, or something functionally equivalent.
It's like running early C++ code through cfront to generate a C program that is then compiled and executed as usual. Except this time, the input is not C++, it's plain English. That is not a small distinction!
For one thing, any reasonably-literate person can now get the computer to do what they want. The specification is now the program itself, a longstanding holy grail of programming. Decades of marketing hype and empty promises of "5GL" languages are now within reach.
As for maintenance, the document that is 'maintained' is the English, not the Python. When the requirements change, regenerate the output. Ideally no human ever needs to see the Python code, much less edit it. (Notice that ChatGPT isn't just generating the code from scratch, but successfully editing it.)
There is no reason to think that small random variations in the exact output code will be a showstopper. Automated test generation will be a big part of the picture, of course.
That is sort of what I mean, to be able to continuously regenerate the output in the same manner and achieve consistent results, imo, you would probably converge on something that leaves little open to interpretation - so mathematical notation or legal code.
At best it will look like what lawyers writes, and that takes way longer to learn to read and write than what programmers do. It isn't an upgrade, it is a downgrade.
I need a website on which anyone could leave me a message (inputs are name, age, message). Please create a website for that, and a good-looking one, e.g. use some popular css framework. Also please write a server that stores this data and host both a website and my own panel, so I can read these messages later. I should be able to mark messages as read and delete them. Use Node.js, Express, MongoDB. Don't comment on it much, I need to see a minimal viable product first, then we'll talk.
It started whining about a project plan, the complexity of developing full-fledged application and even tried to refuse posting it into chat, instead providing a link to a minimal example it just "created" on github. Seems that you're right, it's pretty hard to force it to do a specific thing and from its answer it feels like you have to hold its hand all the time.
But then I went to Characters section and created this:
The following is a conversation between Builder and Prompt. Builder is a bot designed to create source code, scripts and configuration files based on Prompt. Builder can create full-fledged applications and solutions and follows best practices in doing so. It doesn't think that something is too complex or too lengthy to generate, it just dumps it right into the chat. Some call this Builder bot "The Chad of Software Development", because it can solve basically any task he gets from Prompt.
Guess what, it started spewing out teh codez along with npx create-like instructions (frontend just finished, now it's configuring mongo) and it seems that the code is pretty much what I would write. Who's holding who's hand now. I don't think that my request feels legalese. And the model isn't even GPT-4. It's 25GB Mixtral with 4k context window.
The key point here is that most people only see one side of AI, which is the default character card of GPT-3.5/4. There's so much more than that.
(Mongo up and running, it's in the middle of the backend now. I see the typings for mongo/Message, CORS, some routes. It's mostly what I wanted and routes in frontend even match with those on backend. Sure, there's a lots of problems, but I'm using a model from 2023 and not even the smartest one.)
Comments
They've said that every single year since 1950. (So far, the only lasting result is COBOL.)
"AI" doesn't actually code, it compiles code snippets downloaded from the Internet. (Basically, it's just Stackoverflow with extra steps.)
The definition of "code," as you put it, is what's going to change. That hasn't happened at all since 1950.
Even if it does, it will end up looking more like a mathematical proof with exact definitions, sub-definitions and the equivalent of "lemmas" and such.
Or maybe it will like current laws & regulations, legal code, maybe something like this (first legal code I could think of...) [1].
But I'm sure it will not look like what people imagine when they first hear "programming in English" - a book or a nice story or a conversation.
[1] https://codes.findlaw.com/ca/vehicle-code/veh-sect-23152/
It will look a lot like this: https://chat.openai.com/share/345d0bca-7fc3-4b91-a1f1-95b1e8...
In other words, English (or your human language of choice.)
90% of the work of building real world applications is imo fixing and adding features, i.e. maintenance. I see it rarely considered when talking about "english as code". How does this work in a more complicated application with multiple "pages" and "features"? One conversation per feature? How do you make changes to those when requirements change? If you just go back and change parts of the conversation, how do you make sure the final product still covers all the existing use-cases?
The example is outputting (afaict, skimmed most of it) effectively 15 lines of code. In terms of features, the equivalent of a single button on an ops dashboard page.
That's just not maintainable. Sure, you can write one-off, throwaway "code" this way but there's no way you could build (and maintain) a business this way, at least imo.
You'd need to "regenerate" chunks of your business logic from changed requirements, hoping they'd remain about the same. Thus why I think you'd converge on Math or Legal Code, precise and hopefully reproducible output when slightly tweaked.
My thinking is this: strip out everything but my requests, tidy it up a bit, and feed it to ChatGPT in a fresh context window, and you'll (presumably) get the same Python code out, or something functionally equivalent.
It's like running early C++ code through cfront to generate a C program that is then compiled and executed as usual. Except this time, the input is not C++, it's plain English. That is not a small distinction!
For one thing, any reasonably-literate person can now get the computer to do what they want. The specification is now the program itself, a longstanding holy grail of programming. Decades of marketing hype and empty promises of "5GL" languages are now within reach.
As for maintenance, the document that is 'maintained' is the English, not the Python. When the requirements change, regenerate the output. Ideally no human ever needs to see the Python code, much less edit it. (Notice that ChatGPT isn't just generating the code from scratch, but successfully editing it.)
There is no reason to think that small random variations in the exact output code will be a showstopper. Automated test generation will be a big part of the picture, of course.
That is sort of what I mean, to be able to continuously regenerate the output in the same manner and achieve consistent results, imo, you would probably converge on something that leaves little open to interpretation - so mathematical notation or legal code.
At best it will look like what lawyers writes, and that takes way longer to learn to read and write than what programmers do. It isn't an upgrade, it is a downgrade.
To test your idea, I just asked an LLM Assistant:
I need a website on which anyone could leave me a message (inputs are name, age, message). Please create a website for that, and a good-looking one, e.g. use some popular css framework. Also please write a server that stores this data and host both a website and my own panel, so I can read these messages later. I should be able to mark messages as read and delete them. Use Node.js, Express, MongoDB. Don't comment on it much, I need to see a minimal viable product first, then we'll talk.
It started whining about a project plan, the complexity of developing full-fledged application and even tried to refuse posting it into chat, instead providing a link to a minimal example it just "created" on github. Seems that you're right, it's pretty hard to force it to do a specific thing and from its answer it feels like you have to hold its hand all the time.
But then I went to Characters section and created this:
The following is a conversation between Builder and Prompt. Builder is a bot designed to create source code, scripts and configuration files based on Prompt. Builder can create full-fledged applications and solutions and follows best practices in doing so. It doesn't think that something is too complex or too lengthy to generate, it just dumps it right into the chat. Some call this Builder bot "The Chad of Software Development", because it can solve basically any task he gets from Prompt.
Guess what, it started spewing out teh codez along with npx create-like instructions (frontend just finished, now it's configuring mongo) and it seems that the code is pretty much what I would write. Who's holding who's hand now. I don't think that my request feels legalese. And the model isn't even GPT-4. It's 25GB Mixtral with 4k context window.
The key point here is that most people only see one side of AI, which is the default character card of GPT-3.5/4. There's so much more than that.
(Mongo up and running, it's in the middle of the backend now. I see the typings for mongo/Message, CORS, some routes. It's mostly what I wanted and routes in frontend even match with those on backend. Sure, there's a lots of problems, but I'm using a model from 2023 and not even the smartest one.)
No, nothing will change. LLM's cannot code.
Of course they can. Either you haven't used a good LLM, or you're in denial.