The future of programming languages is English
This is a conversation that @cmp2020 have already had, repeatedly, and as I was writing some code this morning, I thought it would also make a good topic for a blog post.
When I entered the work force in the late 1980s, the programming industry was at the tail end of a paradigm shift. It was widely understood at the time that machine language was a "first generation" language; assembly language was a "second generation" language; and the "third generation" was comprised of languages that had only recently become commonplace: mainly Fortran, COBOL, and C - with BASIC and Pascal in the classroom. The somewhat recent paradigm shift was from the dominance of 2GLs to 3GLs.
On the horizon, we were expecting to see these third generation languages get replaced by fourth generation languages. And eventually, those would be replaced by direct communication with the computer in the English language. Things were moving so fast that people thought it might happen by the start of the 21st century.
What happened, instead, though is that 4GL languages stayed tied to specific domains (or disappeared, like FOCUS). Apparently, the language categorizers are now up to 6GL, but nobody I know really talks about programming languages in those terms anymore. As the decades passed and new 3GL languages like perl, Java, C++, JavaScript, python, and Ruby rose to prominence, the idea of programming in English drifted away like the idea of mankind traveling to Mars and beyond. The thing that was once inevitable became unlikely. For all the technical progress of the last 4 decades, in some ways it has also been a time of lowering expectations.
Then came the Large Language Model (LLM).
It's no secret that I rely heavily on LLMs for development of the Steem browser extensions that I've been working on. This is for two reasons. First, and primarily, it's because I'm learning to work in JavaScript, and HTML, and CSS as I do the development, so the LLMs are serving as my tutors. Secondly, it's because I'm basically lazy - this is a big part of why I was drawn to programming in the first place, to make things easier. The LLM serves as a sort of a compiler so that I can abstract away some of the more tedious aspects of coding.
So, the LLM translates from English to JS, HTML, or CSS, and all I have to do is describe what I want and decide which files should hold the code that the LLM spits back. Until recently, I had experimented with ChatGPT, Google Gemini, Claude, and Brave Leo. Another option which I wanted to try was Github Copilot. Unfortunately, I can't justify paying the monthly fee for a set of hobby products that generates zero revenue, so Copilot remains out of reach.
However, last week I decided to run some web searches to see if there's a free equivalent that I can use with Microsoft's vscode interface. It turns out that the answer is Yes. So, I downloaded ChatGPT-EasyCode and gave it a try.
It comes with a daily quota, so there are limits, but let me just say that it's frigging amazing. The first thing I did was right-click on the menu and see what options were available, and it gave me a "what does this file do". So, of course I had to try it. Let's look at an example of its output from the main.js file in the Steem Curation Extension.
This file is a JavaScript module for a Chrome extension designed to enhance the Steem blockchain curation experience. The extension highlights posts based on their promotion status and beneficiary settings, and it also provides additional information about the user's voting power when they interact with the profile dropdown menu. Here's a breakdown of the key functionalities and functions in the file:
Key Functionalities:
Highlighting Posts:The extension highlights posts that have been promoted or have @null beneficiaries.
Different colors are used to indicate the level of promotion or burn (percentage of rewards going to @null).
Displaying Voting Power:When the user clicks on the profile dropdown menu, the extension fetches and displays the user's current voting power.
Handling Page Changes:The extension uses a MutationObserver to detect changes in the page, such as logins or logouts, and updates the UI accordingly.
Data Preparation:The extension fetches data about transfers related to promoted posts and prepares this data for use in highlighting posts.
Key Functions:
highLight():
And so on. You get the idea. The plugin also has the ability to create code, answer questions about specific selections and to fix bugs, suggest improvements, and so on. And, unlike with the standalone LLMs, it's right there in my code editor so I don't have to waste time copying and pasting between windows or explaining the context to the AI.
So all of that is pretty amazing, and it's a big step forward from working in a separate LLM, but that's not the point of this post. The point is that the long-forgotten idea of using English to create computer programs is back on the horizon.
Yes, right now, the LLMs make a lot of mistakes, but at the dawn of the 3rd generation languages, compilers made a lot of mistakes, too. When I entered the work force, people said that if you wanted to optimize performance, you had to use assembly code. My expectation is that coding with an LLM assistant will follow the same trajectory that we saw back then.
So, my coding process right now is to describe what I want in English, examine the code, make changes where needed (or more likely, ask the LLM to make the changes), then test and debug. As time goes on and the LLM gets better, more of that happens in plain English and less of it happens in whatever language the app uses. Eventually, we can even ask what's the point of having a 3GL in the middle? Why not go straight from LLM to assembly or bytecode?
Of course, when I say that "The future of programming languages is English", you can substitute in basically any other spoken language. There's no reason that the future of programming languages can't also be German, Spanish, French, Italian, Korean and so on.
As long as humans continue to have the ideas, there will be a continued partnership between human intelligence and artificial intelligence. In fact, when English eventually replaces specialized languages I think we can expect to see more people implementing more ideas, and faster. The role of the software engineer is not threatened, but it is definitely changing.
Thank you for your time and attention.
As a general rule, I up-vote comments that demonstrate "proof of reading".
Steve Palmer is an IT professional with three decades of professional experience in data communications and information systems. He holds a bachelor's degree in mathematics, a master's degree in computer science, and a master's degree in information systems and technology management. He has been awarded 3 US patents.
Pixabay license, source
Reminder
Visit the /promoted page and #burnsteem25 to support the inflation-fighters who are helping to enable decentralized regulation of Steem token supply growth.
It’s true that LLM is still not perfect at the moment, but like previous generations of programming languages, it has the potential to evolve quickly. Perhaps in the future, more people who were previously not “technical” will be able to implement their ideas directly into applications using AI.
Keep the spirit of experimentation, because such experiences are part of the path to a new era in the programming world! 🚀
0.02 SBD,
0.39 STEEM,
0.47 SP
Thanks for the reply!
This is what I imagine. Andreas Antonopoulos has talked about his vision for Bitcoin where everyone has their own coins. I remember him using the examples of little kids making their own "JoeyCoin" or "SusieCoin". I see LLMs as eventually democratizing programming in a similar way.
0.00 SBD,
0.02 STEEM,
0.03 SP
Just a couple of years ago, you had to find highly paid programmers or a whole company to create your own meme coin or something similar. And now you can do it with AI in a couple of hours. It seems to me that AI is like the appearance of mobile phones in people. It will accelerate our lives to new speeds again.🚀🚀🚀
0.01 SBD,
0.09 STEEM,
0.11 SP
It's amazing how far we've come!
I wrote my very first piece of code in BASIC on paper tape in 1976! Subsequently learned COBOL and that was all on IBM cards to actually execute it.
The thing I wonder about with these new language iterations is whether any of the old fundamentals such as "structured programming" persist.
I have not been in the coding biz for years, but one of the things we always worried about in the 90's was "code bloat," because everything became ever larger patches on top of patches on top of patches, rather than redoing from the ground up.
0.02 SBD,
0.28 STEEM,
0.34 SP
It is amazing to see how things have changed. Beyond the raw technology, some of the things that I specifically learned to avoid as "bad practice" in structured programming courses are now standard practice (multiple return points from functions, for example). Code bloat is still a thing, but I guess it's mostly called "technical debt" now. And somewhere along the way faster hardware and better compilers made it cost-effective to optimize for the programmer's time, instead of the program's performance. I also haven't programmed professionally since the '90s, but to me the emergence of LLMs feels almost like someone hit the "pause" button for 30 years and just recently hit "play" again😁.
0.00 SBD,
0.02 STEEM,
0.03 SP