Will Artificial Intelligence be Able to Program for Us?

02/06/2021 32

More than 50 years have passed since what is considered the beginning of AI (Artificial Intelligence). Its evolution has not been homogeneous in all these years, and we have seen a much faster growth since 2010, thanks to many factors, but fundamentally the large amount of data available and the great improvements in processing capacity, in addition to the emergence of Cloud that with its pay-per-use and service orientation, has facilitated the execution and use of AI models.

In recent years we have also seen how AI has been able to be of help in the medical area, contributing to cancer detection, also how Google has sold paintings painted with AI at a charity event or how with deep learning it has beaten the best Go player. It was also AI that finished a symphony, and Google created a product called Magenta that composes songs without human help.

Another major area where Artificial Intelligence has progressed a lot and continues to progress is in natural language analysis. In 2020, GPT-3 (Generative Pretrained Transformer) was announced, a deep learning model with 175 billion parameters capable of generating written language.

Tests with this new model have shown that it can write sonnets, create texts for web pages or be able to program basic code. OpenAI is behind this model and some companies have started to use these advances to apply them to code development. If AI can already create symphonies, paint pictures, play chess, why not write code?

Back in 2015 Andrej Karpathy, head of AI at Tesla, used a type of neural networks, RNN (Recurrent Neural Network) to generate code. He trained the system with a code repository of about 400 megs and finally the model generated new lines of code. He made some mistakes, there were variables that were not used and it did not compile, but a good part of that code was reusable.

Since then, startups and initiatives focused on this code generation with artificial intelligence have emerged, some of the most relevant ones:

-. Deepcoder, with the participation of Microsoft and Cambridge University that writes code by searching a large database. At the moment it is limited to about five lines of code but in the future it believes it could be of help to non-programmers.

-. Diffblue, created with scientists at Oxford University, uses AI to generate unit test code. Generating code for unit tests is not usually a favorite task for developers and could be helpful for many of them.

-. Intellicode, also with Microsoft participation, relies on recommending the most appropriate method or function based on the developer’s previous usage. The tool is powered by Github repositories.

-. Datarobot (formerly Source AI) acquired by Boston Consulting Group goes a step further and develops code based on a short description of what the program needs to do. It is currently working to incorporate GPT-3 enhancements to create custom web applications.

-. Ubisoft, a game development company, has built a system that simplifies developers’ work by finding bugs in their code.

-. Codenet, announced by IBM recently with the intention of giving a boost to technology that will allow code to be generated more automatically. Its goal is to provide a data set to serve as training for AI algorithms, and to be able, for example, to translate code from one language to another or to generate new code. To this end, it includes more than 14 million code examples and proposes the solution to 4503 common programs, in more than 50 different languages.

It seems that investments in this area are growing and this undoubtedly leads programmers to think that their role will be susceptible to automation in the near future as well. From my point of view there is still a long way to go. To create software is to convert a set of requirements, which in many cases are not even very concrete, into a program. Trying to make the right specifications and solve the problem properly is much more complex than just programming.

On the other hand, programmers almost never start from scratch, they reuse code and use a multitude of API’s (application program interface). Developers certainly need a better way to find those APIs and AI could help. AI could also simplify the search for errors in the code or generate programs in different languages more efficiently.

We do not know exactly what may happen in the future, nor at what speed, but what is clear is that developers will increasingly rely on AI to help them develop their work, and that the way they do their work today will be very different in a few years’ time.