This is the second article on our series about the impact of artificial intelligence(AI) on software development. The first part of this series focused on the ecosystem of platforms and data sources that can be used to train AI algorithms to help produce better code. Today, I would like to explore how AI can help software engineers to write better code.
Bringing AI technologies in the existing ecosystem of software development tools and frameworks seems like an obvious first step on the journey towards building AI systems that can write code. Conceptually, AI can help to improve almost every aspect of the software development lifecycle such as testing, development, management among others.
The advancements on machine learning(ML) and AI together with the evolution of rich developer knowledge sources such as Stack Exchange or Github are opening a window to a world on which AI algorithms can improve developer’s productivity. A great example of this intersection between AI and software programming is the recently announced bugspots tool [Google-w3C] that uses ML algorithms to determine whether a potential piece of code is flawed or not. Another good example is Emil Schutter’s work leveraging stack Exchange to produce fully functional code based on the intentions inferred from existing code.
If we continue exploring the thesis that AI can help engineers produce better code, the next logical step is to identify which areas to tackle first. In my opinion, there are several developer productivity areas on which AI can help software developers produce better code. Let’s explore a few ideas:
Five Ways on Which AI Can Help Software Developers Write Better Code
By following some of the same principles of tools like bugspots, AI algorithms can analyze the intentions and structure of specific code and propose relevant optimizations that leverage knowledge from data service such as Stack Exchange or Github. Examples of optimizations include better algorithms for the existing program or code changes that may avoid potential bugs.
2-Test Code Generation
Another prototypical use case for leveraging AI algorithms is the generation of test cases for an existing piece of software. In that model, AI processes can understand the nature of specific code and automatically generate test code based on inferred uses cases.
Security is one the areas that can immediately benefit from applying AI algorithms to software programming. AI is a very effective way to spot potential security vulnerabilities on a specific piece of code and recommend potential solutions.
4-Intelligent Compilers and Interpreters
Using AI to drive the next generation of compilers and intepreters is one of the fascinating areas of research in programming languages. soon, we could be writing code in environments in which compilers don’t only understand the syntax and semantic of a program but also its purpose and intentions. In this model, compilers and interpreters will be able to dynamically improve the code and become more efficient over time.
Bug fixing is one of the areas that could be revolutionized with AI technologies. Tools such as bugspots show us that programs can leverage AI algorithms to auto-correct themselves with minimum intervention of a human programmer.