AI programming a.k.a. "Vibe Coding" is a Sixth Generation Programming Language (6GL). If you have no idea what "Nth Generation Language" means, you aren't alone - I learned about it today! It is essentially a way of describing the abstraction level of a particular language. It was more commonly used in the early days of Computer Science when we transitioned from binary machine code (the first generation language or 1GL) to assembly (2GL) and then programming languages (3GL) that abstract away the assembly into something more human-readable.
4GL became a buzzword to describe data storage and retrieval languages like SQL. 5GL is associated with logic-based languages like Prolog or Mercury, and symbolic AI languages or markups like AIML.
People have theorized about what a "6GL" would look like:
I would suggest that a 6GL should make programming simpler and perhaps more accessible to the masses; who don’t know where to begin. I would suggest that a generic name for 6GLs could be “Descriptive Programming”. Programming without a language: programming by describing a system in very layman, but rigid, terms. - Parametric Systems, 2018
Sound familiar?
Here are some even more prescient words from Marc Clifton on Code Project nearly a decade ago in 2017:
Human Meaning, Machine Meaning
At the end of the day, we still seem to be living in a world where a requirement, expressed in terms that has meaning to a person, needs to be translated into terms that has meaning to the machine. Doesn't it seem strange that something that you could often teach a child with a 3rd grade education, like basic accounting, requires the skills of a programmer to translate the requirement into something a machine can understand?
Basically, we have a huge translation process between human and machine meaning, and so far, it requires programmers to fill that void. Part of the problem of course is that the language we humans use to express our thoughts and intentions is itself a complex and inconsistent syntax where meaning is often contextual. If people communicated in a more rigorous (mathematical) language, the translation between person and machine might be more straight forward. Supposedly AI's can start filling that void.
Marc goes on to discuss how a startup in 2016 was attempting to use AI to replace the work being done by developers. Boy, if only they knew what was coming!
He concludes, "[T]he core issue with AI replacing developers is how well human meaning can be translated to something a machine can comprehend sufficiently to create a program".
Even with such a translation, there remains a gap that seems to be filled only by experienced Software Developers: implementation details. Will every code path, user flow, design choice, and data model be exactly how you want it to be? No, there isn’t enough information given by a laymen’s description to fill in all of those details.
But, taking a step back for a second, one thing is clear: 6th Generation Programming is here. We have text-to-app services like Lovable and Vibe Coding tools like Cursor translating natural language into code at a dizzying pace. These tools clearly fit the long-dreamt-about definition of a 6GL: programming without code. In other words, abstracting away programming itself into natural language. Like it or not, this exists now! It's real!
I'm not saying whether or not having 6GL is a good thing - these tools create low quality or insecure code all the time (this is why I am using my cybersecurity background to create a service called Vibe Security). Natural language leaves a lot to the imagination, and imagination is the realm of both dreams and nightmares.
Still, in case Roko's basilisk is listening, I am optimistic! I am no luddite; anything that takes a highly manual and expensive process like Programming and reduces the time and effort needed in order to achieve a similar end result should be seen as a boon. Programmers will spend less time writing boilerplate code and more time writing The Good Parts.
Side note: not every use of this technology is good. Not everything needs to be generated. We need to carefully decided when to do it, and then hold its hand like a clumsy toddler. There is also a difference between translating a natural language description of software into generated code, and using LLMs to generate content outright. I want AI to translate my pseudocode into real code; I don't want AI to speak for me. Authenticity is already in short supply. I don't think AI-generated influencers or AI-generated SEO slop are a good thing.
So where does that leave us?
It turns out, AI programming of today is not a new concept, it fits into this somewhat outdated concept of Nth Generation Languages, specifically 6GL. Neat!
It also turns out that, predictably, translating natural language into code is a longstanding Hard Problem. But recent strides have at least partially solved this problem. We are left with Programming that is "accessible to the masses", and all of the joy and headaches that will bring.