Technology: Polymorphic Software

“Technological advance is an inherently iterative process.  One does not simply take sand from the beach and produce a Dataprobe.  We use crude tools to fashion better tools, and then our better tools to fashion more precise tools, and so on. Each minor refinement is a step in the process, and all of the steps must be taken.”

— Chairman Sheng-ji Yang, “Looking God in the Eye”

Polymorphic software is, as you might guess from the name, software that can rewrite itself in solving a problem.  The code changes along with the input data.  Modern-day algorithms like neural nets, where the connections between the neurons are determined by training, work like this.  This technology presumably represents finding economically and practically significant applications for this software on the new Planet.

In the game, this is a second-level pure scientific technology that relies on Industrial Base and Information Networks.  It provides a couple of benefits that don’t, at first glance, seem terribly related.  First, it enables the faction that discovers it to build units with the Heavy Artillery special.  Units with this power can attack at long range without fear of reprisal (except by other artillery units), but in exchange can only injure units instead of kill.  This is good for whittling down big enemy stacks.  And second, it grants Probe Teams fielded by the faction an extra level of experience right out of the gate, representing the advantage granted in hacking enemy systems with better software.

Naively, it’s kind of weird that the power to create heavy artillery would be tied up in a computer technology.  I mean, all you need to do to get indirect fire is to build a bigger gun, right?  But this is a lot less crazy that it seems when the history of firepower in the Information Age is taken into account.  See, it turns out that the effect of indirect fire (say from artillery tubes or aircraft) is greatly increased by accurate targeting.  So-called smart bombs are worth a hundred of their dumber brethren.

By tying artillery to an early computer technology, SMAC is modeling that on the early days of Planet, it is impossible to build the density of troops and guns necessary to make an effective industrial-era artillery barrage.  It’s just not practical without rebuilding the technical capacity to target efficiently.  And this requires new advances in software because the colonists aren’t able to sustain a network of GPS satellites for hyper-accurate positioning data, like we do on Earth today.

In this context, Yang’s quote above is really neat.  Just taken at face value, it’s intriguing and insightful.  He has to be right to some degree.  It really is impossible to build a complicated device with nothing but your bare hands and spare silicon.  So, if your task is to rebuild a technical civilization on an alien planet, there are some steps you just can’t skip.  Which, if you think about it, serves as a justification for the entire mechanic of the technology tree in the game.

But the quote has a cool double meaning when attached to this tech in particular.  Software of this type converges on a solution by iteratively reshaping itself.  There is a deep analogy between the broader society advancing technically up the tree step by step and a suite of polymorphic software rewriting itself to solve a given problem.  Civilization itself is a polymorphic algorithm.  It’s just implemented in people and capital equipment instead of silicon.


One thought on “Technology: Polymorphic Software

  1. Michael

    At risk of paraphrasing Col Santiago, some of the first electronic computers were built for calculating artillery solutions–why should the future be any different?



Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s