Abstract
The established approach in genetic programming (GP) involves the definition of functions and terminals appropriate to the problem at hand, after which evolution of expressions using these definitions takes place. We have recently developed a system, dubbed FINCH (Fertile Darwinian Bytecode Harvester), to evolutionarily improve actual, extant software, which was not intentionally written for the purpose of serving as a GP representation in particular, nor for evolution in general. This is in contrast to existing work that uses restricted subsets of the Java bytecode instruction set as a representation language for individuals in genetic programming. The ability to evolve Java programs will hopefully lead to a valuable new tool in the software engineer’s toolkit.
Keywords
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Arcuri, Andrea (2009). Automatic Software Generation and Improvement Through Search Based Techniques. PhD thesis, University of Birmingham, Birmingham, UK.
Brameier, Markus and Banzhaf, Wolfgang (2007). Linear Genetic Programming. Number XVI in Genetic and Evolutionary Computation. Springer.
Bruneton, Eric, Lenglet, Romain, and Coupaye, Thierry (2002). ASM: A code manipulation tool to implement adaptable systems (Un outil de manipulation de code pour la réalisation de systèmes adaptables). In Adaptable and Extensible Component Systems (Systèmes à Composants Adaptables et Extensibles) October 17–18, 2002, Grenoble, France, pages 184–195.
Engel, Joshua (1999). Programming for the JavaTM Virtual Machine. Addison-Wesley, Reading, MA, USA.
Gosling, James, Joy, Bill, Steele, Guy, and Bracha, Gilad (2005). The JavaTM Language Specification. The JavaTM Series. Addison-Wesley, Boston, MA, USA, third edition.
Harman, Mark (2010). Automated patching techniques: The fix is in. Communications of the ACM, 53(5):108.
Kotzmann, Thomas, Wimmer, Christian, Mössenböck, Hanspeter, Rodriguez, Thomas, Russell, Kenneth, and Cox, David (2008). Design of the Java HotSpotTM client compiler for Java 6. ACM Transactions on Architecture and Code Optimization, 5(1):7:1–32.
Koza, John R. (1992). Genetic Programming: On the Programming of Computers by Means of Natural Selection. MIT Press, Cambridge, MA, USA.
Langdon, W. B. and Poli, R. (2006). The halting probability in von Neumann architectures. In Collet, Pierre, Tomassini, Marco, Ebner, Marc, Gustafson, Steven, and Ekárt, Anikó, editors, Proceedings of the 9th European Conference on Genetic Programming, volume 3905 of Lecture Notes in Computer Science, pages 225–237, Budapest, Hungary. Springer.
Lindholm, Tim and Yellin, Frank (1999). The JavaTM Virtual Machine Specification. The JavaTM Series. Addison-Wesley, Boston, MA, USA, second edition.
Miecznikowski, Jerome and Hendren, Laurie (2002). Decompiling Java bytecode: Problems, traps and pitfalls. In Horspool, R. Nigel, editor, Compiler Construction: 11th International Conference, CC 2002, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2002, Grenoble, France, April 8–12, 2002, volume 2304 of Lecture Notes in Computer Science, pages 111–127, Berlin/Heidelberg. Springer-Verlag.
Mizoguchi, Jun’ichi, Hemmi, Hitoshi, and Shimohara, Katsunori (1994). Production genetic algorithms for automated hardware design through an evolutionary process. In Proceedings of the First IEEE Conference on Evolutionary Computation, ICEC’94, volume 2, pages 661–664.
Nakamura, Yukihiro, Oguri, Kiyoshi, and Nagoya, Akira (1991). Synthesis from pure behavioral descriptions. In Camposano, Raul and Wolf, Wayne Hendrix, editors, High-Level VLSI Synthesis, pages 205–229. Kluwer, Norwell, MA, USA.
Northrop, Linda et al. (2006). Ultra-Large-Scale Systems: The Software Challenge of the Future. Carnegie Mellon University, Pittsburgh, PA, USA.
O’Neill, Michael and Ryan, Conor (2003). Grammatical Evolution: Evolutionary Automatic Programming in a Arbitrary Language, volume 4 of Genetic programming. Kluwer Academic Publishers.
Orlov, Michael and Sipper, Moshe (2009). Genetic programming in the wild: Evolving unrestricted bytecode. In Raidl,G¨unther et al., editors, Proceedings of the 11th Annual Conference on Genetic and Evolutionary Computation, July 8–12, 2009, Montréal Québec, Canada, pages 1043–1050, New York, NY, USA. ACM Press.
Orlov, Michael and Sipper, Moshe (2010). Flight of the FINCH through the Java wilderness. IEEE Transactions on Evolutionary Computation. In press.
Poli, Riccardo, Langdon, William B., and McPhee, Nicholas Freitag (2008). A field guide to genetic programming. Published via http://lulu.com and freely available at http://www.gp-field-guide.org.uk. (With contributions by J. R. Koza).
Spector, Lee and Robinson, Alan (2002). Genetic programming and autoconstructive evolution with the Push programming language. Genetic Programming and Evolvable Machines, 3(1):7–40.
Turing, Alan Mathison (1950). Computing machinery and intelligence. Mind, 59(236):433–460.
Wong, Man Leung and Leung, Kwong Sak (2000). Data Mining Using Grammar Based Genetic Programming and Applications, volume 3 of Genetic Programming. Kluwer, Norwell, MA, USA.
Woodward, John R. (2003). Evolving Turing complete representations. In Sarker, Ruhul et al., editors, The 2003 Congress on Evolutionary Computation, CEC 2003, Canberra, Australia, 8–12 December, 2003, volume 2, pages 830–837. IEEE Press.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer Science+Business Media, LLC
About this chapter
Cite this chapter
Orlov, M., Sipper, M. (2011). Finch: A System for Evolving Java (Bytecode). In: Riolo, R., McConaghy, T., Vladislavleva, E. (eds) Genetic Programming Theory and Practice VIII. Genetic and Evolutionary Computation, vol 8. Springer, New York, NY. https://doi.org/10.1007/978-1-4419-7747-2_1
Download citation
DOI: https://doi.org/10.1007/978-1-4419-7747-2_1
Published:
Publisher Name: Springer, New York, NY
Print ISBN: 978-1-4419-7746-5
Online ISBN: 978-1-4419-7747-2
eBook Packages: Computer ScienceComputer Science (R0)