Could a programmer write a program to write programs? In effect, making programmers around the world obsolete. Someone in the office today posted this question and it got us thinking, is it possible?
Let’s take a look at the very basics of making a program to see if we can work out the logistics involved.
A program needs a purpose, generally speaking. I don’t know many (useful) programs that that don’t have a purpose and if they didn’t then they wouldn’t be useful, would they? So we need a human being to say “Hey look, I am sick to death of not being able to blah blah blah”. Once the aim of the program has been worked out, it’s time to design it.
This is probably the most complicated part of the process from a computer’s point of view. They can’t think, they are mindless drones that do whatever you tell them. If an error occurs, it’s not because it failed to add 2 and 2 together properly, it’s because in the code there was an issue with something the programmer wrote. Some could argue that with debuggers and auto fillers in programs such as Visual Studio, the computer is doing a lot of the coding. But, all this does is find an error, it doesn’t fix it. To say this will never happen would be ignorant, because I’m sure at one point in the past people looked at computers and thought they wouldn’t be able to correct spelling mistakes, but now my phone does that (this can cause very awkward situations with the iPhone’s autocorrect though Let’s not get into that though!).
So if a computer can’t think, how can it design? Well, how do WE design? What happens in our brains that allow us to think of new things, what makes us like one thing over another? My theory (from a completely non professional or scientific background about the matter) is we take what we know, and use this information to change and alter other things that we know, thus creating something new. An analogy would be looking at a nail. You know its use is to pierce wood to stick things together. You also know that hitting something makes it move, well, the force is transferred to the object. With this knowledge, you can put these two pieces of information together to assume you can hit the nail and pierce the wood. Bam, you invented the concept of a hammer. So in theory, this could be applied to programs too, but don’t ask me exactly how to do this.
If a program were to build other programs, there would have to be mass amounts of information drilled into it to know what to make. Similar to outsourcing work to someone else, you need to transfer your knowledge to someone else completely, or accept whatever they produce.
The amount of information needed to be transferred to a computer for it to know what to make is unknown to me. I don’t even know if it is known to anyone. However, after time this amount of information could be reduced if the computer can learn from past experiences.
For the sake of programmers, I don’t think they would want to be out of a job. So the person who programs this would be shooting themselves in the foot. However, I am not a programmer, so there is no current need for me to worry. It’s only when a computer chooses to make a program to take over the world that I will start to panic.
So what do you all think? Is it possible, and do you like the idea of it (especially if you are a programmer yourself)?