Overview
Generative AI has taken the world by storm in the past year. OpenAI achieved undeniable success in reaching out to the mass audience with ChatGPT. The shift towards AI did not avoid software development. Many tools have been created that bring the chat experience to existing developer tools and IDEs, but there are also some that took a completely different route.
What is CodeMaker AI?
CodeMaker AI is a new developer tool that specializes in processing source code. The cornerstone idea of its design was to offer a tool that can focus on automation. This is reflected in the way users can interact with the tool as well as through the offered set of features.
Not only auto-completion
Engineers at CodeMaker AI ask themself the question if prompt engineering or auto-completion are the only user experiences that can be offered. If an engineer is faced with the task of implementing a certain functionality, is there a more efficient way of doing it than by auto-completion? And while CodeMaker AI still does support that experience its main focus was to allow users to perform tasks on entire source files or even source directories. Currently, the supported tasks are code or documentation generation. By simply triggering an action on the source file it is possible to automatically generate the content of the entire file, which is not limited by anything other than the file size. The file itself can contain exactly one definition for processing like function, type, or method, or hundreds of them. The tool is not constrained by the input file structure.
This experience introduces a certain tradeoff. The same as with humans, the model can not with 100% accuracy predict what is the user's intention unless it's strictly told what to do. This is why it required the introduction of the concept of context-aware code generation, the easiest way to explain it is that if a user requires a specific implementation of the created code, they need to provide relevant requirements as part of the code comment, and in result have the generated result match it as close as possible.
Since this technology is still in its infancy phase and will take probably a long time until it is perfected there is no claim that the code that is generated is actually in every case going to meet the user expectations, but this is why CodeMaker AI makes it as easy as possible to experiment and re-iterate on the generated implementation, by allowing to replace the code at any time. This makes the generated code more expendable, but on the other hand, the generation is way faster and cheaper than written at hand, so iterating on it may be an acceptable trade-off.
Contextual operations
The task-based operations are the primary way of interacting with the tool, but not the only one. It is possible to use prompts like comments to generate new source code. Those prompts are contextual and depending on the location within the file will result in different outcomes. To illustrate this idea in Java or C# programming languages the top-level element of a file needs to be a class (or struct in C# case). Providing a comment within an empty file will generate exactly that a valid code in the given context. Going one step deeper and placing a comment within the context of a class will result in the generation of a method, and finally placing the comment within the method body will result in the generation of statements of code.
Syntax autocorrection
One remarkable application of machine learning is the ability to correct natural language errors. Most of us are familiar with features in our text processors in which spelling or grammar errors can be highlighted with suggested options to correct them. Developers are familiar with similar capabilities of various Integrated Development Environments that would also highlight the syntax or semantic errors and allow users to manually choose the correct action.
The next step would be to offer the capability of automatically detecting and correcting syntax errors. This is exactly the feature that has been developed by CodeMaker AI, where any syntax errors will be automatically discovered and corrected. In its current state, this works best for statically typed programming languages, but in the future, it can generalized to a degree that it will be useful for virtually any programming language.
Conclusion
The recent developments in AI space offered the possibility of exploring different ways of integrating it within the landscape of developer tools and offering a completely new set of capabilities. This space hasn't been even fully discovered and what is being offered by the tools today is only a peak of the iceberg of the future capabilities.
Top comments (0)