Can artificial intelligence be employed to understand the context of computer code and write its own? There have been impressive strides being made in this direction, promising to make the work of developers — and non-developers working with low-code/no-code platforms — more productive, and more focused on the business at hand.
Last year, Intel, in conjunction with Massachusetts Institute of Technology and Georgia Institute of Technology, announced the creation of an automated engine designed to learn what a piece of software intends to do by studying the structure of the code and analyzing syntactic differences of other code with similar behavior. The goal of the effort “is to democratize the creation of software,” said Justin Gottschlich, principal scientist at Intel. “When fully realized, machine programming will enable everyone to create software by expressing their intention in whatever fashion that’s best for them, whether that’s code, natural language or something else.”
OpenAI GPT-3 (Generative Pre-trained Transformer) also can be employed to automatically generate computer code. A development manager could “start things off in the project using a tool with GPT-3 features to build the foundation of the application,” writes Vincent Tabora in Becoming Human. “By this I mean the skeleton from which the rest of the application will be built upon. The manager can simply type their requirements and the tool will generate what the manager wants. This saves project requirements for additional staff who would otherwise be responsible for building the initial application. After the skeleton has been generated, more advanced developers can come in with the rest of the project requirements to complete the application.”
Along with creating new applications, AI for coding may also smooth the way for moving applications and systems to modern platforms. In a recent interview, Maja Vuković, an IBM Fellow at the company’s Watson Research Center, explained how a client was struggling with millions of lines of code, and her team was able to employ AI to assist in migrating the code to new platforms. “Their mission-critical application has ballooned to over 1.5 million lines of code,” she relates. “Decades of adding migrating combining different systems. Moreover, this evolution of the code happened by multiple development teams, some of which moved out to different roles, or are not even in the organization anymore. And there may not be even any documentation left.”
It took the company’s IT team more than two years of struggling with the legacy code, with no results, Vuković says. “And why is that? Well, we as humans were not built to go and look through 1.5 million lines of code and understand what business functions are buried in there.”
Enter AI. “We built an AI model that helped us, in a very short amount of time, to comb through all the code in this application, she explains. “The AI model helped us to identify just which parts of the code are obsolete or no longer in use, which parts of code are redundant, and also which parts of code can be grouped in more manageable groups of code — or rather, microservices.”
Not only did AI help the IBM team recommend suitable business-function-driven microservices, “but we can also use AI to help generate code for target microservices, further simplifying the time, she continues. “It saves the time and effort for the developers. It can also tell you where the gaps are, what else needs to be done to make those microservices fully executable. This simplifies and accelerates the entire application refactoring process tremendously — our clients have thousands of applications in their portfolio.”
This demonstration project was for one application with 1.5 million lines of code that took two years to do manually, Vuković emphasizes. “Imagine if you have to modernize thousands of applications. You want to compress that time from a multi-year effort to something that you can do in months, or weeks.”
Along these lines, IBM launched an initiative called CodeNet intended to facilitate the application of AI to code snippets, she says. Her team is making more than 14 million samples of code available as part of the open source dataset available on GitHub. The project is intended to provide for code what ImageNet, with its database of 14 million images, provided developers and researchers with identified images. “Our team has extracted the most representative code samples that can help us or help AI train and better help developers write software. Our AI for code technology is going to fundamentally change how we think about coding,” Vuković predicts.