You were too pessimistic! Automatic programming, a.k.a. program synthesis, has been a thing since the early days of AI and computer science, for example the idea of deductive program synthesis, where a program is generated wholesale from a complete specification in a formal language that is not a computer language goes at least as back as Alonzo Church himself, in 1957:
Much work has been done since then and inductive program synthesis from incomplete specifications consisting of input/output examples (a form of machine learning) has been possible for quite some time. This is the second time this week I point to the report by Gulwani et al for a modern overview (of both kinds):
Rather than Copilot being the "tip of the spear", it is really a step back, a system that can only generate code but not check its correctness, unlike pretty much every program synthesis system since forever. Although this may actually be an advantage for its commercial application (since it makes it easier to match expectations of the system's performance) it is not really any indication of progress, in any way, shape or form. In truth, Copilot is famous today because it is supported by a large company like Microsoft and because earlier work is not well-known by most people who get their AI knews from blogs and podcasts, who are also not very well aware of the history of the field. But, "tip of the spear"? Oh, no. Unless it's a very blunt, toy spear, more like a tech demo of a spear.
And this is by no means restricted to program synthesis, and Copilot. For example, the first self-driving car to drive on a stretch of real road, with real traffic, without human intervention, was Ernst Dickmann's 1995 robot car:
Again: 1995. And yet, fully autonomous self-driving cars are still not here. The revolution hasn't happened and progress has only crawled marginally forward.
Dickmann's car does Autobahn (~US freeway) traffic under controlled conditions. It doesn't need to understand junctions or traffic signals, there aren't any. It doesn't need to understand pedestrians, there aren't any. It doesn't need to understand bicycles, there aren't any. What happens if things go wrong? In practice a human takes the wheel, this is not a system capable of safely leaving traffic when it can't cope, so it was never demonstrated without what we'd today call a "safety driver". That's not autonomous self-driving cars minus a little bit more research, it's improved Cruise Control.
Waymo has taxi service. It's losing money doing that, and it's only in a few select places, but it's doing autonomous journeys, with no "safety driver" on city streets. It understands junctions, and traffic signals, pedestrians and cyclists, because on the city streets those things are commonplace. It's doing the hard part.
I don't think that constitutes "crawled marginally forward", it's a considerable advance.
That's right, this is your field isn't it? Cheers!
Gosh, the robot car work was incredible, I can't believe I've never heard of it before!
- - - -
Copilot isn't cutting edge but it's significance is just that it's a mass market tool. It will be interesting to see how well it does, and whether users find it worthwhile overall after a couple of years.
Will it be improved to the point where it starts to compete with its users?
I've asked other programmers before, if you could write a program that replaced you would you do it?
(One of the reasons I like Schmidhuber is that his goal, since early on, is to "Create an automatic scientist, and then retire.")
To me the ultimate effect of programming is to obviate the programmer.
Ah, my field is Inductive Logic Programming - a sub-sub-sub-sub field of program synthesis. But I need to know the basics!
I think Copilot can be used very effectively, as long as its capabilities and their limitations are communicated clearly. For instance, I think it can make a great boilerplate generator, as long as users stick to short code snippets.
Well, I don't know about replacing programmers. I think that's Sci-Fi, for the time being, and for a while longer still. What I'm more interested in is creating tools to help programmers do their job. Copilot does that already, btw, I'm not dissing it. I'm just pointing out it doesn't represent a sudden shift in capabilities, to be clear.
>> (One of the reasons I like Schmidhuber is that his goal, since early on, is to "Create an automatic scientist, and then retire.")
I didn't know Schmidhuber had said that. My thesis advisor, Stephen Muggleton, was part of an interdisciplinary team who created a robot scientist that can develop its own theories and then choose, and run, the experiments to prove them:
Another one of those things that are not well-known, I guess. I wasn't involved with that, btw, but I think recent advances could make for a much more powerful system. I am considering something similar as a research project, post-doc.
Good lord! Sometimes I think the only thing that has prevented the techno-singularity happening already is the tendency of humanity to strenuously ignore prior art.
A wise old inventor told me, early in my career, that “people always significantly overestimate the rate of progress in the short run, and greatly underestimate it in the long run.”
Text conditional image generation is still a fairly new thing, we don’t know what its upper limits will prove to be. Also, it seems likely that, whatever level of capability they reach, humans will learn how to use them effectively as tools for their own purposes. Some people might use them for quickly preflighting ideas, others to create boilerplate, some people may use them to speed up their workflow or scale up productivity. People didn’t know what all the use cases for personal computers would be when they were introduced in the mid-70’s, or what capabilities they would possess decades later.
Unfortunately those details are the point I'm trying to make, and I'm a huge Niven fan so I'm not going to spoil Ringworld, but it ties in with the (ultimately metaphysical) question, "What is good?"
https://en.wikipedia.org/wiki/Program_synthesis#Origin
Much work has been done since then and inductive program synthesis from incomplete specifications consisting of input/output examples (a form of machine learning) has been possible for quite some time. This is the second time this week I point to the report by Gulwani et al for a modern overview (of both kinds):
Program Synthesis
https://www.semanticscholar.org/paper/Program-Synthesis-Gulw...
Rather than Copilot being the "tip of the spear", it is really a step back, a system that can only generate code but not check its correctness, unlike pretty much every program synthesis system since forever. Although this may actually be an advantage for its commercial application (since it makes it easier to match expectations of the system's performance) it is not really any indication of progress, in any way, shape or form. In truth, Copilot is famous today because it is supported by a large company like Microsoft and because earlier work is not well-known by most people who get their AI knews from blogs and podcasts, who are also not very well aware of the history of the field. But, "tip of the spear"? Oh, no. Unless it's a very blunt, toy spear, more like a tech demo of a spear.
And this is by no means restricted to program synthesis, and Copilot. For example, the first self-driving car to drive on a stretch of real road, with real traffic, without human intervention, was Ernst Dickmann's 1995 robot car:
https://people.idsia.ch/~juergen/robotcars.html
Again: 1995. And yet, fully autonomous self-driving cars are still not here. The revolution hasn't happened and progress has only crawled marginally forward.