“With machine programming, we are creating software that then creates its own software.”- Justin Gottschlich, Founder of Machine Programming Research at Intel Labs
Recently, at the Intel Labs 2020 event, Justin Gottschlich, the Principal Scientist and director/founder of Machine Programming Research at Intel Labs unveiled ControlFlag, which is a machine programming research system that can autonomously detect errors in code.
ControlFlag is a self-supervised system that can be used as a powerful productivity tool to assist software developers with the labour-intensive task of debugging. According to the developers, during preliminary tests, ControlFlag trained and learned novel defects on over 1 billion unlabeled lines of production-quality code.
According to a blog post, researchers at Intel has begun assessing this tool internally in order to detect bugs in its own software as well as firmware product development. It has also acted as a key element of Intel’s Rapid Analysis for the Developers project that intends to accelerate the velocity by providing expert assistance.
Why Machine Programming
The principal scientist explained that machine programming is about the automation of software development. The reason why machine programming came about is that there is an emergence of heterogeneous hardware, that it no longer was going to be just the CPU. It has now evolved into GPU, FPGA, ASICS and so on.
Also, the current mechanism for developing software cannot be considered as a tenable approach to solving this heterogeneous hardware explosion. This is why to tackle the heterogeneous problem, the researchers at Intel Labs came up with three principles that can help perform machine programming. The three core principles include intention, invention and adaptation.
ControlFlag is a powerful new self-supervised system that could dramatically lessen the time as well as money that are required to evaluate and debug code. He explained that software developers spend approximately 50% of their time debugging codes. But, with this new tool, programmers now can spend more time in real work, such as generating creative and new ideas to be machined and less time in debugging the codes.
Importance of ControlFlag
In a report called Reversible Debugging Software by the University of Cambridge, it has been estimated that the global cost of software development is $1.25 trillion and the total estimated cost of debugging codes including wages and overheads is $312 billion per year.
In the current situation, heterogeneous architectures play a great role among organisations for software development. In order to manage the silos of data, developers have been using multi-processors, and in result, the software needed to maintain these systems frequently becomes complex. This ultimately leads to two serious problems. One is the higher likelihood of bugs in the codes, and the other is the lack of experts who can efficiently program across a diverse set of hardware.
In such cases, ControlFlag can help in alleviating this issue by automating some parts of software development including testing, monitoring and debugging. The system would not only facilitate the developers to do their tasks more efficiently as well as free up more time for creativity, but also it would help to make it cost-effective.
Also, one of the key benefits of ControlFlag’s unsupervised approach to pattern recognition is the ability to adapt to a developer’s style. ControlFlag also has the ability to identify stylistic variations in a programming language.
How ControlFlag Works
The bug detection capabilities of ControlFlag are enabled by machine programming. Machine programming is a combination of machine learning, formal methods, programming languages, compilers and computer systems.
The self-supervised system specifically operates through a capability known as anomaly detection. The tool learns from verified examples to detect normal coding patterns, identifying anomalies in code that are likely to cause a bug. One of the interesting facts is that ControlFlag can detect these anomalies regardless of any programming language.
As per the blog post, ControlFlag learns to identify and tag these stylistic choices and can customise error identification and solution recommendations based on its insights. This, in turn, minimises ControlFlag’s characterisations of code in error that may simply be a stylistic deviation between two developer teams.