The Last Programming Language?
Large language models have the promise to unlock computer programming for anyone who can read and write.
I never meant to be a programmer. In fact, I remember someone telling me when I was in college that the future is in computers and that I should major in Computer Science. So, I took a look at the Intro to CS syllabus and was instantly like “nope, this is definitely not for me”. I don’t remember exactly what was on that syllabus but I’m guessing it had some abstract math and algorithm stuff that I had no interest in and honestly, was way over my head. I just wanted to build cool stuff.
Fast forward a few years and I had forced myself to learn how to program in an effort to build my first business1. While the business ultimately never went anywhere, the skills that I learned while building it proved invaluable to me over the years as I became a software engineer, worked at a few technology startups, and even started a few more of my own again.
Looking back on that early time though, it was a bit of a slog. I almost stopped learning how to program 100 times. This is probably true of many people who learn too and countless others who never do.
And a large majority of that struggle for me was because of the programming languages. They were so strange and abstract. Maybe I don’t have the brain for it,2 but learning these programming languages was a big challenge.
But does it have to be this hard?
With this as my background, as I’ve been playing around with ChatGPT and the like, a question keeps on popping into my head: could this mean the end to programming languages forever? Or at least the way we think about them today?
The reason that it keeps popping into my head is that these latest developments with LLMs (large language models) mean that anyone who can read and write, in theory, can now program a computer. Another way to put it is: if you wanted to learn “programming” today starting from scratch, the best way to learn might be to interact with LLMs and the like, not to actually learn a traditional “programming language”.
Now, I can already here a lot of people on the internet yelling at me for saying this. Yes, there are nuances to how LLMs work and yes, LLMs are by no means perfect today and could hallucinate, write incorrect code, and lead to mistakes and whatnot. And I don’t mean to outright dismiss these potential challenges, however, if you are just starting to learn how to program, even if you learn Python or any of the equivalent intro languages, you’re going to make mistakes, you’re going to copy and paste a lot of code you don’t fully understand, you’re going to write buggy, poorly tested software, etc, etc. When you’re starting out, it’s not like you magically understand all the nuances of the computer programming language that you decided to learn.
Plus, the LLMs are only going to get better. They are only going to write better and better software. So if you learn how to use them now and continue to learn as they change and get better, it’s likely you will be able to write even more powerful software then you ever could if you tried starting with the more traditional languages. Finally, the thing that hooks most people when first learning to program a computer is to actually build something that works. And with LLMs, that could happen very quickly and at a level that likely would be almost unheard of for a beginner programmer.
And that’s why I believe we’re at the end of programming languages as we know it3.
Writing software through LLMs is essentially just writing instructions for a machine. Which is exactly what programming languages do. Only the major difference is that you write them in English, rather than say Python.4 And this just continues the trend that’s already been true of programming languages.
Programming languages have progressively been abstracted from their lower level language over time (1s and 0s to Python for example). Many of the most popular languages today are abstractions of that lower level stuff but are great because they are easier to deal with. Python, which is a very popular modern programming language, has many features that make it similar to writing regular English prose. For example, to create a new function in python, you write `def function_name():`. Of course, that’s not perfect English but you can imagine how that closely maps to something like `define function name`.
What’s awesome about the latest LLMs is that they are basically doing this one level up abstraction for us already. You can go to ChatGPT right now and write the following statement: “Define a function called ‘my function name’ that returns ‘hello world’” and you should get back the results similar to, if not exactly:
def my_function_name():
return "hello world"
This is pretty amazing, right? It’s doing a certain number of things here, which essentially boils down to interpreting your intentions and converting it to computer code. That’s not all that different from what Python is actually doing itself. Python as a programming language is just taking some text that’s written, interpreting it (yes I am glossing over the details of this) and then converting it to computer code (the code just happens to be the 1s and 0s necessary for the machine to actually be able to run the code).
So if I’m doing a decent job of explaining things, hopefully you’re starting to see how these two things are analogous.
In my eyes, the biggest missing piece to getting to this world exactly is the direct 1:1 connection between what you write and translating that down into machine code (the 1s and 0s). It seems obvious to me that these LLMs are essentially programming languages, in that they are machines that you’re able to use to program a computer, they just happen to do it through natural, human language.
And that’s what I’m trying to get at here. I think with these new tools, there’s a path for us to develop what I’ll call the “last programming language”. And what I mean by that is just developing something where anyone who knows how to read and write in their native language can program a computer to do whatever they want it to do. This is definitely where we’re going, if we’re not already basically there.5
So, if you were just starting out wanting to learn how to program a computer, I think it’d be wise to start with LLMs, see how far they can get you to building what you want and go from there. Maybe you’ll find out that you need to learn the lower level languages, like Python, etc. to really do what you want, but you might not. And if you’re learning as these programs improve, you might also have a leg up on everyone else who doesn’t. You might even be surprised by how far you can get not having to know those other languages.
While I acknowledge that I’m leaving out some of the details and that there are still a number of things that would have to be built to make LLMs completely abstract away modern programming languages6 to the point that you would need to know them as much as the modern programmer needs to know machine code, I do think that if you’re just starting out, the argument for learning something like Python over learning how to build something with ChatGPT doesn’t seem that strong to me. Learn how to build something first, in the fastest way possible. Then, if you want to get into the weeds and the details on how the underlying layers work, go for it.
Going back to my own experience, it was only when I discovered Ruby after initially struggling with PHP and a few other languages that things started to click for me and I was able to build something of actual value. I still don’t understand or know how to program in machine code but I think I’ll survive.
I’ll leave you with this. The potential here for unlocking computer programming for 100s of millions (or even billions of people) is hard to fathom. I’ve always been excited for this future because I’ve seen first hand how the biggest challenge to getting more people into programming is not motivation or interest or intelligence but instead, trying to learn some new esoteric language.
What kind of value might we be able to unlock for society at large, if we just reduced the barriers to programming? Why can’t anyone who knows how to read or write be able to program a computer? And what might be possible if we could make that happen?
I think we’re finally entering an era where we’re about to find out and I, for one, am excited about it.
It was a text message ordering company. I was about 10 years too early. I continue to be this way for most things, so in an ironic way, maybe whatever I’m saying might be still a few years away, but alas.
I don’t know what this even means but I know I struggle with languages of all sorts, programming ones, foreign ones, etc. Some people seem to pick them up easier. Maybe it’s just a flaw of mine but I know I’m not alone and it doesn’t mean it has to be a barrier either.
Will people still write and create software programming languages in the future? Probably. But I have a feeling they’ll be more like hobbies and curiosities then the things that everyone starts to use to develop the large majority of the software we use. There will always be niches of course, just like how Fortran is still around today in some circles.
You can obviously write them in other languages as well, which shows even more of its power to reach a wider audience. I’m just using English as the example here because it’s my native language, but you could substitute any number of other languages here, assuming they work with the latest LLMs (which is not always the case, but the number of languages this is the case for is quite high).
I’m sure that in about a month this will be out of date. You can start to see some of it come about with the BabyAGI and AutoGPT stuff. I would still argue, these aren’t exactly 1:1 associations, but they are getting close.
Perhaps a startup idea for someone out there!