quote:Part of that approach is ever-escalating complexity. Evolutionary approaches generate complexity -- whenever creationists point to complexity, that is actually proof of evolution.
Very true. We have to make a conscious effort to avoid creating complexity. Good design keeps software simple and clean. We design software to allow additions - but we always hit added features that don’t work with that framework. Refactoring - rewriting parts of a software component to simplify it - is recognised as good practice.
In life we see the expected outcome of an iterated process adding features without that conscious effort, without foresight to make adding features easier, without refactoring even when it would be an obvious step. That is not what good software designers do. And for creationists that iterated process must be - in large part at least - God’s design process. It doesn’t make God look like a good designer.
My usual analogy would be the development of an application or suite. Features are added or modified to meet the customers demands (sometimes assumed, sometimes literal demands). As I said before, we try to anticipate the changes that might be wanted, but we often fail.
Because the changes build on the existing codebase the solutions are often not what you would have chosen given a clean-room design. They have to work within the existing framework. But on the other hand a full rewrite or replacement would be a lengthy and expensive project (and big software projects have a habit of getting out of control).
Cloning and hacking a routine from one project to another would be analogous to horizontal transfer. Cloning and hacking within an application would be like gene duplication. It’s not considered to be good practice - it’s quick and easy but unfortunately error-prone.
quote:Of course, on the software side you can always go back and completely rewrite it, whereas life does not have that option
But only because evolution is true and creationism is false. God wouldn’t have to iterate - God could do a clean-sheet design for every “kind”. If God chose to iterate he’d know exactly what changes he intended to make and perfectly prepare for them. If God chose not to do that, God could refactor to remove all problems. We do not do those things as often as we might wish to because it is impractical for us, even when we’re talking about software.
For small programs it can be easy. For major libraries or big applications it’s not at all. It would take years of effort to replace the software I work on with new feature-complete versions. And that’s years of work that won’t be spent on adding the new features we need.
I encountered Pascal at University (and FORTRAN, and even machine code). My first job was in the defence industry and while I even bought a book on Ada (I thought I might need it) we never used it (though we did use the older Coral 66). In my final project there I learned C - on the job, from an early printing of the 2nd Edition of Kernigan and Ritchie. (In a later job - outside defence - there had been a significant Ada project, but it was never released.).
C is still my main language, though I took a Java course (paid for by the EU) some years back and that’s a significant part of my work.