I recently read a medium article entitled Software 2.0. In this article the author argues that Neural Networks (or AI in general?) are much better than the Software 1.0 stack we’re used to work with (C, C++, Java and so on).
As often with such statements (i.e. X is much better than Y) a contextual component is missing and it is overly optimistic.
The author goes on to say “Why should we prefer to port complex programs into Software 2.0? Clearly, one easy answer is that they work better in practice.”. Again, no proof and no context. Yes, AI techniques are better at solving certain types of problems, but for other types of problems more classical approaches may be more appropriate.
An AI calculator
Take basic calculus: adding, subtracting, multiplication, division. Are we really saying that AI techniques would be better (faster, less time and memory consuming, less complex to set up) than using more basic “Software 1.0” techniques? Not quite. And don’t take our word for it, somebody already did it and proved our point: An AI calculator 🙂
Using old techniques is clearly more efficient in this case.
AI enhanced Software Development
True Artificial Intelligence enhanced Software development can be achieved by using -for instance- deep learning to help find, select and write skeleton (or complete) code using AI-based tools like BAYOU.
So, yes, AI is part of the Software 2.0 toolbox, both to write algorithms and to help write -better- code. But it isn’t yet a fully sufficient replacement for traditional software development.
Context is king
As with most architecture statements, it is important to put them in the correct perspective.
AI systems won’t be writing any complex fully functioning code on their own any time soon (yet). They will be (or already are) very important assistants, though.
So, unless we find a way to automate the way these systems learn and we improve the way we specify the solution we want these systems to build. We’re going to have to code for a couple of years more…