Forem

abhay-j
abhay-j

Posted on

Why We Code

What sets humans apart from other animals is our ability to build tools and use them to fulfill our goals and desires. These tools often compensate for the limitations of our senses and physical capabilities.

For example, early humans threw stones at animals or fruits hanging from trees to make up for their short limbs or limited speed. They crafted pointy objects to replace the claws and fangs they lacked. As we began to understand the world around us, we discovered the need for counting, computation, and storing information. These innovations freed up time to make more abstract observations and further explore our environment.

Just as physical tools extended our bodily capabilities, computational tools have extended our mental capabilities. By leveraging computation, we can focus on the finer aspects of the problems we aim to solve.

Image description

Two Types of Problems

I like to categorize the problems humans solve into two types:

Problems that do not require dimensional shifts in consciousness or understanding of the universe.
Problems that do require dimensional shifts in our understanding of the universe.

Linear Progress (Same-Dimensional Evolution)

Image description

When we solve problems within the same dimension, we achieve linear progress. This involves making things faster, more efficient, or slightly better. Examples include the progression from a horse cart to an automobile to a faster automobile, or from classroom teaching to online video lectures to interactive online courses.

In computing, the evolution from the abacus to a calculator illustrates linear improvement in computation. These innovations enhance efficiency while staying within the same conceptual framework.

Dimensional Shifts

Image description

When problems require dimensional shifts, they necessitate a fundamental transformation in consciousness to comprehend the solution space. For example, the transition from hunting and gathering to agriculture was not merely a matter of better tools for finding food. It required humans to develop a new understanding of their relationship with nature, time, and sustenance, encompassing concepts like seasons, plant cycles, and long-term planning.

Examples from Computing

Same-Dimensional Evolution
Abacus (circa 2400 BC): Enhanced arithmetic calculations by streamlining manual counting methods. While efficient, it remained within the existing numerical framework.
Tally Sticks and Clay Tokens: Improved record-keeping by offering tangible methods to track quantities and transactions without altering the principles of data recording.
Charles Babbage's Difference Engine (1822): Mechanized mathematical calculations, increasing speed and accuracy but maintaining the existing paradigm of mathematical computation.

Dimensional Shifts
Antikythera Mechanism (circa 100-150 BC): Mechanized the prediction of astronomical positions and eclipses, shifting from viewing celestial events as unpredictable to understanding them as calculable phenomena. This integration of mechanical engineering and astronomy represented a transformative approach.
Jacquard Loom (1804): Introduced punched cards to control weaving patterns, demonstrating that instructions could be encoded and executed by machines. This innovation laid the foundation for modern computing.

The Current Challenge

Image description
Today, we often solve the same issues repeatedly, focusing on incremental improvements to existing systems. While efficiency is important, one-dimensional thinking limits us from exploring the full potential of modern machines. As we develop higher computational power, programming languages with simpler syntax, and generative AI for software creation, we must address problems that require dimensional shifts.

For example, while artificial intelligence excels at automating processes, its potential in solving existential issues like climate change remains underexplored. To unlock this potential, we must step back and ask, Why does this problem exist? Addressing the 'why' can uncover deeper, underlying issues and lead to transformative solutions.

Image description

The Future of Computing

The future of computing lies not in merely accelerating familiar processes but in understanding why things are the way they are and creating meaningful improvements. Just as humanity redefined itself through agriculture and programmable machines, we must now pursue the next dimensional shift.

The tools we build should go beyond enhancing current capabilities. They should challenge our assumptions, expand our consciousness, and open new frontiers of understanding. By doing so, we can create solutions that are not only efficient but also profoundly impactful.

Top comments (0)