The idea of automatic program writing was suggested by the creators of the first computers. The first step towards automation was the creation of assembler languages in the 1940s and 1950s. Assemblers translated the slightly more human-understandable assembly code into machine code, which greatly simplified the programming process. Later, more and more high-level languages emerged that allowed to describe the tasks to be solved with instructions similar to natural language.
With the development of machine learning in recent years, new opportunities have emerged to automate the development process, including autocompletion and code generation based on natural language. One of the first such examples was the Kite project, which actively developed from 2014 to 2021 as a "smart" and completely free autocomplete code. Kite indexed and analyzed the project's program code, offering more relevant cues right in the development environment. Kite's mechanics influenced GitHub Copilot, Tabnine, IntelliCode, and Codeium, tools used in popular development environments today.
In 2023, ChatGPT turned out to be the most prominent example of an interface for analyzing and generating program code and other tasks related to dialog and autocomplete mechanics. Generative tools allow generating rather large code fragments, as well as testing, refactoring, and transpiling – translating from one language to another. As a result, developers save time on routine tasks, and focus on more complex cases, such as application architecture.
In our opinion, generative tools have the potential to completely change the approach to programming. In this article we will consider several key examples of such tools from various fields of development. In this publication, we will focus mainly on those tools that turn various GPT models into developer-friendly solutions.
High-level project code generation
Before we start working on a project in the IDE, we can create a blueprint based on existing information. For example, we can describe ideas as a prompt for an AI tool, use a ready-made design, or adapt an existing design.
Generation via prompt. Pico, Zazzani, Contember and Insyte generate simple applications and websites by text description. Dreamsands allows you to refine the description for each individual block. AI Starter offers a ready-to-use web server wrapper where you can quickly edit MVPs based on text descriptions – this way you can work not only with the frontend, but also with the backend.
Adapting applications for other platforms and languages. If you already have a project in one language, you can use generative tools to convert code from one language to another. For this purpose, you can use both the tools in the IDE and a special tool AI Code Translator.
IDE assistants based on large language models
IDE assistants are tools based on machine learning technologies that offer automatic code addition and generation, code explanation and commenting, and other useful features directly within development environments such as Visual Studio Code or JetBrains products.
GitHub Copilot uses machine learning technology to automatically generate code. The tool was developed jointly by the GitHub (Microsoft) team and OpenAI, and allows programmers to quickly and efficiently create new code or augment existing code.
GitHub Copilot can write functions, classes, methods, write tests, explanatory comments and documentation. A distinctive feature of Copilot is that the tool is trained in all the languages that are present in the GitHub public repositories and does an excellent job of generating code snippets and sentences based on the context of the written code.
Tabnine is an autocomplete code tool with support for 50 programming languages. It is compatible with popular development environments: Visual Studio Code, IntelliJ IDEA and PyCharm. Tabnine team pays special attention to security issues: the tool is available only to project members, program code and other data are not shared for learning models other than those used in the project.
Bito and Refact are currently two largely interchangeable tools for writing and refactoring program code, creating tests, explaining and commenting code, and checking security. The tools use ChatGPT under the hood, but bring convenient code manipulation mechanics inside the IDE. Bito works through extensions, integrates with Visual Studio Code and JetBrains products, Bito is embedded in the same applications and has an extension for Google Chrome as well as a terminal CLI.
Replit Ghostwriter is an online Replit tool that combines code augmentation and generation, code explanation, correction and debugging, as well as ChatGPT-like help chat. The tool is able to refactor the code for different tasks. For example, you can optimize the program for fast execution, make the program text easier to read or rewrite the code from one programming language to another to achieve execution in a new environment or use the language that best suits the skills of the team.
The tool only works inside its IDE – you will have to spend some resources to learn a new tool. However, for those who are new to development it is a great solution to learn how to write code in practice without installing additional programs. Read more about Replit in our publication Developing in the Cloud.
AI-driven solutions in NoCode
In the NoCode world of developing process improvement and automation, artificial intelligence is also actively used for.
One example is AI by Zapier, which provides a number of AI-based applications such as OpenAI API, ChatGPT, Mem, Seamless AI, Jasper, Leap AI, AccurAI and Brain Pod AI. The tool allows you to integrate artificial intelligence into NoCode processes without having to develop your own code – you can use ready-made templates to quickly automate integrations and generate messages. In addition, blocks are available for working with text, such as sending messages and clustering input messages by their content.
Also worth looking at projects in beta, such as Debuild and Transformify Automate. They offer conversion of user prompts into a chain of NoCode blocks, which can be executed after Flow generation. You can use these tools to perform various file operations, including text and image processing.
Another interesting approach is Delineate, which uses artificial intelligence to create NoCode applications based on processing and analyzing big data in machine learning (ML). Finally, the InteraxAI platform allows the creation of embedded AI widgets using NoCode mechanics, which extends the possibilities of creating AI applications.
Testing, debugging and security
In addition to tasks directly related to writing program code, a significant portion of resources is spent on auxiliary tasks such as writing and running tests, debugging code, and searching for vulnerabilities. These tasks can also be accomplished with new AI-driven tools.
For example, Codium analyzes code and offers options for writing both unit tests and non-trivial test scenarios. Like Bito and Refact, Codium integrates with popular IDEs such as Visual Studio Code and JetBrains products. Jam, in turn, collects information about the conditions of bugs in web applications and offers tools for active debugging.
In addition, there are specialized tools, such as Greip, which allows you to search for vulnerabilities related to fraud. The tool helps detect and prevent various types of fraud on a website or in an application.
In the development of software projects, not only the code plays an important role, but also the documentation, which can be presented both as string comments within the code and in separate directories with documents. In this context, the use of AI tools can significantly improve code understanding and support.
One such tool is DocuWriter, which generates structured documentation based on source code even when internal comments are not available. This paid tool offers two types of subscriptions and will help create neat documentation that meets project requirements.
Another useful tool is Doxygen, which provides free documentation generation based on the source code, and extracts information from comments inserted into the code. Because it generates documentation based on annotations in the code, Doxygen makes it easy to keep it consistent with the source code. The tool allows you to create documentation as online manuals (in HTML), offline manuals (in LaTeX) and Unix manual pages. Doxygen is primarily C++-oriented, but also supports PHP, Java, Python, and other programming languages.
Accelerating technical customer support
When a project is already available to customers, an important aspect of interacting with them is technical support. There are also AI tools and solutions for this that help improve the quality of service.
One such tool is Bubbly, which provides technical support with personalized onboarding and keyword extraction from customer tickets.
Chatbots are also widely used to automatically respond to customer requests and improve service. There are various platforms and tools, such as PageLines, Zipchat, Dialoq, SupportGuy, which so far just add ChatGPT to the mechanics of the usual assistant popup window on the site. Cody, Mottle and WebWhiz, Chatbase, Fini and ChatThing are positioned to be smarter AI assistants that learn from your team's business processes and customer specifics. Some of these tools, such as Cody, Mottle and WebWhiz, learn from business processes and customer specifics using context from uploaded documents or project information. This creates smarter AI assistants that can provide useful answers to customer questions, generate ideas and suggest solutions to current problems.
The training context can also be built on uploaded PDF and DOC files with a company description (Humata) or on links to documentation or the site itself (SiteQuied AI). there are specialized models: works with sites, focuses on document files) and other information about the project. Such systems help both clients and the team itself: they answer questions, generate ideas and options to solve current problems. Kili supports the largest number of information sources in an organized representation.
Using AI-driven tools increases development efficiency, reduces labor costs, and improves code quality. The tools give programmers the ability to quickly generate new code, automate tasks, test and secure, and improve documentation and customer service.
In the future, we plan to take a closer look at the individual categories of AI-driven tools not only for development, but also for the development of projects in general. Regularly updated compilations of AI-driven tools, grouped by category, can be found at the following resources: