The home of the haikulator



My Stand-up & gigs
The Coding Craftsman

The Musical!
Incredible Productions


Previous Posts

What a Malarkey I arrived at the gig last night, h...
Let's blog again A comedic colleague has just star...
A lot has happened since my last blog entry. Well,...
Another mammoth post I reckon Despite advising p...
Too busy to be blogging A friend of mine, who will...
Fair play After about 3 years of asking for it, my...
2048, a webspace odyssey As my last post was my 21...
Post 1024 - that's 210 I still have a general disd...
Dawn of the deed Well, I just did a gig and did so...
Wouldn't it be loverly? All this talk of being nic...

Blog Archives

October 2001
November 2001
December 2001
January 2002
February 2002
March 2002
April 2002
May 2002
June 2002
July 2002
August 2002
September 2002
October 2002
November 2002
December 2002
January 2003
February 2003
March 2003
April 2003
May 2003
June 2003
July 2003
August 2003
September 2003
October 2003
November 2003
December 2003
January 2004
February 2004
March 2004
April 2004
May 2004
June 2004
July 2004
August 2004
September 2004
October 2004
November 2004
December 2004
January 2005
February 2005
March 2005
April 2005
May 2005
June 2005
July 2005
August 2005
September 2005
November 2005
December 2005
January 2006
February 2006
March 2006
April 2006
May 2006
June 2006
July 2006
August 2006
September 2006
October 2006
November 2006
December 2006
January 2007
February 2007
March 2007
April 2007
May 2007
June 2007
July 2007
August 2007
September 2007
October 2007
November 2007
December 2007
January 2008
February 2008
March 2008
April 2008
May 2008
June 2008
July 2008
August 2008
September 2008
October 2008
November 2008
December 2008
January 2009
March 2009
April 2009
May 2009
August 2009
September 2009
January 2010
March 2010
April 2010
May 2010
June 2010
July 2010
August 2010
September 2010
October 2010
November 2010
December 2010
January 2011
February 2011
March 2011
April 2011
May 2011
June 2011
July 2011
August 2011
October 2011
December 2011
February 2012
March 2012
April 2012
May 2012
June 2012
July 2012
March 2013
April 2013
May 2013
June 2013
July 2013
August 2013
September 2013
October 2013
December 2013
January 2014
February 2014
March 2014
May 2014
July 2014
January 2015
February 2015
March 2015
April 2015
May 2015
June 2015
July 2015
August 2015
January 2016
February 2016
March 2016
April 2016
May 2016
July 2016
August 2017
January 2018
August 2018
September 2018

Global Domination

Locations of visitors to this page

Friday, January 27

A geeky post
I was watching a BBC2 programme last night on the subject of Darwin's theory of evolution and how there are groups who propose that it is totally inadequate. These groups are motivated by religious belief. However, they have used scientific methods (whether they've used them correctly is not necessarily relevant) to debunk the idea that evolution is a theory which actually explains the development of life on our planet. Darwin himself pointed out the hole in his theory. If it can be shown that some complex entity could not possibly have developed piecemeal, then it can't have evolved via a series of small mutations. Evolution totally relies on these things:
  • Random mutation
  • The ability of a mutated creature to survive
  • The natural selection of this mutated version, therefore...
  • The increased fitness of this mutation such that it becomes the dominant form (or at least a part of the ancestry of the dominant form).
  • No big changes
Okay, so maybe I've no idea exactly how evolution works, but I think that's a fairly important series of pre-requisites for evolution as Darwin described it.

The arguments that the creationists - sorry, "Intelligent Design"ists put forward is that the criteria for evolution are simply not all met in nature. One argument they suggest is that random mutation is not possible - mathematically. This is probably nonsense, especially since there are clear examples in nature of species with common ancestry where some mutations are more advanced than others. The creationists point out that it's perfectly reasonable that some adaptation occurs, but not at the scale of an entire organism having evolved from something much much simpler. The second argument is the interesting one. It uses Darwin's own theoretical hole - can we find something so complex that it cannot have evolved in small stages? The creationists claim to have found a creature whose motor mechanism is reliant on 50 individual parts, which are so inter-reliant that they would have been useless had they evolved from 49 parts, or whatever. This idea is called irreducable complexity.

While the pro-evolution creationist-debunkers (i.e. the people with the counter-arguments to the counter-arguments) have been able to prove the flawed maths behind the probability argument, and have been able to demonstrate that there are subsets of the 50-element motor function "machine" of the supposedly irreducably complex creature that can work together, this debate over creation in total vs small incremental, fully viable, steps is still of great interest. I don't think it has been entirely resolved. One of the hardest things to explain, for me, is the fact that very different creatures, from supposedly very different families, seem to agree on things like "where an eye goes" or how a joint works. Or even the existence of joints. However, I can't believe in an intelligent designer or creator, so I'll have to believe in evolution. Ultimately, I think that the absence of an empirically discovered map of all the mutations that occurred means that there will always have to be a degree of belief.

That wasn't geeky? was it
We didn't get to the geeky part. I've been contributing posts on the blog of a friend recently. This friend is trying to use Agile software development to make some software. He keeps finding problems. Agile is a process of developing a piece of software by starting with a fully working program that does nothing and then adding, in small increments, things which surface as improvements as far as the user is concerned. Each increment should be only the work of a few hours and should result in a fully working piece of software. This is, in my head, akin to evolution. A small change occurs and then natural selection decides if it is to stay in the species (i.e. does it improve the species - if so, then it's more likely to survive and thus get propagating between generations and then become the dominant version of the species and so on). So, in software, the natural selection analog is whether the software still works and seems, to a user, to be any better than the software without the change.

It's not necessarily that dogmatic in Agile, as some changes may yield little or no user-oriented improvement, or may provide a feature that neither works, nor doesn't work. However, the Agile approach is very much based around evolution.

Yet, the natural instinct of a computer programmer is to act as a creator. I know that my programatic creature needs a heart. So I'll build a heart. Then I'll drop the heart into the creature and see if it works. This is akin to the intelligent design model. Something is so complex that it cannot be viably be created in a series of small tweaks. So, it should be designed and dropped in complete. Of course, the heart is a complex entity in its own right and would have a series of non-trivial connections to the rest of the entity, so building it would take a while and connecting it would take a while too. So to the "creationist" programmer, there will be long delays between different forms of the creature. These long delays could create costs and risks, and may also allow more room for confusion about how much is really needed of the entity when it is complete. This is why Agile programmers prefer to evolve.

So, is there a question?

I think there is. While for evolution, the idea of irreducable complexity may well be nothing more than a counter-argument, rather than a proof of the fallibility of Darwin's theory, or a proof of any alternative explanation, for software, there is a genuine issue. Are some things (albeit small things) of such a natural level of complexity that evolving them will only ever produce incoherent mid-way-products? If that's the case, then we cannot always make software in small increments. Alternatively, any small increments we make will be nothing more than waypoints on a way to a complex model that we've already designed. The mid-points serve no purpose then, except to prove that we're still busy and adding to the solution.

There's probably a lot of room for discussion on this. I have no answers of my own yet. I do know that a huge amount of design decision up front can be exceedingly wasteful, as things often look different in real life than they do on paper. I also know that a series of artificial mid-points, just to feign evolution, is probably not a good thing. Maybe the middle ground is the right place to go, but it can be hard to achieve.

Perhaps we all should pray to the Flying Spaghetti Monster for guidance.


Post a Comment

<< Home

All content ©2001 - 2012 Ashley Frieze