|The Robots Are Coming - AlphaCode Can Program!|
|Written by Mike James|
|Wednesday, 14 December 2022|
When we sit back and contemplate the replacement of "workers" by "automation", programmers are in a smugly safe position. After all we are the people doing the automation. We are coming for THEIR jobs. But, surprise, surprise - AI is coming for US!
We think programming is hard and creative and ... well an achievement of the human mind so grand that we are special. There is a certain amount of truth in this, but the sad fact is that there is a very large portion of programming endeavor that is as repetitive and unthinking as working on a production line. Any reasonably experienced programmer will know that much of our work is implementing the same stuff with slight variations.
Today's programmers are the masters of the boilerplate.
This, however, still isn't without some skill, but not quite as much as "full" programming mode. We seem to be very bad at noticing the repetitive tasks and even worse at automating them. For example, so many programmers are of the opinion that the correct way to do UI is to code it. This is crazy as a drag-and-drop editor can generate the code for you and keep you well away from it.
There is no question that code generation is a great idea but we seem to deliberately move away from it. Microsoft gave up on hidden code generation and invented XAML. The Android devs have scrapped the GUI editor that generated XML for a declarative approach. What can they be thinking!
Even with so much rote generation of boilerplate code, most programmers were and probably still are of the opinion that the loss of their particular jobs is a long way off. But it isn't and what has changed is the rise of the Large Language Model (LLM) like GPT3 and similar. These are such an important breakthroughs that they are also referred to as "foundational models", These are currently taking the internet by storm with their appearance as chatbots that actually seem to work.
They can also be put to use generating things that people describe. Given a text description of a graphic, the AI can generate something that looks right. Programs like Stable Diffusion are LLMs that have been extended to associate language with other things - descriptions become transformed into the things. These programs are currently threatening to make the work of the creative artists dry up and my guess is that you probably think that they had it coming to them. They should have learned some technical skills to remain relevant. This schadenfreude is to be short lived.
You may have heard about, or even tried, GitHub CoPilot - a foundational model which acts as your programming buddy. No threat there then as we could all do with an intelligent programming copilot. It isn't much more than an improvement to the way we use StackOverFlow and similar to find bits of code to paste, usually unchecked, untested and not understood, into our code. However the paradigm has more life in it that just finding code snippets.
AlphaCode is DeepMind's latest creation claims to be as good as a novice programmer at solving problems set as part of a competition. The results have just been published in Science:
To give you some idea of what has been achieved I can do no better than the abstract:
"Programming is a powerful and ubiquitous problem-solving tool. Systems that can assist programmers or even generate programs themselves could make programming more productive and accessible. Recent transformer-based neural network models show impressive code generation abilities yet still perform poorly on more complex tasks requiring problem-solving skills, such as competitive programming problems. Here, we introduce AlphaCode, a system for code generation that achieved an average ranking in the top 54.3% in simulated evaluations on recent programming competitions on the Codeforces platform. AlphaCode solves problems by generating millions of diverse programs using specially trained transformer-based networks and then filtering and clustering those programs to a maximum of just 10 submissions. This result marks the first time an artificial intelligence system has performed competitively in programming competitions."
This really doesn't mean too much until you see the type of problem being solved and how it was presented to AlphaCode. You can read the text description of the problem and the solution in the following diagram:
Notice that the text of the problem was fed into AlphaCode without any additions or helpful hints.
So what can we say about this?
The first thing to say is that competition problems are outliers. It is rare to find a programming task specified as precisely. It is also rare to find test code waiting to be used to validate the solution. In the real world things are messy and knowing you have got it right is much harder.
So its not as bad as it seems?
If only... The extrodinary sucess of the attention based foundantional models is a testiment to the fact that language encodes a great deal of the world's structure. Part of that structure is what we call programming and in so far as what we already have programmed generalizes to new programs we are all doomed. The only glimmer of hope is that such programs need specifications for what is produced and require checking for correctness. Requirements and to a lesser extent seem like good bets for future employment, "grunt programming" not so much. Where something truely new is needed - a Quicksort or a Fast Fourier Transform or indeed some new neural network archecture and the chances are a human will be needed but how many such undiscovered gems are there? How many truly inovative programmers are needed? About as many as there are at the moment - a mere handfull.
or email your comment to: firstname.lastname@example.org
|Last Updated ( Saturday, 25 February 2023 )|