AI-assisted software development tools automatically suggest or generate software source code for programmers. This may seem like cutting-edge technology, but in a way it is. However, AI-assisted development is not entirely new. In fact, it has a long history going back to other tools that use AI and algorithmic processing to assist programmers in their work.
To understand why AI-assisted development is important today, it’s important to understand its past and see how these modern tools differ from those that came before. Let’s take a look at the history of AI coding tools and how they got to where they are today.
Early faces of AI coding tools
AI-assisted software development is the use of machine learning, neural networks, and other aspects of AI to understand when to write new code, where to improve existing code, and what possibilities exist in a system. It refers to making decisions autonomously, such as how to identify an error. code base.
However, there are many categories of software development tools that appeared long before these modern AI-assisted developments. While these existing tools and approaches are not exactly the same as AI-assisted development, they foreshadowed AI-assisted development in several important ways.
Intelligent code completion
Intelligent code completion refers to a type of development tool that helps programmers complete the line of code they started writing. You can also fix relatively simple syntax and spelling errors found in your code.
A simple example of intelligent code completion is: command line completion This functionality is commonly associated with shell scripts such as Bash. If you open Terminal on a Linux-based system such as Ubuntu, start typing a letter or two and press Tab. The terminal will return a list of valid commands you can enter based on the first letter. This example uses the first letter “bas”.
[email protected]:~$ bas
base32 base64 basename basenc bash bashbug
[email protected]:~$ bas
Similarly, the terminal detects instances where the user may have misspelled a command and suggests what the user intended to type.
[email protected]:~$ bassh
Command 'bassh' not found, did you mean:
command 'bash' from deb bash (5.1-6ubuntu1)
command 'bssh' from deb avahi-ui-utils (0.8-5ubuntu5)
Try: sudo apt install <deb name>[email protected]:~$
The origins of intelligent code completion probably go back to the 1950s. At that time, programmers realized that they could improve the accuracy of their code with a basic spell-checking feature that could detect typos that could cause problems in their applications. Of course, intelligent code completion is not the same as AI-assisted development or code checking, and relies on older validation methods such as comparing user input against a preconfigured list of valid input options.
low code development
Low-code development tools enable developers and non-technical users to create software with very little hand coding. Unlike intelligent code completion tools, low-code development platforms aren’t just designed to help you complete and verify individual lines of code, they’re designed to help you create entire programs.
Low-code programming tools don’t use AI. Instead, it relies on pre-built code modules that users combine to create software. This means that low-code tools typically support narrower use cases as they are only used to build the kinds of applications that the preconfigured modules support.
While not as revolutionary an approach as AI-assisted development might have intended, the concept of low-code development has definitely been around since the 1970s, when fourth-generation programming languages such as FOCUS and SQL first appeared.
static code analysis
For years, developers have used static code analysis tools to automatically analyze source code, looking for security vulnerabilities, bugs, and other issues buried within their codebase. Static code analysis tools are typically run on deployed source code rather than during the development process. This is in stark contrast to AI-assisted development tools that are involved from the beginning of the build cycle.
However, while source code analyzers have traditionally not relied on AI to perform analysis, tools like DeepCode combine concepts from static code analysis and machine learning to facilitate this kind of real-time code scanning. is starting to
Today’s plans for tomorrow’s AI coding tools
Over the past few years, several production-ready AI-assisted programming tools have gained traction in the software development market. One of the early examples of these tools, IntelliCode, was added to Microsoft Visual Studio in 2018 in hopes of providing programmers with recommendations when writing code. IntelliCode supports about 6 programming languages, including C++, JavaScript, and Python. It also provides a relatively narrow set of recommended types, such as those related to argument completion.
GitHub Copilot, debuting in 2021, is another tool trained by analyzing real application codebases using AI algorithms from OpenAI. Because of this, Copilot can make software coding suggestions in almost any language or framework, including code intended for functional programming. CodeWhisperer, Amazon’s version of AI-assisted development tools, is also intended to perform similar tasks. That is, suggest or auto-generate complete snippets of code for virtually any language or framework.
Copilot and CodeWhisperer, like similar AI-assisted development tools, are ready for real-world use. However, what they offer is just the beginning of what we think will emerge in the AI coding tools arena.
- Support for creating entire programs from scratch, not just program fragments.
- The ability to independently write code that is optimized for performance and security, rather than code that is simply executed.
- A means of working with an entire codebase, including codebases composed of multiple languages.
- Ability to guide developers through specialized coding operations, such as configuring infrastructure templates as code.
- Improved clarity around the licensing status of AI coding tools and our efforts to prevent abuse of open source code.
