The Last Programming Language
The last days of programming are upon us. The last programming language is finally here. You may not like it π . You may fight it βοΈ. But it is inevitable π₯. In this post, we will explore the journey from traditional programming to the era of AI coding agents and the implications of this transformation π₯.
βI am no masterβ ~ Leroy Green (The Last Dragon)
π» The Good Old Days π»
Back in the day, programming was a craft. I started my career a Thousand years ago… I mean in the previous millennium. My first programming job, while still a student, was at 1994. I was writing Cobol for the accounts receivable team at a company that published Yellow Pages guides π. Every day I would get from my manager a printout (yes, paper!) of some code with red handwritten comments explaining was I need to do. I managed to get out of that role pretty quickly and started doing some PowerBuilder with SQL programming. On a side note, PowerBuilder is arguably the best RAD tool ever created. Yes, I realize you have no idea what RAD is.
Anyway, I digress. My next job was the only software person in a small startup doing robotically controlled video camera to embed people into existing videos π₯. I had a lot of fun learning C/C++ and MFC and interfacing with some real-time systems to control the camera. I won’t fascinate you with the rest of my career, but over the years I wrote production code in languages like C/C++, C#, Go, Python, Java, JavaScript, TypeScript and Ruby. I also wrote for fun some projects or programs using Basic, Pascal, Delphi and Rust.
Programming is awesome. You can create anything you can imagine β¨. You can automate boring tasks. You can build systems that scale to millions of users. You can create art, music, games, and more. for me programming is a superpower π¦Έ.
Early in my career, I was emotionally invested in the programming languages I used π. I read the books, I studied the concepts and idioms of every language I have used.
Whenever I switched to a new language, I found myself heavily influenced by the design choices of the ones I had used before.
Over time, I realized π² that the specific programming language is not as important as I thought. Yes, there is the concept of the right tool for the job. Compiled, statically typed languages with multi-threading support are generally better for tight, performance-sensitive code. Dynamic languages with garbage collection are generally more productive and developer-friendly. But, in practice any programming language can be used to solve most problems. Massive systems like Facebook, YouTube, DropBox, Spotify, and GitHub run at scale on Python, Ruby and PHP.
The rise of microservices and distributed systems meant that the choice of programming language became even less important and often hidden behind APIs and protocols π. I could write a service in Go, a client in Python, and they could communicate just fine over a REST API or gRPC.
Finally, even monolithic applications implemented in a slow dynamic language like Python or Ruby can implement high-performance components in a fast language like C and integrate them using a foreign language interface.
For large distributed systems, most of the hard problems are about storage, networking, queues, high-availability, scaling, etc. ποΈ
π€ The Rise of the AI Coding Agent π€
Fast-forward to today. The future has officially arrived π. The world of programming is changing rapidly. The rise of AI coding agents is transforming the way we write software. LLMs and agentic AI systems are ALREADY better than you and me at any individual task related to software development:
- Understanding requirements π
- Planning πΊοΈ
- Writing code π»
- Writing tests π§ͺ
- Debugging π
- Documenting code π
- Refactoring βοΈ
- Reviewing code π
They can do it faster, cheaper, and often better than humans π. They can work 24/7 without breaks or distractions β‘. They can learn from vast amounts of data π. They can collaborate with other AI agents and humans seamlessly.
But, they still miss long planning horizons and staying on task without getting stuck from time to time π. They still need a human in the loop to stir them in the right direction π§. They still need oversight and quality control (although the promise of agentic AI systems is that other agents can perform this function).
So, the current state of the art is - the AI coding agent does most of the leg work of planning from vague requirements, writing code and tests and troubleshooting π οΈ. AI software engineers or teams can autonomously iterate on a GitHub issue or some spec document.
The human software engineer is still needed to provide high-level guidance, review the work, and ensure quality. But the human can focus on the big picture and let the AI agent handle the details.
This brings us to the last programming language.
π The Last Programming Language π
The last programming language is the last language where human express their intents and collaborate with AI agents to implement them and review the AI artifacts. But what is the last programming language? Is it Python? JavaScript? Go? Rust? Something else? Nope. are you ready? drum roll please… π₯ The last programming language is…
Β .
Β .
Β .
Markdown! π
Markdown is the last programming language because it is the simplest and most expressive way to communicate formally with AI π€. Humans can read, write and edit it easily βοΈ. AI agents can parse and understand it easily π§ . It is a perfect medium for human-AI collaboration.
It is easy to embed Mermaid diagrams to illustrate complex workflows π or just regular images πΌοΈ. You can also embed code snippets π».
Markdown is already widely used for documentation, READMEs, wikis, blogs and most importantly prompts for LLMs π¬. It is an excellent choice for generating hierarchical wikis that let humans navigate complex systems and specs, without getting overwhelmed.
Both AI agents and humans can read and update shared Markdown documents that serve as a live plan, spec, and documentation for a project π.
But, is it really programming? That’s debatable π€. IMO, it is. Programming is about expressing intent and logic in a formal way that can be executed by a machine. It’s true that you can’t predict precisely the code that the LLM will generate based on your Markdown spec. But, you also can’t predict the machine language that your C compiler will generate or how will your program be laid out in memory and which core will run which thread of your program. The evolution of software development has always been about raising the level of abstraction and letting machines handle the details π‘.
π The Return of Literate Programming π
The last programming language is also a return to the ideas of literate programming. Donald Knuth, the father of TeX and TAOCP, introduced the concept of literate programming in the 1980s. The idea is to write code as a narrative, interspersed with explanations and documentation. The code is secondary to the narrative. The goal is to make the code more understandable and maintainable.
It never caught on π«. People found it too cumbersome and impractical. But with AI coding agents, the idea of literate programming can be resurrected β°οΈ. The human writes the narrative in Markdown π, and the AI agent generates the code snippets π». The human can review and edit the code as needed βοΈ. The AI agent can also generate tests and documentation and complete systems based on the spec π§.
Today, notebook systems like Marimo (a better Jupyter) are probably the closest we have to practical literate programming. It was traditionally focused on data scientists, but there is no reason a similar approach can’t be used for general software development.
βΎοΈ The coding singularity βΎοΈ
Honestly, this will be a pretty short phase. Beyond that is full-fledged vibe coding π where the human just describes what they want in natural language and the AI agent does everything else π€. Actually, even that won’t last long β°. Soon, the AI will understand you better than you understand yourself π§ and do the right thing without any explicit instructions.
The fully-automated AI corporations are next π’.
π Take Home Points π
- The coding singularity is near.
- AI coding agents are already better than humans at most individual tasks related to software development.
- The last programming language is Markdown, the simplest and most expressive way to iterate with AI on software projects.
- Enjoy the ride. It will be a wild one.
π¦πΊ Catch ya later, mates π¦πΊ