What are unique about the complexity of computer systems?

To understand the unique aspects of computer complexity, we can start by examining the unqiue aspects of its evolution: how did it get there?

We do so by comparing man-made objects with biological objects and computers with other man-made objects. We use ``gene'' in the most broad sense. In man-made objects, ``gene'' refers to an idea in design or production,

Cost structure

The cost structure provides key insight into the evolution.

As computers grow in complexity and Moore's Law continues, K_f goes up and K_v goes down. (Computer system design: system-on-chip by Michael J. Flynn and Wayne Luk). 3D printing technology trades a higher K_v for a lower K_f. Large N amortizes the large K_f: globalization allowed the computer industry to tap into a large market.

Once an integrated circuit is designed and its manufacturing process set up, the additional cost to make one is very low. The manufacture technology, called photolithograpy, is very similar to printing; and integrated circuits are made of mostly silicon, an element found in sand.

Software has almost zero fabrication cost; Internet makes its distribution almost free too. As a result, software tends to bloat (Wirth's law)

This means the larger the market, the lower price. We should thank globalization for cheap computers. This also means specialized computers are more expensive, thanks to a smaller market

Interestingly, many pharmaceutical drugs also have high NRE cost but low per-unit cost. Why are new drugs so expensive? Why are drugs for rare deceases so expensive?

As biological objecs grow in complexity, K_v goes up and K_f remains unchanged (arguably, always zero).

The process with which complex system are built: evolution

Not in one day. ``Evolution'' as broadly defined

``Combinatorial evolution'' as termed by W. Brian Arthur in this book. If you do not have access to the book, you can read this short article by the same autho.

Creation: Design and Production

The human design process

Innovation or emergence of useful complex systems comes from combination of existing components; Randomness and diversity are important to provide (1) a large pool of components and (2) a variety of ways to combine components. Due to bounded rationality, a lot of innovations stem from random chances, instead of completely by design (Recall the human limit in reluctance to accept randomness: we too often try to ``explain'' or ``analyze'' a success.)

Horizontal gene transfer is much more common in man-made objects as competitors borrow ideas from each other. Biological reproduction mostly relies on verticial gene transfer from parents to offsprings. As a result, man-made objects evolve faster, often taking bold, abrupt steps. In contrast, tn the evolution of biological objects from point A to point B, all the intermediate steps must be advantageous or selected. That is, the evolution of biological objects must be continuous. Man-made objects, especially computers, however, also worry about continuity albet to a lesser degree, e.g., backward compatibility.

How to encourage innovation in design?


Cost structure of production for computers, especially software, is very unique. It has a very high non-recurring engineering cost upfront but rather low per-unit cost. This structure favors massive production of the same variety, or controlled varieties that can share the same upfront cost. Think about the configurations available to iPhones. In contrast, biological evolution often relies on variations amongst individuals, due to the high per-unit cost.


Adoption by users; success in the market

Don't forget the ``ecosystem''. A technology/product is selected in the ecosystem it lives.

Key question: why is a more complex system got selected?

Why sometimes a bad design got selected?