Karpathian Classification of Software

July 29, 2025
Tags: software, history, ai, prompt

In a recent speech, Andrej Karpathy has classified software into three broad categories. I have been thinking a lot about them. Here are my reflections on this topic.

Definition

Software 1.0 Software 2.0 Software 3.0
Needs a step-by-step algorithm, where it is told exactly what to do Can be trained to do tasks which don’t have an exact definition Can learn on the fly and perform tasks based on prompts

Examples of the three categories

Software 1.0 Software 2.0 Software 3.0
Can draw geometric shapes Can draw a cat Can draw an imaginary animal based on a description

As you can see, software 1.0 has been around since the mid-20th century, software 2.0 was impossible for a very long time. Tremendous advances in hardware, and multiple theoretical breakthroughs in machine learning made neural networks commonplace - which is what software 2.0 is. Software 3.0 is the most recent category. It is a way to provide a ‘prompt’ to a certain kind of software 2.0 which can ’learn’, ’think’, and behave in a possibly new way.

How to build these

Software 1.0 Software 2.0 Software 3.0
Express the algorithm in a programming language Create a dataset, and choose a training method Write what you want, in plain English

The third column shows how insanely powerful software 3.0 is. It has opened up the field of software development to everyone who knows English. Which means, very soon every human being would be a software 3.0 programmer - because almost all spoken languages can be translated to English.

When to choose a particular category

As of now software 3.0 has caught fire 🔥. It is called ‘prompt engineering’, and also ‘vibe coding’ in the case of software creation. Perhaps it will be the first approach to use in software creation. We’ll go over to software 2.0 or software 1.0 only when software 3.0 is not helping us. Or, maybe not. Let’s look at some pros and cons.

Pros

Software 1.0 Software 2.0 Software 3.0
Easier to reason about, very reliable. Uses fewer hardware resources, hence power-efficient Can do things which are impossible with software 1.0. Closer to the human brain Much faster than software 2.0, and still retains the advantage over software 1.0. Also, more creative.

Cons

Software 1.0 Software 2.0 Software 3.0
Cannot learn Takes a lot of hardware resources to learn, also takes time Less predictable

It is clear that software 1.0 is the way to go if the task can be defined in steps, and also if we want to save money. While software 2.0 and software 3.0 keep pushing the boundary of what is possible. For example, creating new kinds of software is being done using software 3.0. However, software 3.0 need not be used to create a boilerplate project - something that has a defined structure. This is an easy trap to fall into, if you are mostly interacting with a software 3.0 chat window. Just the other day I caught myself using AI to create a basic expressjs project.

The future

Will there be a software 4.0? Maybe it will be something that can create new software 2.0. On the other hand, we might discover predictable algorithms for some software 2.0 tasks and then they’ll come down to the level of software 1.0.

Another way to think about the future is that hardware was the OG software 1.0. When software 1.0 arrived it looked vastly superior to hardware. Now we are blown away by software 3.0 a.k.a. prompt engineering. Maybe we are gradually climbing a ladder of increasing ‘intelligence’, starting from transistors and ending at prompts today.

One thing is certain - all the three categories of software are going to be important and useful. And every software x.0 uses software (x-1).0 under the hood. So it is not possible to do anything without using software 1.0 under the hood. Just like it is not possible to run anything without hardware.

Made using Hugo (source)