|
Programs writing programsWhen will we have a program that writes programs? Let's break this down into subquestions. a. When will we have a program that can do the job now done by coders? For non-programmers, what this means is: On a software project, some programmers are like architects, others are like foremen, and a third group are like carpenters or machinists. This latter group are known as coders. They are given a specific, detailed description of a piece of code that needs to be written, and their job is to take that description and write the actual code. (Just like a machinist can take a blueprint and make the required object.) When will we have software that can do this? b. When will we have a program that can substitute for the leader of a programming team? (The one referred to above as a foreman.) In other words, you give the program the assignment: write a word processor. You don't need to tell it what a word processor is, or how to proceed with the assignment. The program plans what needs to be done, writes descriptions of various pieces of code that need to be written, and gives the coders their assignments. When they are finished, it takes the code they have written and puts it all together to make the word processor. c. When will we have a program that invents a new kind of program? (Corresponding to the "architect" referred to above.) For example, you ask this program to produce a new kind of software, and it responds as follows:
And then it (the "architect" program) proceeds to write this program, making use of the "project leaders" and "coders" from parts a and b. When I say, "When will we have..." I am looking for answers that take into account the realities of writing software. What would be involved in writing a program that serves as a coder? How would that compare with writing Windows 2000? Would it be more complex? less? about the same? Is anyone working on such a project? Nanosystems was supposed to be a proof-of-concept exercise. Eric Drexler has demonstrated that it is possible for a human engineer to design machines with atoms. Unfortunately, this is not what needs to be demonstrated. The real proof-of-concept exercise would be to write an AI program that writes a better AI program that creates an automated engineering system that writes a book like Nanosystems. Or, as a first small step in that direction, to write a program that can take the place of a coder. |