A rchive Date
[ 19-08-2002 ]
Category
[ Information Technologies ]
sub-Categoy
[ Computers ]
|
[http://www.pcmag.com/article2/0,4149,429437,00.asp
The Programming Gene
By Steve Lohr
September 3, 2002
Just a few years ago, John Backus, who led the IBM team that created FORTRAN in the 1950s, responded to the question of whether there was some programming idea, however futuristic, that he found intriguing. Backus-long retired from IBM's research labs - replied, "Well, I always thought it would be a neat idea to just grow computer programs and then kill off the ones you don't want. But I suppose that would be impractical."
What Backus described as a fantasy is a thumbnail definition of genetic programming, a hot field in computer science today. The relentless march of Moore's Law continues to make what seemed impossible suddenly within reach - all that new computing firepower that clever software can exploit.
But genetic programming is also perhaps the most striking example of another trend in software: Increasingly, programming is borrowing ideas from biology.
Intentional programming will move communication with the computer far closer to human terms.
There are other loosely related research projects-aspect-oriented programming, intentional programming, autonomic computing, and more. Most do not go as far as genetic programming, which mimics the biological process, though computing purists counter that all of biology is merely an elaborate series of computations.
Yet all these projects take a conceptual page from biology: the principles of evolution and of understanding complexity by breaking it down in new ways. This is no small matter, as Frederick P. Brooks, Jr., observed in The Mythical Man-Month, his software-engineering classic published in 1975: "Complexity is the business we are in, and complexity is what limits us."
New tools are the aim of research intended to help programmers overcome some of the limitations of complexity, a problem magnified by the technical diversity of Internet computing. Some of these tools are moving into the marketplace now, and others are pure research efforts, but they all share the goals that software designers have pursued since the FORTRAN days-making code more reliable, powerful, and usable by professionals and sometimes even by rank-and-file users.
Refining the Code
Aspect-oriented programming is a cutting-edge tool just entering commercial use in complex financial-transaction software.
In essence, aspect-oriented programming is a refinement of object technology, in which programming objects are classified and arranged into hierarchies. Object-oriented programming is powerful, but in the words of Gregor Kiczales, a computer scientist at the University of British Columbia and an aspect-oriented programming expert, "You can't put a complex thing into a hierarchy; some things don't fit."
With aspect-oriented programming, you can write a few lines of code so that updates and changes are automatically scattered throughout a program. Kiczales does this with AspectJ, an aspect-oriented extension to Java, and he heads an AspectJ project at PARC, where he is also a principal scientist.
With his intentional-programming research, Charles Simonyi, the Xerox PARC alumnus who brought his graphical text-editing ideas to Microsoft to create Word, is aiming still higher. Simonyi argues that progress in software is held back because good ideas - the intentions of the programmer or end user - are locked in the confining vehicles of programming languages.
His perspective on programming echoes the new thinking in evolutionary biology, which asserts that the gene rather than the organism (whether human or worker bee) is the real entity engaged in the Darwinian competition.
Software Ecology
The software world, according to Simonyi, would benefit enormously if it were understood and engineered in the same way. He insists that software evolution is hobbled because major new programming languages-C, C++, and Java, for example-have tended to emerge only at ten-year intervals. "The idea is to create a new software ecology, where ideas and programming language features can compete, freed from the fixed-language paradigm," Simonyi says.
Intentional software, in theory, would provide a series of tools and a framework in which engineers, businesspeople, and graphic artists would state their problems, and then transformer programs - some written by human programmers and some automatically generated - would produce machine code that a computer can process.
If this is achievable, intentional programming will move communication with the computer far closer to human terms. Skeptics abound, but Simonyi says he hopes to have a working prototype of an intentional-programming workbench in two years.
Genetic programming, the realization of the FORTRAN creator's fond wish, is tantalizing in its conceptual simplicity but daunting in its appetite for computing power. In genetic programming, the programmer describes the goal and creates a primordial soup of programs, which then evolve toward a solution. This is still a research project, requiring up to 1,000 microprocessors lashed together in parallel clusters. But genetic programming has been used to tackle problems such as designing sophisticated circuits. "Design is the big area where this kind of evolutionary computing seems to shine," says John Koza, a computer scientist at Stanford University.
Besides, if history and Moore's Law hold true, genetic-style programming will be moving from the computer lab to the desktop PC before too long.
Steve Lohr is an New York Times technology reporter and author of GoTo, a history of computer programming.
World Fact Book (CIA)]
|