## Superposition

The holy grail of software development is the ability to apply the principle of Superposition to software components.

A "simple" way to look at superposition is to imagine LEGO® blocks.  The blocks do not depend on each other.  One can build "anything" with the blocks without being constrained by dependencies.

## CALL RETURN Spaghetti

I show the problem caused by dependencies in my essay CALL / RETURN Spaghetti https://guitarvydas.github.io/2020/12/09/CALL-RETURN-Spaghetti.html.

The essay CALL / RETURN Spaghetti indirectly discusses superposition. It shows what happens if one doesn't have superposition.

## The ALGOL Bottleneck

CALL RETURN uses a global variable to store breadcrumbs.

This global variable is created/supported by most modern hardware.

I try to demonstrate this issue in my essay ALGOL Bottleneck https://guitarvydas.github.io/2020/12/25/The-ALGOL-Bottleneck.html.

## Superposition in EE

I first learned about superposition in EE school.

In EE, one analyzes (understands) a circuit by successively suppressing all voltage sources except one.

All of the separate, one-source-only, analyses are then glued back together and summed to form the final analysis.

## Analogy: Cartoon Movie Cels

An analogy of the use of superposition is to imagine how cartoon movies were created before computers became abundant.

An artist would paint a character onto a transparent sheet of plastic.

Many artists could to their tasks in parallel - without any dependencies between them.  Each artist could paint all of the cels for a single cartoon character.

The frames of the final movie would be formed by layering each cel onto a background and photographing the result.  The final movie would show frames in sequence.

Animated graphics still works this way today, except with computerized technology.  Animated GIFs work this way, also.

https://conceptartempire.com/cel-animation/

https://en.wikipedia.org/wiki/Cel