Technology and Evolution

I touched on this yesterday, writing about Cosmos and evolution, and how I had the feeling that I wanted to "Do that!" -- when thinking about evolution. I know this may sound weird but I think we're not just subject to evolution, but we are also agents of evolution. In other words, evolution acts through us. Things we do intuitively are in the service of evolution. It's obviously true for some things, like sex -- that to us seems like an act of pleasure, at another level it's about procreating, and at yet another level it's about competition between our genes to form or influence the next generation of humans. But I think there's an even higher level of service, that our intellectual creativity is an evolutionary process as well.

If you look at the evolution of programming languages, you'll see a parental lineage going back to "the beginning." Algol borrowed ideas from Fortran, and C and Pascal from Algol, and Python, JavaScript are also Algol-like. I'm sure this is partially because the designers of the languages grew up using the predecessors. It's why our habits in America are familiar to Europeans and others probably to Africans and Asians, because our ancestors brought their familiar ways with them when they emigrated. Why should they change just because they live on a different continent? Same with languages. If "while" meant something in one language, it's not very useful if it means something else in a new language.

But there's another reason for a language to make small evolutionary changes relative to the languages that came before -- it's because they arrive in an environment that must be ready to use them. Languages that depart radically from prior art will have a hard time getting uptake because they are familiar to no one. That's why change is necessarily gradual. It's why we still use QWERTY keyboards instead of a superior design.

One of the most striking ideas in Cosmos, and a new one to me, is that evolution never goes back and re-invents something. Once there's a basic design for an eye, Tyson teaches, all eyes from then on work that way. This was less than optimal, he says, because eyes evolved when animals only lived under water. Because our eyes are largely made of water, there is distortion when they're used in air that isn't present in water. Basically fish have better vision than birds, reptiles and mammals. Why can't evolution go back and re-do the design of eyes now that they are used in air? I don't understand, but I find the idea fascinating.

Anyway, I think we'd do better if we were more careful about discontinuity in software environments. More people want to use computers in a mobile context today. Why does that mean that our languages have to change? Apple's C-based language is no better or worse than JavaScript, yet there are significant differences in the languages, ones that are difficult if not impossible to factor into a common interface. It means that change comes at a price, we lose capabilities we had before, unnecessarily, just because we want to use iPhones in addition to Macs.

It would all work better, imho, if we used natural evolution to form basic principles for software evolution. That developers not place so much emphasis on changing the world, and more on careful and thoughtful evolution. Only steal from the best, is a very good design principle, imho -- as well as Postel's Law -- strive to interop, of course, but also strive to make interop easy.


Last built: Wed, Jul 9, 2014 at 11:23 AM

By Dave Winer, Saturday, March 29, 2014 at 12:47 PM. What a long strange trip it's been.