Evolving programs: software is not so fragile
Reading: Software is Not Fragile, Langdon and Petke (2017), In: Bourgine, Collet & Parrend, P. (eds) First Complex Systems Digital Campus World E-Conference 2015.
I’ve always felt software is both the most malleable thing you can think of, and also the most fragile. We can bend it to our will, but a single bit flip, and it’s dead.
This paper finds that’s not exactly the case. At least for certain kinds of changes, if you can avoid a compiler error and if you can avoid a runtime failure.
They took source code written in C, C++, or CUDA, and made “human like” edits:
63% do not compile and 14% abort when run. However, most of the modified programs which compile and run normally produce exactly the same result as the original program source code. Indeed a few produce identical answers but are slightly faster.
The human like edits are: removing a line, duplicating a line, or copying a line (from the same source file). The software the tried includes a couple of bioinformatics tool (BWA), and vision processing code.
This is interesting if you are programmatically changing programmes, via search (via genetic programming or genetic algorithms, for example).