Genetic Programming – Programming a ‘Programmer’

genetic engineering

Computer software is also a kind of unique engineering material. Unlike engineering materials of electrical or mechanical engineering in which there are models and simulations to test, modify and make the final design better, software itself – the final product is ready to be tested and improved. This specialty of software makes it easier to optimize it for better results.

Genetic programming is writing an automated “programmer” which can understand and manipulate source code to optimize it, remove bugs and make it work more efficiently. The automated programmer uses techniques like trial and error to check whether the new code is better than the older one. The software can swap, delete and add new lines to the code to make it work how it is supposed to work. Each change made in the existing source code is in accordance with some standard. The basic purpose of genetic programming is to meet that standard. This technique can sometimes create huge differences in performance by just swapping 2 or 3 lines of code or adding or deleting even a single line of code.

The main advantage of this technique is that it speeds up the optimization process as the trivial ‘trial and error’ technique could take days for a programmer to check which code is the most optimized one. Even if he/she doesn’t go with the trial and error technique, the optimization process can be tiresome  and time consuming. Other then optimization, such programs can also find and fix bugs in code. One such example was seen in 2009 when an automated “programmer” built by the University of New Mexico and University of Virginia fixed 55 out of 105 bugs from different kinds of software. Recent research in the last couple of years has shown more of what this technique can offer. One research project in UCL England demonstrated a software that can fasten a code as complex as 50,000 lines by 70 times.

Analyzing this development in the field of computer sciences, it can be said that it is one more step forward towards automated engineering. The task of a programmer will now be performed by an automated “programmer” programmed by another programmer. If a software along with it’s core functionality, implements an optimizer and bug finder within itself, the software can be termed as ‘self healing‘ and evolutionary. Programs can be written, which can evolve previously written programs according to new standards or for different environments.

It is said and believed that most of the computer inventions are inspired by nature. The discovery and development of genetic engineering adds more weight to the above statement as it replicates the idea of human evolution and betterment. Hopefully, the virtues and benefits of this field of computer science will be heavily experienced over the years.

Sharing is caring !Share on FacebookTweet about this on TwitterShare on Google+Pin on PinterestShare on TumblrPrint this pageEmail this to someone

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>