Software 2.0 is revolutionizing how we develop a meaningful yet small portion of our software, while Software 3.0 stack will take us into the era of ubiquitous intelligent software development accessible to everyone.
“Standing on the shoulders of giants”, this article is inspired by texts and opinions of wonderful people worldwide, and mainly on Andrej Karpathy’s blog post “Software 2.0”. Let’s begin with quoting:
The “classical stack” of Software 1.0 is what we’re all familiar with — it is written by a programmer in languages such as Python, C++, JS, CSS, etc. It consists of explicit (declarative or imperative) instructions to a compiler/interpreter. By writing each line of code/instruction, the programmer identifies a specific point in the program space with some desirable behavior.
In contrast, Software 2.0, is written in much more abstract, human unfriendly language, such as the weights of a neural network. No human is involved in writing this code because there are a lot of weights (typical networks might have millions).
The latest breakthroughs enable us to envision Software 3.0.
In SW 3.0, programmers provide a set of instructions and a dataset, which define the program’s desired behavior. Then, an AI agent takes these instructions and dataset, and generates the program. This creation process includes the agent generating programmer-readable code and training the neural net models.
Read More at Itamar Friedman
Read the rest at Itamar Friedman