4 ms·
> evolution of evolvability and then a seemingly unrelated subject: the evolution of robustness. Isn't there a an analogue to this in software engineering? Th
by smallnamespace 9y ago
> evolution of evolvability and then a seemingly unrelated subject: the evolution of robustness.
Isn't there a an analogue to this in software engineering?
There is an extremely large space of programs that produce the exactly same output on a given input, but we humans favor programs that we can read and understand. We also favor programs that are modular and composable, because bits of those programs tend to get reused to create new programs and are easier to write than new 'blob of code' programs.
One can view programs as memetic 'self-replicators', with a selection process dominated by the preferences of human readers and writers.
If we analyzed many dependency graphs between code modules, or a graph of function call usage between snippets, I bet you'd find that actual human-written programs have the same 'sparse' connectivity that you see, because maintainability implies writing code along sane API abstraction boundaries.
TL;DR evolutionary pressure might means nature naturally abstractions within genetic code
- Retric 9y agoThe mechanism for evolution is often the opposite of abstraction. Living things tend to make a copy of some really important bit of 'code' and then mutate that 'copy' rather than say losing the ability to form cell walls. On the other if a cell is making X then the new process can easily leverage the existence of that X when doing something new. Net result copy paste coding + dependency hell.