[dropcap]An[/dropcap] MIT and Intel research team has developed an algorithm capable of creating algorithms. And before we start fantasizing about Skynet and other apocalyptic dystopias, all this really means is the ability for a machine to automate programming so that in turn a programmer can automate a wide range of tedious or repetitive tasks or, pushing it to its limit, that anyone can program simply by describing the tasks they want to perform.
The system, machine inferred code similarity (MISIM), learns what a piece of software intends to do by studying the structure of the code and analyzing syntactic differences of other codes with similar behavior.
The idea of computers capable of programming themselves from instructions given in natural language has been around for some time and has already been put into practice via several initiatives of development platforms or NCDP’s, under the umbrella of the so called No Code movement.
More and more companies, particularly startups with the capacity to design their systems from scratch, are developing structures based on code written by third parties or taken from repositories and platforms, which is assembled into pieces. Some claim that the corona-virus pandemic and the increase in distributed work have provided an incentive for the adoption of this type of platforms and tools. In June, Amazon launched its Honey-code platform, which allows the design and construction of applications by assembling modules. With the same idea, Salesforce has Lightning App Builder, Google has App Maker, Microsoft offers Flow and Power Apps, and we could also include page building tools such as WordPress, simple task automation tools such as IFTTT, and many more.
Are low-code or no-code platforms the future? Actually, such platforms have long existed. Like many people, I built my first web pages with visual tools like FrontPage or Dreamweaver that required practically no programming knowledge, which helped me understand much more about what was behind a web page or about the commands that supported certain features.
Critics say putting tools of this type in the hands of users who are unable to review the code they generate could lead to Frankenstein-type systems with parts that are very difficult to maintain, evolve or update, as well as potentially causing more security problems as a result of both the limited knowledge of those responsible and the possibility of vulnerabilities arising from the platform itself that could easily be exploited.
At the same time, others claim that such tools will assist developers in building and maintaining systems in environments that are increasingly complex and difficult for a single person to master, and that the role and responsibilities of today’s programmers will be limited to supervisory roles.
In any event, we are talking about placing the design and construction of systems into the hands of many more people, with all that this might entail in terms of potential for disruption, and everything indicates that, depending on the evolution of technology, the idea of describing a functionality in words or by means of diagrams to a machine so that it builds the necessary code from that description is just a matter of time. In other words, programmers as we know them will be out of a job if anyone can build a complex system by clicking menu choices: a conceptual leap that in my humble opinion seems unlikely for the time being.