Friday, April 4, 2008

Ontogeny recapitulates Phylogeny in the life of a programmer

(C'mon, admit it - you've always wanted to use that as the title of a blog post too...)

Paul's epiphany seems like the equivalent of Ontogeny recapitulating Phylogeny in the evolution of a programmer. "Hey, C has arrays! Hey, C arrays are really just syntactic sugar for pointer dereferencing! Hey, I can index to anywhere in memory really easily! Hey, I can store anywh...."

SEGFAULT - CORE DUMPED

Sh*t.



"Hey, there's this new language called Java! And it has arrays too! Hey, if I index past the end of an array I get a nice error message telling me exactly where in my code the problem occurred! Hey, I think I can knock off work early and go to the pub!"

8^)

3 comments:

Paul Ramsey said...

You can't choose your family, and you can't choose the programming language your favorite applications are written in...

I just finished a very small patch for Mapserver, and nothing hammers home the pain C imposes on what should be relatively simple string manipulation like reading through the Mapserver code base. Unfortunately a great deal of what Mapserver does beyond pulling data in and rasterizing it is... string manipulation. All those OWS APIs, in all their multifarious versions.

And that's not even touching memory management.

mentaer said...

You can't choose your family, and you can't choose the programming language your favorite applications are written in...

well .. probably one can: Martin. Ok.. sometimes he need to do some work on GEOS or PostGIS ;)

However choosing the programming language ones likes is probably one of the advantages if one is in research. But the choice is probably restricted if one needs to work with real large size datasets: LIDAR data, tracking data, topographic map data, or so.

sem said...

Consider also that teleology recapitultes ontogeny. In other words, over arching societal patterns of transformations are directly related to ontogenetic processes and species evolution. See http://www.neoteny.org/?p=257.