Automated Software Programming System
An Automated Software Programming System is software programming system that is an automated system.
- Context:
- It can include a Software Code Generation System.
- …
- Example(s):
- one based on Llama Code.
- …
- Counter-Example(s):
- See: Automated Game Playing System.
References
2014
- (Marcus & Davis, 2014) ⇒ Gary Marcus, and Ernest Davis. (2014). “Do We Really Need to Learn to Code?”. The New Yorker, June 7, 2014
- But before we reach the era of self-programming computers, three fundamental obstacles must be overcome.
First, there is currently no method for describing what a piece of software should do that is both natural for people and usable by computers. Existing “formal specification languages” are way too complex for novices, and English itself is still way beyond machines. Programs like Siri have improved dramatically in recent years, and they can comprehend English in limited contexts. But they lack the precision required for building computer programs. When Siri hears “What Italian restaurants are around here?” she knows your location, and it’s fine that she only understands the words “Italian” and “restaurant.” But there is a world of difference between “Delete every file that has been copied” and “Copy every file that has been deleted.” For now, there is no reliable way to make a computer understand the difference between the two.
The second problem is that good programs aren’t just montages of existing code. DARPA’s MUSE tries to solve the programming problem with an intelligent version of Web search that automatically mines the massive libraries of online code that are now freely available, hunting for code that might sensibly be stitched together.
This might work in limited domains, but it is unlikely to work as a general solution. A good programmer doesn't just cut and paste snippets of code together (though that is part of the job); a good programmer understands, deeply, a problem that needs to be solved, and then creates an architecture for solving a problem]] that's never been solved before. It’s one thing to find relevant snippets, and another to ensure that they connect up right.
The third obstacle is that computers still have too little understanding of how the external world works, and therefore too little understanding of how the programs they create will actually work. Consider, for example, this seemingly simple, hypothetical programming task: “Add a feature to Google Maps that allows a user to place a simulated boat on a river and have it float downstream.” To do this, you need to know what a river is, what a boat is, and what it means for a boat to float downstream. Any human programmer knows that, but no computer system has the real-world understanding of an average human being. As Tom Dean, a researcher at Google, told us, “Programming is [challenging for artificial intelligence not because it requires concentration and attention to detail but because the path from the conception of what you want to accomplish to the realization of code that actually accomplishes it requires artistry, insight, and creativity as well as incredible mental dexterity.” …
… It’s certainly possible that machines may someday be able to program themselves, but in a generation in which even the nerdiest, most cloistered programmer in Silicon Valley continues to have a far better intuitive sense of the world than any computer does, that day still feels a long way away.
- But before we reach the era of self-programming computers, three fundamental obstacles must be overcome.