Hardware history: Difference between revisions

From A Technological Wiki
Jump to navigation Jump to search
No edit summary
 
(55 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Infobox historic computing technology|name=Early Mechanical & Electro-Mechanical Computers|image=|caption=Fundamental concepts of modern computer architecture originated in mechanical designs.|developer=Charles Babbage, Ada Lovelace, Howard Aiken|year=1833–1944|predecessor=Mechanical Calculators|successor=First-Generation Vacuum Tube Computers}}
{{Infobox historic computing technology|name=Early Mechanical & Electro-Mechanical Computers|image=|caption=Fundamental concepts of modern computer architecture originated in mechanical designs.|developer=Charles Babbage, Ada Lovelace, Howard Aiken|year=1833–1944|predecessor=Mechanical Calculators|successor=First-Generation Vacuum Tube Computers}}


== Overview ==
== Prologue: The necessity of automated computation ==
The transition from manual calculation to automated computing began with 19th-century mechanical designs and culminated in mid-20th-century electro-mechanical systems.
Before computing machines existed as physical objects of brass, vacuum tubes, or etched silicon, they existed as a pressing intellectual and logistical necessity. The history of computing hardware is fundamentally the story of humanity building prosthetics for the human mind, externalizing calculation, memory, and logic to overcome innate biological constraints.
 
=== 1. The cognitive bottleneck and human fallibility ===
Human working memory is biologically limited: the brain struggles to track more than a few transient symbols, carries, and intermediate sums simultaneously without exponential error rates.
 
* '''The cognitive tax of monotony:''' High-precision calculation requires repetitive, deterministic execution over long durations. Human psychology is poorly adapted to such monotony; fatigue, distraction, and cognitive drift inevitably introduce subtle arithmetic mistakes.
* '''Cascading error propagation:''' In iterative mathematics, such as computing navigation tables, astronomical ephemerides, or ballistic trajectories, a single transcription or carrying error in step two renders every subsequent calculation down to step ten thousand completely invalid.
* '''The "Human Computer":''' Prior to the 1940s, the word ''computer'' designated a job title, not an apparatus. Scores of human clerks, mostly women, performed day-long arithmetic by hand. As late as the 18th and 19th centuries, government and maritime navigation tables were notorious for errata pages that were themselves riddled with new errors introduced during manual typesetting. As Charles Babbage famously lamented in 1821 while reviewing flawed astronomical tables:
 
: ''"I wish to God these calculations had been executed by steam!"''
: [[File:Hardware cognitive bottleneck.png|none|thumb|hardware cognitive bottleneck|526x526px]]
 
=== 2. The problems computing solved: From survival to scale ===
Computing machinery emerged not out of abstract curiosity, but under the acute pressure of societal scale and physical survival:
 
* '''Navigational safety and global trade (17th–19th Century):'''
: Maritime commerce and naval dominance depended entirely on accurate celestial navigation. Calculating longitude required precise tables of lunar distances and solar positions. A five-arcminute error in a printed navigational table could throw a ship off course by hundreds of miles, resulting in shipwrecks and catastrophic loss of life and cargo.
* '''The crisis of demographic and administrative scale (Late 19th Century):'''
: Industrialization created administrative structures far too vast for manual bookkeeping. By 1890, the United States Census Bureau was on track to take more than a decade to tally the national census by hand, meaning the results would be obsolete before completion. The invention of the punch-card tabulating machine by Herman Hollerith cut the processing time to months, demonstrating that modern bureaucratic societies could not govern or tax without automated data processing.
* '''Ballistics, cryptanalysis, and military urgency (World War II):'''
: The emergence of modern warfare created mathematical problems that had to be solved faster than real-time:
:* Calculating firing tables for artillery that factored in wind speed, barrel wear, and air temperature.
:* Cracking encrypted military communications (such as the German Enigma and Lorenz ciphers) required testing thousands of permutations per second, giving rise to mechanical and electronic cryptanalytic engines like the Polish ''Bomba'', Alan Turing’s Bombe, and the British Colossus.
:* Modeling nuclear chain reactions for the Manhattan Project demanded millions of interdependent partial differential equations, directly accelerating the development of stored-program electronic mainframes like ENIAC.
: [[File:Hardware survival to scale.png|none|thumb|538x538px|hardware survival to scale]]
 
=== 3. The human dimension: automating the machine within us ===
A profound paradox in the history of technology is that computing did not begin by automating human thought; it began by automating '''human mechanical compliance'''.
 
Manual arithmetic, book balancing, and table lookup do not require creative consciousness, they require rigid obedience to algorithmic rules. By delegating purely repetitive, procedural algorithms to physical machines, society achieved two transformative shifts:
 
# '''Liberating intellect from drudgery:''' Scientists, engineers, and thinkers were freed from spending entire lifetimes acting as mechanical adders, enabling them to focus on high-level hypothesis formulation, architectural design, and conceptual reasoning.
# '''decoupling truth from sensory limits:''' Human senses perceive reality on immediate, macro timescales. Modern computational machines can simulate phenomena inaccessible to unassisted human experience: quantum interactions inside atoms, tectonic shifts spanning millions of years, and cosmological modeling of galactic collisions.
 
Hardware history is therefore not merely a lineage of physical gadgets, but the progressive externalization of human reason into physical matter.
[[File:Hardware automating wachine within us.png|none|thumb|542x542px|Automating machine within us]]
 
 
 
== Era 0: Pre-mechanical calculation and early automata (Antiquity-1830s) ==
Computing has evolved along two parallel paths:
 
=== <u>Foundational calculation tools</u> ===
Before mechanical gears were introduced, human calculation was heavily bottlenecked by working memory, specifically the cognitive load of tracking intermediate sums, carrying tens, and executing multi-step multiplication. Early tools were designed not to automate thought, but to serve as external, physical registers and lookup systems.
 
* '''The Abacus (c. 2700-500 BCE): Positional memory register'''
** ''How it works'': Rather than calculating on its own, an abacus acts as an external physical register. Beads arranged on parallel rods or grooves represent specific decimal place values (units, tens, hundreds, thousands).
** ''Cognitive relief'': The user executes mental arithmetic rules, but never needs to hold multi-digit numbers or carries in short-term memory; the physical position of the pushed beads instantly stores the current state and intermediate results.[[File:Abacus.png|none|thumb]]
 
* '''The counting board and jetons (Medieval to renaissance Europe, c. 1100-1600s) - Positional grid computation'''
** ''How it works'': Rather than beads permanently fixed on wires, European merchants and money-changers used a flat wooden table or cloth marked with parallel lines representing powers of ten (or British pounds, shillings, and pence). Calculations were performed by physically placing, sliding, and clearing metal cast counters called ''jetons''.
** ''Cognitive relief'': It allowed rapid commercial accounting in Roman-numeral Europe without requiring written scratch paper. By turning complex currency conversions into physical movement of tokens across labeled lines, the clerk avoided mental carrying mistakes.  [[File:Counting board and jetons.png|thumb|counting board and jetons|none]][[File:Board and jetons table.png|none|thumb|425x425px|board and jetons table]]
<div class="mw-collapsible mw-collapsed" style="border: 1px solid #a2a9b1; background-color: #f8f9fa; padding: 10px; margin: 10px 0; border-radius: 4px;">
'''Historical context: Why physical aids preceded pen-and-paper calculation'''<div class="mw-collapsible-content" style="margin-top: 8px;">
While performing arithmetic with pen, paper, and written digits seems fundamental today, dynamic calculation using scratch paper was impractical for most of human history due to economic, linguistic, and cognitive barriers:
 
* '''Scarcity and cost of writing media''': Prior to industrial wood-pulp papermaking in the 19th century, writing surfaces such as papyrus, vellum (animal skin), and rag paper were costly commodities reserved for legal deeds, state censuses, and holy texts. Wasting consumable sheets on intermediate scratch work and discarded calculations was financially prohibitive. Physical instruments like the abacus, counting boards, or sliding rules could be reset indefinitely without consuming materials.
* '''Limitations of pre-positional numeral systems''': Western commerce historically operated under Roman numerals (I, V, X, L, C, D, M), which lacked a zero and place-value notation. Attempting to perform multi-digit multiplication or long division symbolically on paper using Roman numerals is exceptionally difficult. As a result, computation was handled externally on physical lines (using stones or tokens called ''jetons''), and paper was used exclusively at the very end to record the final sum.
* '''High barrier of mathematical literacy''': Even after the Hindu-Arabic positional decimal system was popularized in Europe via Fibonacci's ''Liber Abaci'' (1202), written algorithmic arithmetic ("algorism") remained an elite academic skill taught in specialized guild schools. Tactile counting frames allowed merchants and apprentices to compute rapidly through physical rules without needing advanced arithmetic literacy.
* '''Human working memory and error propagation''': Long multi-digit manual arithmetic forces the human brain to simultaneously recall multiplication tables, track running carry values, and transcribe staggered sums, each step introducing points of human failure. Physical tools effectively externalized cognitive registers:
** '''Napier's Bones''' physically encoded the multiplication table, converting multi-digit operations into simple diagonal single-digit additions.
** '''The Slide Rule''' converted algebraic multiplication and division into continuous spatial distances, allowing an engineer to obtain multi-digit approximations in seconds without performing a single written calculation.
 
{| class="wikitable" style="width: 100%; margin-top: 10px;"
|+Functional division: Pen-and-paper vs. physical calculation aids
!Factor
!Pen-and-Paper Arithmetic
!Physical Calculation Aids
|-
|'''Resource model'''
|Consumable (ink, parchment, or rag paper spent per calculation)
|Indefinitely reusable (pebbles, wooden beads, brass slides)
|-
|'''Prerequisites'''
|Advanced numeracy, literacy, and memorized carrying algorithms
|Simple tactile motion rules; functional across different languages/scripts
|-
|'''Primary historical role'''
|'''Static storage''': Preserving final results, deeds, and ledgers
|'''Dynamic processing''': Real-time arithmetic and intermediate state tracking
|}
</div></div>
 
* '''The Astrolabe (c. 400-1500s) - Two-dimensional analog celestial calculator'''
** ''How it works'': Highly refined by Islamic Golden Age astronomers and mathematicians, the planispheric astrolabe mapped the 3D celestial sphere onto a flat, rotating brass coordinate plate (stereographic projection).
** ''Cognitive relief'': Instead of solving complex spherical trigonometry formulas by hand, navigators and astronomers could solve local solar time, twilight, prayer hours, and planetary positions in seconds by aligning sighting pointers on the brass plate with the observed altitude of a star or the sun.[[File:Astrolabio.png|none|thumb|Astrolabio]]
* '''The Sector or Proportional Compass (c. 1560) - Geometrical proportional calculator'''
** ''How it works'': Developed independently by inventors such as Fabrizio Mordente, Guidobaldo del Monte, and perfected by Galileo Galilei, the sector consisted of two hinged brass arms marked with calibrated scales (arithmetic, geometric, trigonometric).
** ''Cognitive relief'': Using the geometric theorem of similar triangles and a simple pair of dividers, operators could calculate proportions, scale drawings, compute gunnery trajectories, and extract square or cube roots mechanically without performing manual long-hand arithmetic.[[File:Proportional compass.png|none|thumb|Proportional compass]]
* '''Napier’s Bones (1617) - Lattice multiplication on rods'''
** ''How it works'': Invented by Scottish mathematician John Napier, this tool consists of a set of indexed wooden, bone, or ivory rods inscribed with multiplication tables. Each square on a rod is divided by a diagonal line separating tens from units (the basis of lattice or "gelosia" multiplication).
** ''Cognitive relief'': To multiply a complex number (e.g., 425 × 7), the operator simply arranges the rods labeled 4, 2, and 5 side by side. Reading across row 7, the multiplication is instantly converted into simple, low-effort diagonal additions of adjacent digits, completely eliminating the need to memorize or look up multiplication tables.[[File:Napier bones.png|none|thumb]]
 
* '''The Slide Rule (1622): Logarithmic analog computation''':
** ''How it works'': Developed by William Oughtred and others shortly after Napier defined mathematical logarithms, the slide rule places logarithmic scales onto sliding linear rules.
** ''Cognitive relief'': Because logarithms translate multiplication into addition (log(''a'' · ''b'') = log ''a'' + log ''b'') and division into subtraction, a user can multiply or divide two numbers simply by aligning sliding physical distances. The operator offloads difficult calculation to a fast, visual spatial alignment, yielding results accurate to three or four significant digits.[[File:Slide rule oughtred.png|none|thumb|slide rule oughtred]]
 
 
=== <u>Mechanical calculating machines</u> ===
Designed to automate calendar cycles, astronomical tracking, and arithmetic carry operations.
 
* '''Antikythera mechanism (c. 150-100 BCE)''': An ancient Greek bronze mechanism comprising over 30 intricate differential gears. Used to track and predict lunar phases, solar cycles, Olympiads, and eclipses, it represents the earliest known geared analog computing device.[[File:Antikythera.png|none|thumb|antikythera]]
** El robot de platón:  https://youtu.be/SWR4_OiTZdc?t=191
** Jordi Wild: https://www.youtube.com/watch?v=aZeZcxxwINo
 
* '''Schickard's calculating clock (1623)''': German polymath Wilhelm Schickard designed the earliest documented mechanical calculator using linked gear wheels and single-tooth trip mechanisms to automate multi-digit addition and subtraction.[[File:Schickards calculating clock.png|none|thumb|schickards calculating clock]]https://www.youtube.com/shorts/vi_33gmJoBU
* '''Pascal's Pascaline (1642)''': Built by Blaise Pascal to aid his father in taxation records, the Pascaline became the first widely recognized, operational mechanical adder. Its central breakthrough was the ''sautoir,'' a gravity-weighted pawl mechanism that reliably handled multi-dial tens carry operations.[[File:Pascal Pascaline.png|none|thumb|Pascal's pascaline]]
* '''Leibniz's Stepped Reckoner (1673)''': Gottfried Wilhelm Leibniz introduced the stepped gear cylinder (the ''Leibniz wheel''), enabling a mechanical machine to perform direct multiplication and division alongside addition and subtraction. Leibniz was also the first to systematically document the modern binary number system (1679).[[File:Leibniz reckoner.png|none|thumb|Leibniz reckoner]]
* '''Thomas de Colmar's Arithmometer (1820)''': The first mechanically reliable, commercially manufactured calculator capable of daily office use, bringing four-function desktop calculation into mass adoption across finance and engineering.[[File:Colmar arithmometer.png|none|thumb|Colmar arithmometer]]
 
* '''The Jacquard Loom (1804): The dawn of stored instruction''' In 1804, French weaver Joseph Marie Jacquard revolutionized textile production by automating loom operations through punched card chains. Perforated holes in stiff cards mechanically determined whether individual warp threads were lifted or lowered. While not designed for mathematical computation, Jacquard’s invention demonstrated the principle of '''external programmability''', the ability to change the machine's task dynamically by feeding it a new set of interchangeable cards without modifying the underlying physical machinery. This directly inspired Charles Babbage’s design for the Analytical Engine's card-reading mechanism. Demonstration video: https://www.youtube.com/watch?v=pzYucg3Tmho
[[File:Jacquard loom.png|none|thumb|Jacquard loom]]
 
 
 
=== Comparison of Era 0 computing devices ===
{| class="wikitable" style="text-align: left; width: 100%;"
|+
!Device / System
!Primary Inventor / Origin
!Operating Era
!Working Principle
!Historical Significance
|-
|'''Antikythera mechanism'''
|Ancient Greece
|c. 150-100 BCE
|Bronze gear trains and differential dials
|Earliest known astronomical analog calculator.
|-
|'''Napier's Bones & Slide Rule'''
|John Napier / William Oughtred
|1617-1622
|Logarithmic scales
|Replaced manual multi-digit multiplication with addition.
|-
|'''Pascaline'''
|Blaise Pascal
|1642
|Interlinked dial gears with gravity-assisted ''sautoir''
|First practical mechanical decimal adder with automated carries.
|-
|'''Stepped Reckoner'''
|Gottfried Wilhelm Leibniz
|1673
|Fluted stepped drum (Leibniz wheel)
|Expanded mechanical arithmetic to direct multiplication and division.
|-
|'''Jacquard loom'''
|Joseph Marie Jacquard
|1804
|Perforated pasteboard punched-card chains
|Pioneered external data storage and mechanical execution control.
|-
|'''Arithmometer'''
|Thomas de Colmar
|1820
|Refined stepped cylinder desktop assembly
|First commercially successful mass-produced mechanical calculator.
|}
 
=== Conceptual transition to Era I ===
The innovations of Era 0 revealed three fundamental lessons that directly guided the formulation of Era I:
 
# '''Digital mechanical representation''': Proved that discrete numeric values and arithmetic operations could be mapped directly into mechanical gear teeth and rotational increments.
# '''External control''': Demonstrated that punched physical media could program physical operations without altering mechanical hardware.
# '''The limit of single-purpose hardware''': Highlighted that every machine prior to 1833 was inherently fixed-function (capable of only arithmetic or static astronomical tracking). Babbage's conceptual leap was unifying memory, a processing core, and conditional execution into a single, general-purpose computer.
 
 
 
 


== Era I: Mechanical pioneers (1833) ==
== Era I: Mechanical pioneers (1833) ==


=== Charles Babbage and the Analytical Engine ===
=== <u>Charles Babbage and the Analytical Engine</u> ===
In 1833, British mathematician Charles Babbage conceived the '''Analytical Engine''', widely considered the theoretical precursor to the modern general-purpose electronic computer. Although never fully constructed during his lifetime due to mechanical limitations, Babbage's design established five core functional units:
In 1833, British mathematician Charles Babbage conceived the '''Analytical Engine''', widely considered the theoretical precursor to the modern general-purpose electronic computer. Although never fully constructed during his lifetime due to mechanical limitations, Babbage's design established five core functional units:


* '''Input devices''' 📥: For entering instructions and data.
* '''Input devices''': For entering instructions and data.
* '''Memory''' 🧠: For holding numbers and intermediate results.
* '''Memory''': For holding numbers and intermediate results.
* '''Control Unit''' 🎛️: For directing the sequence of operations.
* '''Control Unit''': For directing the sequence of operations.
* '''Arithmetic Logic Unit (The Mill)''' 🔢: For executing mathematical calculations.
* '''Arithmetic Logic Unit (The Mill):''' For executing mathematical calculations.
* '''Output Devices''' 📤: For displaying or printing results.
* '''Output Devices''': For displaying or printing results.


[[File:Babbage Analytic engine.png|none|thumb|Babbage Analytic engine]]
[[File:Babbage Analytic engine.png|none|thumb|Babbage Analytic engine]]


<div class="mw-collapsible mw-collapsed">
<div class="mw-collapsible mw-collapsed" style="border: 1px solid #a2a9b1; background-color: #f8f9fa; padding: 10px; margin: 10px 0; border-radius: 4px;">
'''More about Babbage analytic engine'''
'''More about Babbage analytic engine'''
<div class="mw-collapsible-content">
<div class="mw-collapsible-content">


=== The "Real" Analytical Engine (1833) ===
=== The "Real" Analytical Engine (1833) ===
In 1833, [[Charles Babbage]] designed the '''Analytical Engine''', widely considered the theoretical precursor to the modern general-purpose computer.  
In 1833, Charles Babbage designed the '''Analytical Engine''', widely considered the theoretical precursor to the modern general-purpose computer.  


'''How it worked'''
'''How it worked'''


The Analytical Engine was designed as a fully mechanical, steam-powered machine. Remarkably, its architecture mirrored the core components of modern computers long before electronics existed:
The Analytical Engine was designed as a fully mechanical, steam-powered machine. Remarkably, its architecture mirrored the core components of modern computers long before electronics existed:
* '''Input system''' 📥: Instructions and data were fed into the machine using [[punched card]]s (a technique adapted from the Jacquard loom).
* '''Input system''' 📥: Instructions and data were fed into the machine using punched cards (a technique adapted from the Jacquard loom).
* '''The store (Memory)''' 🧠: A vast system of gears and counter wheels designed to hold up to 1,000 numbers of 50 decimal digits each.
* '''The store (Memory)''' 🧠: A vast system of gears and counter wheels designed to hold up to 1,000 numbers of 50 decimal digits each.
* '''The Mill (ALU)''' 🔢: The mechanical processing unit capable of performing basic arithmetic (addition, subtraction, multiplication, division) and comparison tests.
* '''The Mill (ALU)''' 🔢: The mechanical processing unit capable of performing basic arithmetic (addition, subtraction, multiplication, division) and comparison tests.
Line 34: Line 204:
'''Construction status'''
'''Construction status'''
* '''During Babbage's lifetime''': Babbage never completed a fully functional, full-scale Analytical Engine due to funding shortages, personal disputes, and the limits of 19th-century mechanical precision.
* '''During Babbage's lifetime''': Babbage never completed a fully functional, full-scale Analytical Engine due to funding shortages, personal disputes, and the limits of 19th-century mechanical precision.
* '''Modern reconstructions''': While a complete Analytical Engine has never been built, London's Science Museum constructed Babbage's simpler ''Difference Engine No. 2'' in 1991, proving his mechanical theories were sound. An ongoing initiative called ''Plan 28'' aims to construct a working Analytical Engine using Babbage's original drawings.
* '''Modern reconstructions''': While a complete Analytical Engine has never been built, London's Science Museum constructed Babbage's simpler ''Difference Engine No. 2'' in 1991, proving his mechanical theories were sound. An [https://blog.plan28.org/ ongoing initiative called ''Plan 28''] aims to construct a working Analytical Engine using Babbage's original drawings.
[[File:Analytic engine London.png|none|thumb|analytic engine London]]
[[File:Analytic engine London.png|none|thumb|analytic engine London]]
</div>
</div>
</div>
</div><div class="mw-collapsible mw-collapsed" style="box-sizing:border-box; border:1px solid #a2a9b1; background-color:#f8f9fa; padding:10px 14px; margin:1em 0; border-radius:4px;">
'''Babbage’s precursor: The difference engine (Mechanical calculator)'''<div class="mw-collapsible-content" style="margin-top:8px;">
Before conceiving the general-purpose Analytical Engine, '''Charles Babbage''' designed the '''Difference Engine''' (conceived in 1822) to address the rampant errors found in human-computed mathematical, astronomical, and navigation tables.
 
* '''Core purpose:''' Unlike the programmable Analytical Engine, the Difference Engine was a dedicated, fixed-function mechanical calculator designed to evaluate polynomial functions using the '''method of divided differences'''.
* '''The method of finite differences:''' Because many mathematical functions (such as logarithms and trigonometric ratios) can be approximated by polynomials, calculation could be reduced entirely to simple, sequential additions without requiring multiplication or division:
** $\Delta f(x) = f(x+h) - f(x)$
** By storing starting values and constant higher-order differences on geared columns, rotating the main crank cascaded carries across decimal wheels to generate successive table entries automatically.
* '''Integrated Printing Mechanism:''' To eliminate typesetting and transcription mistakes (the final bottleneck in manual computing), the machine was designed to press the calculated digits directly into soft metal stereotyping plates ready for printing presses.
* '''Realization:''' Although Babbage only completed a functional demonstration section (Difference Engine No. 1, 1832) during his lifetime due to funding cuts and precision-machining disputes with his toolmaker Joseph Clement, the London Science Museum successfully constructed a working, full-scale Difference Engine No. 2 in 1991, proving the mechanical soundess of his calculations.
 
[[File:Baggage differencial engine.png|none|thumb|baggage differencial engine]]</div></div>


=== <u>Ada Lovelace: The first programmer</u> ===
=== <u>Ada Lovelace: The first programmer</u> ===
[[Ada Lovelace]] (1815–1852), an English mathematician and writer, played a pivotal role in the conceptualization of general-purpose computing. While translated work on Babbage's Analytical Engine was published in 1842 by Italian engineer Luigi Menabrea, Lovelace added extensive "Notes" that were three times longer than the original paper itself.
Ada Lovelace (1815-1852), an English mathematician and writer, played a pivotal role in the conceptualization of general-purpose computing. While translated work on Babbage's Analytical Engine was published in 1842 by Italian engineer Luigi Menabrea, Lovelace added extensive "Notes" that were three times longer than the original paper itself.


==== Key contributions ====
'''Key contributions'''
* '''The first computer algorithm''': In "[[wikipedia:Note_G|Note G]]," Lovelace detailed a step-by-step method for calculating [[wikipedia:Bernoulli_number|Bernoulli numbers]] using the Analytical Engine. This execution plan is widely recognized as the world's first published algorithm designed specifically for implementation on a computer.
* '''Beyond pure calculation''': Lovelace had a visionary insight that set her apart from her contemporaries. While Babbage focused primarily on numerical calculation, Lovelace realized that if the machine could manipulate symbols representing any entity (such as musical notes or text), it could manipulate non-numeric data. She famously suggested that the engine "might compose elaborate and scientific pieces of music of any degree of complexity or extent."
* '''Foundational programming concepts''': Her notes introduced early conceptual models of programming techniques still used today, including Loop (computing)|loops, Subroutine|subroutines, and conditional instruction execution.
[[File:Ada lovelace.png|thumb|left]]
[[File:Diagram for the computation of Bernoulli numbers.jpg|none|thumb|417x417px]]
 
<br />
<div class="mw-collapsible mw-collapsed" style="border: 1px solid #a2a9b1; background-color: #f8f9fa; padding: 10px; margin: 10px 0; border-radius: 4px;">
'''Note G in Python'''<div class="mw-collapsible-content" style="margin-top: 8px;">
<syntaxhighlight lang="python3">
from fractions import Fraction
 
def calculate_bernoulli_ada_lovelace(n_max):
    """
    Calculates Bernoulli numbers up to index n_max
    using the looping logic from Ada Lovelace's Note G.
    Uses the Fraction class to ensure exact historical precision.
    """
    # Note G calculates B_1, B_3, B_5... (which corresponds to B_2, B_4, B_6... in modern notation)
    # We use a dictionary to simulate the Analytical Engine's storage variables (V1, V2, V3...)
    B = {}
   
    print(f"{'Index (n)':<12}{'Bernoulli Number (B_n)':<25}")
    print("-" * 40)
 
    # Ada's main loop to calculate each term sequentially
    for n in range(2, n_max + 1, 2):
        # The independent term of the equation from Note G
        independent_term = Fraction(n - 1, 2 * (n + 1))
       
        # The inner loop: Ada's nested loop that multiplies
        # previous Bernoulli numbers by the newly calculated coefficients
        inner_sum = Fraction(0, 1)
        for k in range(2, n, 2):
            # Calculating binomial coefficients according to Ada's sequence of operations
            coefficient = Fraction(n, k)
            # Multiply by the previously stored Bernoulli number
            inner_sum += coefficient * B[k]
       
        # Final calculation for the current B_n
        B[n] = independent_term - inner_sum
       
        # Display the result formatted as an exact fraction
        print(f"B_{n:<10}{str(B[n]):<25}")
 
    return B
 
# Run the algorithm for the first 10 even numbers
# (Ada's original Note G specifically demonstrated the steps to find B_8)
results = calculate_bernoulli_ada_lovelace(10)
 
</syntaxhighlight>
</div></div>


* '''The first computer algorithm''': In "Note G," Lovelace detailed a step-by-step method for calculating [[wikipedia:Bernoulli_number|Bernoulli numbers]] using the Analytical Engine. This execution plan is widely recognized as the world's first published algorithm designed specifically for implementation on a computer.
* '''Beyond pure calculation''': Lovelace had a visionary insight that set her apart from her contemporaries. While Babbage focused primarily on numerical calculation, Lovelace realized that if the machine could manipulate symbols representing any entity (such as musical notes or text), it could manipulate non-numeric data[cite: 1]. She famously suggested that the engine "might compose elaborate and scientific pieces of music of any degree of complexity or extent."
* '''Foundational programming concepts''': Her notes introduced early conceptual models of programming techniques still used today, including [[Loop (computing)|loops]], [[Subroutine|subroutines]], and conditional instruction execution.


=== <u>Electro-mechanical realization (1944)</u> ===
=== <u>Electro-mechanical realization (1944)</u> ===
'''The IBM Harvard Mark I'''
In 1944, Howard H. Aiken|Howard Aiken realized Babbage's vision by completing the '''IBM Harvard Mark I'''. It was the first fully functional, large-scale electro-mechanical computer.
[[File:Harvard Mark I.png|thumb|Harvard Mark I|484x484px|none]]
<div class="mw-collapsible mw-collapsed" style="border: 1px solid #a2a9b1; background-color: #f8f9fa; padding: 10px; margin: 10px 0; border-radius: 4px;">
'''Engineering & construction: How the Harvard Mark I was built'''
<div class="mw-collapsible-content" style="margin-top: 8px;">
Conceived by Harvard physicist '''Howard Aiken''' and engineered at IBM's Endicott laboratories under the direction of '''Clair D. Lake''', the IBM Automatic Sequence Controlled Calculator (ASCC / Harvard Mark I) translated Charles Babbage's purely mechanical concepts into electromechanical reality using standard tabulating machine components.
* '''Central drive shaft & Synchronized motion''':
** The machine was driven by a continuous '''5-horsepower electric motor''' connected to a single '''50-foot (15-meter) central driveshaft'''.
** This rotating steel driveshaft ran horizontally through the entire base of the machine, distributing mechanical rotational power to thousands of gears, cams, and counters via magnetic clutches.
* '''Standardized electromechanical relays & accumulators''':
** Rather than using delicate experimental parts, IBM engineers assembled the machine using proven, mass-produced telephone relays, switches, and counter wheels from existing IBM punch-card accounting systems.
** It contained '''72 accumulators''', each capable of holding a 23-decimal-digit number plus a sign indicator (+ or -). Mechanical carry wheels and electromechanical contacts executed arithmetic operations sequentially as the rotating shaft turned.
* '''Instruction control via punched paper tape''':
** Unlike later stored-program architectures, the Mark I read operational instructions sequentially from a wide, continuous '''24-channel perforated paper tape'''.
** As the tape advanced line by line, metal contact fingers dropped through the holes to close electrical circuits, routing numbers from specific accumulator registers into the arithmetic unit and back.
* '''Cabling & physical housing''':
** Construction required over '''500 miles (800 km)''' of electrical wiring and thousands of terminal strips to interconnect relays and mechanical units.
** The entire 51-foot-long, 8-foot-tall frame was encased in a futuristic polished cabinet of stainless steel and glass designed by industrial designer Norman Bel Geddes, highlighting the synchronized motion of spinning mechanical wheels inside.
{| class="wikitable" style="width: 100%; margin-top: 10px;"
|+ Core structural sub-assemblies of the Mark I
|- style="background-color: #eaecf0;"
! Component !! Engineering Principle !! Role in the Machine
|-
| '''5-HP Main Motor & Driveshaft'''
| Mechanical rotation (gears and clutches)
| Provided constant, synchronized torque to all calculating wheels and registers.
|-
| '''72 Register Accumulators'''
| Decimal rotary counter wheels + relays
| Stored numbers and performed mechanical addition/subtraction.
|-
| '''24-Channel Paper Tape Reader'''
| Perforated mechanical switch contacts
| Program control unit (stepped sequentially through instructions).
|-
| '''Interconnected Wire Harness'''
| 500+ miles of point-to-point electric wiring
| Routed data pulses and control logic between registers and switches.
|}


==== The IBM Harvard Mark I ====
</div>
In 1944, [[Howard H. Aiken|Howard Aiken]] realized Babbage's vision by completing the '''IBM Harvard Mark I'''. It was the first fully functional, large-scale electro-mechanical computer.
</div>
[[File:Harvard Mark I.png|thumb|Harvard Mark I|left|484x484px]]
{| class="wikitable"
{| class="wikitable"
|+Technical Specifications of the Harvard Mark I
|+Technical specifications of the Harvard Mark I
!Feature
!Feature
!Specification
!Specification
Line 75: Line 352:




== Era II: First-generation electronic computers (1946–1958) ==
<div class="mw-collapsible mw-collapsed" style="border: 1px solid #a2a9b1; background-color: #f8f9fa; padding: 10px; margin: 10px 0; border-radius: 4px;">
'''Punched cards: The first external storage & Program input'''
<div class="mw-collapsible-content" style="margin-top: 8px;">
 
Punched cards represent the historical bridge between mechanical automation and digital data entry.
 
* '''Origin in textiles (1804):''' Joseph Marie Jacquard revolutionized the textile industry by using perforated paperboard cards to control the needles on mechanical looms, automating the weaving of intricate tapestries.
* '''Adaptation to computing (1830s):''' Charles Babbage and Ada Lovelace adapted Jacquard's concept for the Analytical Engine. Babbage divided cards into:
** ''Operation cards:'' Directed the internal Mill on which arithmetic operation to execute (add, subtract, multiply, divide).
** ''Variable cards:'' Dictated which storage registers (the "Store") supplied operands or accepted results.
* '''Data processing & Herman Hollerith (1890):''' Herman Hollerith developed 80-column punched-card tabulators for the 1890 US Census, cutting computation time from ten years down to months. His company later merged to form IBM.
* '''Role in 20th-Century computing:''' Punched cards served as the primary offline input/output medium for early mainframes through the 1970s. Programmers used keypunch machines (such as the IBM 029) where each card typically represented a single 80-character line of source code or record data.
 
</div>
</div>
 
 
== Era II: First-generation electronic computers (1946-1958) ==
The first generation of electronic computing replaced electro-mechanical switches with '''vacuum tubes'''. While this drastically increased processing speed, these early computers had a massive physical footprint, consumed enormous amounts of electricity, and required frequent maintenance due to tube failure.
The first generation of electronic computing replaced electro-mechanical switches with '''vacuum tubes'''. While this drastically increased processing speed, these early computers had a massive physical footprint, consumed enormous amounts of electricity, and required frequent maintenance due to tube failure.


=== Key early systems ===
=== Key early systems ===


* '''[[wikipedia:ENIAC|ENIAC]]''' (1946): Built to calculate artillery firing tables, it was one of the earliest fully electronic, general-purpose digital computers.[[File:ENIAC.png|thumb|ENIAC|left]]
* '''[[wikipedia:ENIAC|ENIAC]]''' (1946): Built to calculate artillery firing tables, it was one of the earliest fully electronic, general-purpose digital computers.[[File:ENIAC.png|thumb|ENIAC|428x428px|none]]
{| class="wikitable"
{| class="wikitable"
|+ Physical Specifications and Computing Capabilities of the ENIAC (1946)
|+ Physical Specifications and Computing Capabilities of the ENIAC (1946)
Line 106: Line 400:
| '''Memory / Storage''' || 20 accumulators (storing ten 10-digit decimal numbers each)
| '''Memory / Storage''' || 20 accumulators (storing ten 10-digit decimal numbers each)
|}
|}


* '''UNIVAC I''' (1951): The first commercially produced digital computer designed for business and administrative applications.
* '''UNIVAC I''' (1951): The first commercially produced digital computer designed for business and administrative applications.
[[File:UNIVAC I.png|thumb|UNIVAC I|left|362x362px]]
[[File:UNIVAC I.png|thumb|UNIVAC I|362x362px|none]]


{| class="wikitable"
{| class="wikitable"
Line 139: Line 432:




=== <u>The Von Neumann Architecture (1945–1946)</u> ===
=== <u>The Von Neumann Architecture (1945-1946)</u> ===
Formulated by mathematician [[John von Neumann]], this theoretical framework defines the core hardware layout used by modern computers, including PCs, smartphones, and embedded systems.
Formulated by mathematician John von Neumann, this theoretical framework defines the core hardware layout used by modern computers, including PCs, smartphones, and embedded systems.
 
The architecture of a PC is understood as '''the way of distributing the different hardware devices''' so that they interact in the best possible way.
[[File:Von neumann architecture.png|none|thumb|532x532px|Von Neumann architecture]]


'''Core Components'''
'''Core Components'''
Line 146: Line 442:
The Von Neumann model divides a computer system into four main functional blocks connected by buses:
The Von Neumann model divides a computer system into four main functional blocks connected by buses:


# '''Central Processing Unit (CPU)''' : The brain of the computer that processes all data.
# '''Central Processing Unit (CPU)''': The brain of the computer that processes all data.
#* '''Control Unit (CU)''': Fetches, decodes, and sequences instructions from memory.
#* '''Control Unit (CU)''': Fetches, decodes, and sequences instructions from memory.
#* '''Arithmetic Logic Unit (ALU)''': Executes mathematical calculations (`+`, `-`, `*`, `/`), logical operations (`AND`, `OR`), and comparisons (`<`, `>`, `=`).
#* '''Arithmetic Logic Unit (ALU)''': Executes mathematical calculations (`+`, `-`, `*`, `/`), logical operations (`AND`, `OR`), and comparisons (`<`, `>`, `=`).
Line 154: Line 450:
# '''System Buses''': Communication pathways that transmit data, memory addresses, and control signals.
# '''System Buses''': Communication pathways that transmit data, memory addresses, and control signals.


Simulador Von Neumann: https://www.youtube.com/watch?v=SBX9pma_e-g
<div class="mw-collapsible mw-collapsed" style="border: 1px solid #a2a9b1; background-color: #f8f9fa; padding: 10px; margin: 10px 0; border-radius: 4px;">
'''Machine language: Hardware-level binary execution'''
<div class="mw-collapsible-content" style="margin-top: 8px;">
In first-generation electronic systems (Era II), computers possessed no operating systems or compilers; they executed programs encoded strictly in primitive binary machine instructions.
* '''Nature of machine code:''' Machine code consists of raw hexadecimal or binary sequences (strings of 0s and 1s) directly decoded by the CPU’s control unit via digital logic gates.
* '''Instruction structure:''' Each instruction maps directly to the underlying architecture and consists of:
** ''Opcode (Operation code):'' Specifies the hardware operation (e.g., fetch memory, load accumulator, add register, jump).
** ''Operands/Addresses:'' Specifies the target memory locations or hardware registers involved.
* '''The First-generation programming experience:'''
** Early systems like ENIAC originally required physically re-plugging patch cords and setting rotary switches to alter routines.
** With stored-program systems (EDVAC, EDSAC), instructions were toggled manually via front-panel console switches or entered byte-by-byte into memory registers, resulting in extreme cognitive fatigue and tedious debugging.
* '''Transition to assembly:''' The immense difficulty of reading raw binary prompted the creation of Assembly language (Second Generation), substituting numeric opcodes with human-readable mnemonics (e.g., <code>MOV</code>, <code>ADD</code>, <code>JMP</code>) that assembled 1-to-1 into machine instructions.
</div>
</div>


== Comparison of Computing Generations, Key Technologies, and Physical Specifications ==
<div class="mw-collapsible mw-collapsed" style="border: 1px solid #c8ccd1; background-color: #f8f9fa; padding: 12px; margin: 12px 0; border-radius: 4px;">
'''Simple example: What machine language actually looks like (Adding 5 + 3)'''
<div class="mw-collapsible-content" style="margin-top: 10px;">
 
At its most basic level, a computer cannot read English words or complex code. It only understands numbers that turn tiny electronic switches on (1) or off (0).
 
Here is a 5-byte program that adds the numbers 5 and 3:
 
{| class="wikitable" style="margin-top: 8px;"
! Binary (What the chip sees) !! Hexadecimal !! What the CPU actually does !! Normal description
|-
| <code>10110000 00000101</code> || <code>B0 05</code> || Put the number 5 into memory slot <code>AL</code> || Load first number
|-
| <code>00000100 00000011</code> || <code>04 03</code> || Add the number 3 to memory slot <code>AL</code> || Add second number
|-
| <code>11110100</code> || <code>F4</code> || Stop working until told otherwise || Halt (Stop)
|}
 
'''The entire program in machine code is just 5 bytes:'''
<pre>B0 05 04 03 F4</pre>
 
* '''Step 1:''' The CPU reads <code>B0</code> and knows it must copy a number into its internal register. It reads <code>05</code> and stores 5.
* '''Step 2:''' The CPU reads <code>04</code>, which triggers its adding circuit. It reads <code>03</code>, adds it to the 5 already stored, and gets 8.
* '''Step 3:''' The CPU reads <code>F4</code> and halts.
 
Before compilers and programming languages were invented, programmers had to write and debug long sequences of these exact numbers by hand.
 
</div>
</div>
 
== Era III: Second and Third Generations (1958–1974) ==
The shift from vacuum tubes to modern solid-state electronics occurred across two distinct phases.
 
=== Second generation: The discrete transistor era (1958–1964) ===
[[File:Hardware 2nd generation transistor.png|none|thumb|526x526px]]
Prior to this era, first-generation computers relied on thermionic vacuum tubes, which functioned like incandescent light bulbs: fragile, hot, power-hungry, and prone to burning out every few hundred hours.
 
The invention of the point-contact and bipolar junction transistor at Bell Labs (1947–1951) introduced the '''first solid-state switch''':
 
* '''Replacing the vacuum tube:''' Transistors performed the identical electronic task as vacuum tubes (amplification and binary on/off switching) using solid semiconductor materials (initially germanium, later silicon) without requiring a heated filament or vacuum envelope.
* '''Advantages over tubes:'''
** Power consumption dropped from tens of watts per tube to milliwatts per transistor.
** Heat dissipation was radically minimized, allowing denser chassis design without extreme industrial air conditioning.
** Mean Time Between Failures (MTBF) improved from hours to tens of thousands of hours.
* '''The Bottleneck "The Tyranny of numbers":'''
** Second-generation machines (such as the IBM 7090 and CDC 1604) still used '''discrete components'''.
** Each transistor, diode, capacitor, and resistor was manufactured as a separate physical part. Engineers had to hand-solder hundreds of thousands of individual copper wires to connect these parts onto circuit boards.
** As computers grew more capable, the sheer number of soldered joints created an insurmountable reliability barrier: a system with 100,000 discrete components had hundreds of thousands of potential solder-joint failure points.
[[File:Transistors evolution.png|thumb|transistors evolution|left|268x268px]]
[[File:Transistor 14nm.png|none|thumb|transistor 14nm|500x500px]]
 
<div class="mw-collapsible mw-collapsed" style="border: 1px solid #a2a9b1; background-color: #f8f9fa; padding: 10px; margin: 10px 0; border-radius: 4px;">
'''High-level language programs: abstraction over hardware'''
<div class="mw-collapsible-content" style="margin-top: 8px;">
 
Coinciding with the arrival of reliable transistor-based systems (Era III, 1958–1964), computing underwent a revolution by decoupling algorithm design from hardware instruction sets.
 
* '''Hardware independence & abstraction:''' High-level programming languages (HLL) enable developers to write declarative mathematical expressions and algorithmic logic using English keywords, shielding programmers from specific register architectures and memory topologies.
* '''Pioneering high-level languages:'''
** ''FORTRAN (Formula Translation, 1957):'' Created by John Backus at IBM for scientific and numerical computation, proving that compiled code could match the execution speed of hand-crafted assembly.
** ''LISP (List Processing, 1958):'' Pioneered symbolic computation, dynamic typing, and tree-based data structures for early artificial intelligence research.
** ''COBOL (Common Business-Oriented Language, 1959):'' Standardized by a committee guided by Grace Hopper, tailored for enterprise records, payroll, and business logic with English-like syntax.
* '''The Role of compilers and interpreters:''' High-level source code cannot be executed directly by silicon logic. A translation layer—a ''compiler'' (translating entire programs to object/machine code ahead of execution) or an ''interpreter'' (evaluating statements dynamically line-by-line)—is required to map abstractions down to underlying machine cycles.
 
</div>
</div>
 
<div class="mw-collapsible mw-collapsed" style="border: 1px solid #c8ccd1; background-color: #f8f9fa; padding: 12px; margin: 12px 0; border-radius: 4px;">
'''Understanding an x86 Assembly "Hello, World!" program'''
<div class="mw-collapsible-content" style="margin-top: 10px;">
 
Assembly language provides a direct, human-readable 1-to-1 mapping to raw machine instructions. Because there is no runtime engine or standard library handling printing, the program communicates directly with the operating system kernel using '''registers''' (high-speed internal CPU storage slots) and '''system calls''' (<code>syscalls</code>).
 
=== The Program Source ===
<syntaxhighlight lang="nasm">
section .data
    hello db 'Hello, World!', 0Ah  ; The string with a newline character
 
section .text
    global _start
 
_start:
    ; 1. Write syscall
    mov eax, 4          ; sys_write
    mov ebx, 1          ; stdout file descriptor
    mov ecx, hello      ; pointer to message
    mov edx, 14        ; length of message (including newline)
    int 80h            ; call kernel
 
    ; 2. Exit syscall
    mov eax, 1          ; sys_exit
    xor ebx, ebx        ; exit code 0
    int 80h            ; call kernel
</syntaxhighlight>
 
=== Step-by-Step Explanation ===
'''1. Memory Segments (Data vs. Code)'''
* <code>'''section .data'''</code>: Declares static, initialized memory.
** <code>hello db 'Hello, World!', 0Ah</code>: <code>db</code> stands for ''Define Byte''. It stores the ASCII characters in sequential memory addresses followed by <code>0Ah</code> (hexadecimal for decimal 10, the newline character <code>\n</code>).
* <code>'''section .text'''</code>: Defines the memory area where executable CPU instructions live.
* <code>'''global _start'''</code>: Informs the linker where the program execution begins (the program entry point, similar to <code>main()</code> in C).
'''2. Preparing the Write System Call (Lines 9–14)'''
 
To display text, the program asks the Linux kernel to run its internal `sys_write` routine. The kernel expects arguments loaded into specific CPU registers before execution:
{| class="wikitable"
! Register !! Value Loaded !! Purpose
|-
| <code>EAX</code> || <code>4</code> || The system call ID for <code>sys_write</code> in 32-bit Linux.
|-
| <code>EBX</code> || <code>1</code> || The destination file descriptor: <code>1</code> represents standard output (<code>stdout</code> / the screen).
|-
| <code>ECX</code> || <code>hello</code> || The memory address (pointer) pointing to the first letter ('H') of the string.
|-
| <code>EDX</code> || <code>14</code> || The exact byte length to print (13 letters/punctuation + 1 newline byte).
|-
| <code>'''int 80h'''</code> || — || '''Interrupt:''' Pauses user code execution and transfers control to the operating system kernel to perform the requested write operation.
|}
'''3. Clean program exit (Lines 16–20)'''
 
In Assembly, execution does not stop automatically at the end of the file; without an explicit exit instruction, the CPU continues reading random adjacent memory as instructions, causing a crash (*Segmentation fault*).
* <code>'''mov eax, 1'''</code>: Loads the system call number for <code>sys_exit</code> into <code>EAX</code>.
* <code>'''xor ebx, ebx'''</code>: Sets register <code>EBX</code> to <code>0</code> (XORing any number against itself equals 0; this is faster and takes fewer bytes than <code>mov ebx, 0</code>). This serves as the exit status code (0 = success).
* <code>'''int 80h'''</code>: Triggers the interrupt again, cleanly terminating the process.
 
</div>
</div>
 
=== Third generation: Integrated circuits (1964–1974) ===
The Third Generation did '''not''' replace the transistor. Instead, it solved the "Tyranny of Numbers" by replacing the physical wiring between transistors with chemical lithography on a single crystal slab. A frequent misconception is that integrated circuits replaced transistors; in reality, '''the transistor remained the fundamental building block of computing'''. The revolution lay in how transistors were manufactured, packaged, and connected: moving from individually wired components to micro-etched, monolithic semiconductor circuits.
 
Invented independently by Jack Kilby (Texas Instruments, 1958) and Robert Noyce (Fairchild Semiconductor, 1959), the '''Integrated Circuit (IC)''' unified active components (transistors, diodes) and passive components (resistors, capacitors) into a single continuous substrate.
 
'''How the IC transformed the transistor'''
* '''Monolithic integration:''' Instead of soldering individual transistors onto a board, dozens (SSI, Small-Scale Integration) and then hundreds (MSI, Medium-Scale Integration) of transistors were diffused and etched directly onto a single slice of silicon.
* '''Photolithography:''' Microscopic interconnects were deposited chemically (planar process) rather than wired by hand. The physical connection between transistors became part of the silicon chip itself.
* '''Speed and physical distance:''' Because electrical signals propagate at a fraction of the speed of light (~20 cm/ns in copper traces), discrete systems lost processing time just waiting for signals to travel down copper traces. Compressing thousands of transistors into millimeters of silicon shortened signal travel times by orders of magnitude, dramatically increasing clock speeds.
* '''Economic scaling:''' Batch fabrication meant an entire wafer containing hundreds of ICs, each holding thousands of transistors, could be produced simultaneously, dropping the per-transistor manufacturing cost from dollars to fractions of a cent.
'''Landmark Systems of Era III'''
* '''IBM System/360 (1964):''' Bridged the transition using Solid Logic Technology (hybrid IC modules) and established the first standard mainframe family where software was backward-compatible across different price tiers.
* '''Apollo Guidance Computer (1966):''' The first major production consumer of monolithic silicon integrated circuits, utilizing thousands of standard dual 3-input NOR gate ICs, proving that micro-circuitry possessed the extreme reliability needed for human spaceflight.
* '''DEC PDP-8 (1965):''' The emergence of the minicomputer, leveraging smaller footprint electronics to make computing accessible to individual university departments and laboratories rather than just massive corporate datacenters.
 
=== Comparison: Tubes vs. Discrete Transistors vs. Integrated Circuits ===
[[File:Vacuum transistor ic.png|none|thumb|499x499px|vacuum transistor ic]]
{| class="wikitable" style="width:100%; text-align:left;"
!Parameter
!1st Gen: Vacuum Tubes
!2nd Gen: Discrete Transistors
!3rd Gen: Integrated Circuits (ICs)
|-
|'''Historical Period'''
|1946–1958
|1958–1964
|1964–1974
|-
|'''Fundamental Switching Element'''
|Thermionic valve (vacuum tube / vàlvula de buit)
|Individual solid-state transistor
|Integrated circuits (electrical components integrated into a single piece)
|-
|'''Component Interconnect'''
|Heavy copper chassis wiring & tube sockets
|Point-to-point soldered PCB copper traces
|Microscopic planar photolithographic traces
|-
|'''Transistor Density'''
|0 (Vacuum tubes)
|1 transistor per physical component
|Dozens to thousands of transistors per package
|-
|'''Physical Scale & Maintenance'''
|Room-scale mainframes; very large size and complicated maintenance
|Cabinet-sized units; smaller dimensions
|Desktop and compact cabinet minicomputers; reduced footprint
|-
|'''Power Consumption & Efficiency'''
|High power consumption
|Lower power consumption, higher energy efficiency
|Significantly reduced power consumption
|-
|'''Performance & Reliability'''
|Low speed, frequent valve burnout
|Gain in processing power, speed, and reliability
|Higher execution speed
|-
|'''Primary Failure Mode'''
|Burnout of heated cathodes (~hundreds of hours)
|Soldered joint fractures, manual assembly flaws
|Silicon manufacturing impurities (solid-state run life in decades)
|-
|'''Programming & Software'''
|Machine language
|High-level languages (COBOL, ALGOL, FORTRAN)
|Major software evolution (operating systems, structured programming)
|-
|'''Input & Primary Storage Media'''
|Punched cards
|Magnetic tapes and magnetic drums
|Magnetic disks
|-
|'''Notable Systems / Examples'''
|ENIAC, UNIVAC 1
|IBM 1401, IBM 7090, CDC 1604
|IBM System/360, DEC PDP-8
|}
 
 
 
 
 
== Era IV: Fourth Generation & Modern Computing (1974-Present) ==
The fourth generation of computing is defined by the development of the '''microprocessor''', which integrated the entire Central Processing Unit (CPU) onto a single integrated circuit chip.
 
=== The microprocessor & The PC revolution ===
Integrating all CPU components onto a single chip drastically reduced production costs and physical size while boosting processing speeds.
 
* '''Personal computers (PCs)''': In 1981, IBM introduced the IBM Personal Computer|IBM PC, bringing computing power out of specialized laboratories and into homes and offices.
* '''Storage advances:''' Internal hard disk drives (HDDs), floppy disks, and later solid-state drives (SSDs) expanded local data storage capacity.
* '''Network integration''': Devices became interconnected through local networks and the Internet, expanding access to information.
 
=== Modern architecture enhancements ===
Modern processors expand upon the classical Von Neumann model to overcome performance bottlenecks and execute instructions faster:
 
* '''Floating-Point Unit (FPU)''': A specialized hardware block designed specifically to handle fractional, trigonometric, and logarithmic operations in a single cycle. It used to be made by the ALU, but FPU reduces its processing time in hundreds.
* '''Cache memory (L1, L2, L3)''': High-speed internal memory layers that store frequently accessed data close to the CPU core to reduce memory latency.
* '''System buses''':
** '''Front-Side Bus (FSB)''': Connects the secondary cache and CPU to the motherboard and main memory (typically 64 bits wide).
** '''Back-Side Bus (BSB)''': High-speed internal interface connecting the CPU core directly to L1 and L2 caches.
* '''Parallelism & Specialization''': Advanced techniques such as instruction pipelining, superscalar execution, hyper-threading, multi-core architectures, and specialized instruction sets (MMX, Streaming SIMD Extensions|SSE) allow computers to process multiple instructions simultaneously.<br />
 
=== Multicore Processors: Multiple cores on a single chip ===
A '''multicore processor''' packs two or more complete, independent central processing units (called '''cores''') onto a single piece of hardware, typically a single silicon chip or a small group of interconnected chip. Instead of running one single core at blisteringly high clock speeds (which produces excessive heat and draws too much power), CPU designers split the work across multiple cores running at efficient frequencies.<div class="mw-collapsible mw-collapsed" style="border:1px solid #ccc; padding:10px; background:#f9f9f9; border-radius:4px; margin-top:10px;">
'''How do multiple cores fit and work on a single hardware piece?'''<div class="mw-collapsible-content" style="margin-top:8px;">
Fitting multiple CPU cores onto a single piece of silicon requires three key hardware solutions:
 
'''1. Physical layout on the silicon chip'''
* '''Photolithography:''' Millions (or billions) of microscopic transistors are etched directly into one continuous piece of silicon using light. A modern 4-core, 8-core, or 16-core chip simply etches several complete CPU processing units side-by-side on that same slice of silicon.
* '''Monolithic vs. Chiplets:'''
** ''Monolithic Design:'' All cores, memory controllers, and caches are etched onto one single slab of silicon (common in laptops and smartphones).
** ''Chiplet Design:'' Several smaller silicon tiles (each containing multiple cores) are placed on the same fiberglass substrate and connected via microscopic high-speed bridges (popularized by AMD Ryzen and modern enterprise chips).
'''2. Shared memory and on-chip interconnects'''
 
If cores were completely isolated, they couldn't coordinate. They share space and communicate using an on-chip network:
 
* '''Layered Caches:'''
** Each core has its own tiny, ultra-fast memory ('''L1 and L2 caches''') right next to its execution pipeline.
** All cores share a larger, central memory block on the same chip (the '''L3 cache'''), allowing them to pass data without having to travel across the motherboard to the main RAM.
* '''Data Highways (Interconnects):''' Cores are linked together by on-chip microscopic "highways" (such as a circular '''Ring Bus''' or a '''Grid/Mesh network''') that let them swap information in nanoseconds.
'''3. Coordinated Execution (The Role of the OS)'''
 
To the computer's operating system (Windows, macOS, Linux), each hardware core appears as a distinct processor:
 
* The OS task scheduler automatically assigns different applications (e.g., your web browser on Core 0 and a video game on Cores 1–4) to run concurrently.
* When working on a single heavy application (like rendering 3D graphics or encoding video), the software splits the job into multiple smaller tasks (called '''threads'''), allowing all cores to work on parts of the same problem simultaneously.
 
{| class="wikitable" style="margin-top:10px; width:100%;"
!Component
!Role on the single CPU chip
|-
|'''Individual Core'''
|Fetches, calculates, and executes instructions independently.
|-
|'''Private Caches (L1/L2)'''
|Instant local memory right next to each core.
|-
|'''Shared Cache (L3)'''
|Common pool of memory on the chip that all cores read from.
|-
|'''Internal Interconnect'''
|Microscopic high-speed bus connecting all cores to each other and to the RAM controller.
|}
</div></div>
 
 
== Comparison of computing generations, key technologies, and physical specifications ==
{| class="wikitable"
{| class="wikitable"
!Era / Generation
!Era / Generation
Line 162: Line 750:
!Representative Computer & Physical Specifications
!Representative Computer & Physical Specifications
|-
|-
|'''Pre-Generation''' ⚙️
|'''Pre-Generation'''  
|1833–1944
|1833-1944
|
|
* Transition from mechanical to electro-mechanical computing[cite: 1].
* Transition from mechanical to electro-mechanical computing.
* Introduction of foundational units: Input, Memory (Store), Control Unit, ALU (Mill), Output[cite: 1].
* Introduction of foundational units: Input, Memory (Store), Control Unit, ALU (Mill), Output.
* Implementation of punched cards for data input[cite: 1].
* Implementation of punched cards for data input.
|'''IBM Harvard Mark I (1944)'''[cite: 1]
|'''IBM Harvard Mark I (1944)'''
 
* '''Dimensions:''' 17 m long × 2 m high
* '''Dimensions:''' 17 m long × 2 m high[cite: 1]
* '''Weight:''' 70 tons
* '''Weight:''' 70 tons[cite: 1]
* '''Components:''' 700,000 moving parts
* '''Components:''' 700,000 moving parts[cite: 1]
* '''Speed:''' Addition < 1s, Multiplication ~6s
* '''Speed:''' Addition < 1s, Multiplication ~6s[cite: 1]
|-
|-
|'''1st Generation''' 💡
|'''1st Generation'''  
|1946–1958[cite: 1]
|1946-1958
|
|
* Built using '''vacuum tubes'''[cite: 1].
* Built using '''vacuum tubes'''.
* Large physical footprint, high power draw, complex maintenance[cite: 1].
* Large physical footprint, high power draw, complex maintenance.
* Programmed directly in machine language[cite: 1].
* Programmed directly in machine language.
* Establishment of stored-program model ([[Von Neumann Architecture]])[cite: 1].
* Establishment of stored-program model (Von Neumann Architecture).
|'''ENIAC (1946)'''[cite: 1] & '''UNIVAC I (1951)'''[cite: 1]
|'''ENIAC (1946)''' & '''UNIVAC I (1951)'''
 
* '''ENIAC:''' ~167 m² floor space, 30 tons weight, ~160 kW power draw, 17,468 vacuum tubes, 5,000 additions/sec.
* '''ENIAC:''' ~167 m² floor space, 30 tons weight, ~160 kW power draw, 17,468 vacuum tubes, 5,000 additions/sec[cite: 1].
* '''UNIVAC I:''' ~35.5 m² floor space, 13 tons weight, 125 kW power draw, 5,200 vacuum tubes.
* '''UNIVAC I:''' ~35.5 m² floor space, 13 tons weight, 125 kW power draw, 5,200 vacuum tubes[cite: 1].
|-
|-
|'''2nd Generation''' ⚡
|'''2nd Generation'''  
|1958–1964[cite: 1]
|1958-1964
|
|
* '''Transistors''' replace vacuum tubes[cite: 1].
* '''Transistors''' replace vacuum tubes.
* Reduced size, lower cost, improved speed and reliability[cite: 1].
* Reduced size, lower cost, improved speed and reliability.
* Emergence of high-level programming languages ([[FORTRAN]], [[COBOL]], [[ALGOL]])[cite: 1].
* Emergence of high-level programming languages (FORTRAN, COBOL, ALGOL).
* Data stored on magnetic tapes and drums[cite: 1].
* Data stored on magnetic tapes and drums.
|Transistorized room-sized mainframe systems utilizing magnetic drum and tape storage[cite: 1].
|Transistorized room-sized mainframe systems utilizing magnetic drum and tape storage.
|-
|-
|'''3rd Generation''' 🔲
|'''3rd Generation'''  
|1964–1974[cite: 1]
|1964-1974
|
|
* Integration of components onto '''Integrated Circuits (ICs)'''[cite: 1].
* Integration of components onto '''Integrated Circuits (ICs)'''.
* Lower power consumption, smaller footprint, faster processing speeds[cite: 1].
* Lower power consumption, smaller footprint, faster processing speeds.
* Adoption of magnetic disk storage[cite: 1].
* Adoption of magnetic disk storage.
* Evolution of software applications (database management, computer-aided design)[cite: 1].
* Evolution of software applications (database management, computer-aided design).
|Mainframes and minicomputers integrated onto single-chip component boards[cite: 1].
|Mainframes and minicomputers integrated onto single-chip component boards.
|-
|-
|'''4th Generation''' 🔬
|'''4th Generation'''  
|1974–Present[cite: 1]
|1974-Present
|
|
* Introduction of the '''Microprocessor''' (entire CPU on a single IC)[cite: 1].
* Introduction of the '''Microprocessor''' (entire CPU on a single IC).
* Significant size reduction and drastic increase in execution speed[cite: 1].
* Significant size reduction and drastic increase in execution speed.
* Dawn of the Personal Computer (PC) era (e.g., IBM PC in 1981)[cite: 1].
* Dawn of the Personal Computer (PC) era (e.g., IBM PC in 1981).
* Development of floppy disks, compact hard drives, and computer networks[cite: 1].
* Development of floppy disks, compact hard drives, and computer networks.
|'''IBM PC (1981) & Modern Microprocessors'''[cite: 1]
|'''IBM PC (1981) & Modern Microprocessors'''
* Single-chip CPUs, high-density storage drives, 64-bit wide system buses.
|}
[[File:Ops graph.jpg|none|thumb|876x876px|Computing OPS over time]]


* Single-chip CPUs, high-density storage drives, 64-bit wide system buses[cite: 1].
== References ==
|}
https://en.wikipedia.org/wiki/Timeline_of_computing_before_1950
 
https://en.wikipedia.org/wiki/History_of_computing_hardware
[[Category:Hardware]]

Latest revision as of 16:39, 17 September 2026

Template:Infobox historic computing technology

Prologue: The necessity of automated computation

Before computing machines existed as physical objects of brass, vacuum tubes, or etched silicon, they existed as a pressing intellectual and logistical necessity. The history of computing hardware is fundamentally the story of humanity building prosthetics for the human mind, externalizing calculation, memory, and logic to overcome innate biological constraints.

1. The cognitive bottleneck and human fallibility

Human working memory is biologically limited: the brain struggles to track more than a few transient symbols, carries, and intermediate sums simultaneously without exponential error rates.

  • The cognitive tax of monotony: High-precision calculation requires repetitive, deterministic execution over long durations. Human psychology is poorly adapted to such monotony; fatigue, distraction, and cognitive drift inevitably introduce subtle arithmetic mistakes.
  • Cascading error propagation: In iterative mathematics, such as computing navigation tables, astronomical ephemerides, or ballistic trajectories, a single transcription or carrying error in step two renders every subsequent calculation down to step ten thousand completely invalid.
  • The "Human Computer": Prior to the 1940s, the word computer designated a job title, not an apparatus. Scores of human clerks, mostly women, performed day-long arithmetic by hand. As late as the 18th and 19th centuries, government and maritime navigation tables were notorious for errata pages that were themselves riddled with new errors introduced during manual typesetting. As Charles Babbage famously lamented in 1821 while reviewing flawed astronomical tables:
"I wish to God these calculations had been executed by steam!"
hardware cognitive bottleneck

2. The problems computing solved: From survival to scale

Computing machinery emerged not out of abstract curiosity, but under the acute pressure of societal scale and physical survival:

  • Navigational safety and global trade (17th–19th Century):
Maritime commerce and naval dominance depended entirely on accurate celestial navigation. Calculating longitude required precise tables of lunar distances and solar positions. A five-arcminute error in a printed navigational table could throw a ship off course by hundreds of miles, resulting in shipwrecks and catastrophic loss of life and cargo.
  • The crisis of demographic and administrative scale (Late 19th Century):
Industrialization created administrative structures far too vast for manual bookkeeping. By 1890, the United States Census Bureau was on track to take more than a decade to tally the national census by hand, meaning the results would be obsolete before completion. The invention of the punch-card tabulating machine by Herman Hollerith cut the processing time to months, demonstrating that modern bureaucratic societies could not govern or tax without automated data processing.
  • Ballistics, cryptanalysis, and military urgency (World War II):
The emergence of modern warfare created mathematical problems that had to be solved faster than real-time:
  • Calculating firing tables for artillery that factored in wind speed, barrel wear, and air temperature.
  • Cracking encrypted military communications (such as the German Enigma and Lorenz ciphers) required testing thousands of permutations per second, giving rise to mechanical and electronic cryptanalytic engines like the Polish Bomba, Alan Turing’s Bombe, and the British Colossus.
  • Modeling nuclear chain reactions for the Manhattan Project demanded millions of interdependent partial differential equations, directly accelerating the development of stored-program electronic mainframes like ENIAC.
hardware survival to scale

3. The human dimension: automating the machine within us

A profound paradox in the history of technology is that computing did not begin by automating human thought; it began by automating human mechanical compliance.

Manual arithmetic, book balancing, and table lookup do not require creative consciousness, they require rigid obedience to algorithmic rules. By delegating purely repetitive, procedural algorithms to physical machines, society achieved two transformative shifts:

  1. Liberating intellect from drudgery: Scientists, engineers, and thinkers were freed from spending entire lifetimes acting as mechanical adders, enabling them to focus on high-level hypothesis formulation, architectural design, and conceptual reasoning.
  2. decoupling truth from sensory limits: Human senses perceive reality on immediate, macro timescales. Modern computational machines can simulate phenomena inaccessible to unassisted human experience: quantum interactions inside atoms, tectonic shifts spanning millions of years, and cosmological modeling of galactic collisions.

Hardware history is therefore not merely a lineage of physical gadgets, but the progressive externalization of human reason into physical matter.

Automating machine within us


Era 0: Pre-mechanical calculation and early automata (Antiquity-1830s)

Computing has evolved along two parallel paths:

Foundational calculation tools

Before mechanical gears were introduced, human calculation was heavily bottlenecked by working memory, specifically the cognitive load of tracking intermediate sums, carrying tens, and executing multi-step multiplication. Early tools were designed not to automate thought, but to serve as external, physical registers and lookup systems.

  • The Abacus (c. 2700-500 BCE): Positional memory register
    • How it works: Rather than calculating on its own, an abacus acts as an external physical register. Beads arranged on parallel rods or grooves represent specific decimal place values (units, tens, hundreds, thousands).
    • Cognitive relief: The user executes mental arithmetic rules, but never needs to hold multi-digit numbers or carries in short-term memory; the physical position of the pushed beads instantly stores the current state and intermediate results.
  • The counting board and jetons (Medieval to renaissance Europe, c. 1100-1600s) - Positional grid computation
    • How it works: Rather than beads permanently fixed on wires, European merchants and money-changers used a flat wooden table or cloth marked with parallel lines representing powers of ten (or British pounds, shillings, and pence). Calculations were performed by physically placing, sliding, and clearing metal cast counters called jetons.
    • Cognitive relief: It allowed rapid commercial accounting in Roman-numeral Europe without requiring written scratch paper. By turning complex currency conversions into physical movement of tokens across labeled lines, the clerk avoided mental carrying mistakes.
      counting board and jetons
      board and jetons table
Historical context: Why physical aids preceded pen-and-paper calculation

While performing arithmetic with pen, paper, and written digits seems fundamental today, dynamic calculation using scratch paper was impractical for most of human history due to economic, linguistic, and cognitive barriers:

  • Scarcity and cost of writing media: Prior to industrial wood-pulp papermaking in the 19th century, writing surfaces such as papyrus, vellum (animal skin), and rag paper were costly commodities reserved for legal deeds, state censuses, and holy texts. Wasting consumable sheets on intermediate scratch work and discarded calculations was financially prohibitive. Physical instruments like the abacus, counting boards, or sliding rules could be reset indefinitely without consuming materials.
  • Limitations of pre-positional numeral systems: Western commerce historically operated under Roman numerals (I, V, X, L, C, D, M), which lacked a zero and place-value notation. Attempting to perform multi-digit multiplication or long division symbolically on paper using Roman numerals is exceptionally difficult. As a result, computation was handled externally on physical lines (using stones or tokens called jetons), and paper was used exclusively at the very end to record the final sum.
  • High barrier of mathematical literacy: Even after the Hindu-Arabic positional decimal system was popularized in Europe via Fibonacci's Liber Abaci (1202), written algorithmic arithmetic ("algorism") remained an elite academic skill taught in specialized guild schools. Tactile counting frames allowed merchants and apprentices to compute rapidly through physical rules without needing advanced arithmetic literacy.
  • Human working memory and error propagation: Long multi-digit manual arithmetic forces the human brain to simultaneously recall multiplication tables, track running carry values, and transcribe staggered sums, each step introducing points of human failure. Physical tools effectively externalized cognitive registers:
    • Napier's Bones physically encoded the multiplication table, converting multi-digit operations into simple diagonal single-digit additions.
    • The Slide Rule converted algebraic multiplication and division into continuous spatial distances, allowing an engineer to obtain multi-digit approximations in seconds without performing a single written calculation.
Functional division: Pen-and-paper vs. physical calculation aids
Factor Pen-and-Paper Arithmetic Physical Calculation Aids
Resource model Consumable (ink, parchment, or rag paper spent per calculation) Indefinitely reusable (pebbles, wooden beads, brass slides)
Prerequisites Advanced numeracy, literacy, and memorized carrying algorithms Simple tactile motion rules; functional across different languages/scripts
Primary historical role Static storage: Preserving final results, deeds, and ledgers Dynamic processing: Real-time arithmetic and intermediate state tracking
  • The Astrolabe (c. 400-1500s) - Two-dimensional analog celestial calculator
    • How it works: Highly refined by Islamic Golden Age astronomers and mathematicians, the planispheric astrolabe mapped the 3D celestial sphere onto a flat, rotating brass coordinate plate (stereographic projection).
    • Cognitive relief: Instead of solving complex spherical trigonometry formulas by hand, navigators and astronomers could solve local solar time, twilight, prayer hours, and planetary positions in seconds by aligning sighting pointers on the brass plate with the observed altitude of a star or the sun.
      Astrolabio
  • The Sector or Proportional Compass (c. 1560) - Geometrical proportional calculator
    • How it works: Developed independently by inventors such as Fabrizio Mordente, Guidobaldo del Monte, and perfected by Galileo Galilei, the sector consisted of two hinged brass arms marked with calibrated scales (arithmetic, geometric, trigonometric).
    • Cognitive relief: Using the geometric theorem of similar triangles and a simple pair of dividers, operators could calculate proportions, scale drawings, compute gunnery trajectories, and extract square or cube roots mechanically without performing manual long-hand arithmetic.
      Proportional compass
  • Napier’s Bones (1617) - Lattice multiplication on rods
    • How it works: Invented by Scottish mathematician John Napier, this tool consists of a set of indexed wooden, bone, or ivory rods inscribed with multiplication tables. Each square on a rod is divided by a diagonal line separating tens from units (the basis of lattice or "gelosia" multiplication).
    • Cognitive relief: To multiply a complex number (e.g., 425 × 7), the operator simply arranges the rods labeled 4, 2, and 5 side by side. Reading across row 7, the multiplication is instantly converted into simple, low-effort diagonal additions of adjacent digits, completely eliminating the need to memorize or look up multiplication tables.
  • The Slide Rule (1622): Logarithmic analog computation:
    • How it works: Developed by William Oughtred and others shortly after Napier defined mathematical logarithms, the slide rule places logarithmic scales onto sliding linear rules.
    • Cognitive relief: Because logarithms translate multiplication into addition (log(a · b) = log a + log b) and division into subtraction, a user can multiply or divide two numbers simply by aligning sliding physical distances. The operator offloads difficult calculation to a fast, visual spatial alignment, yielding results accurate to three or four significant digits.
      slide rule oughtred


Mechanical calculating machines

Designed to automate calendar cycles, astronomical tracking, and arithmetic carry operations.

  • Antikythera mechanism (c. 150-100 BCE): An ancient Greek bronze mechanism comprising over 30 intricate differential gears. Used to track and predict lunar phases, solar cycles, Olympiads, and eclipses, it represents the earliest known geared analog computing device.
    antikythera
  • Schickard's calculating clock (1623): German polymath Wilhelm Schickard designed the earliest documented mechanical calculator using linked gear wheels and single-tooth trip mechanisms to automate multi-digit addition and subtraction.
    schickards calculating clock
    https://www.youtube.com/shorts/vi_33gmJoBU
  • Pascal's Pascaline (1642): Built by Blaise Pascal to aid his father in taxation records, the Pascaline became the first widely recognized, operational mechanical adder. Its central breakthrough was the sautoir, a gravity-weighted pawl mechanism that reliably handled multi-dial tens carry operations.
    Pascal's pascaline
  • Leibniz's Stepped Reckoner (1673): Gottfried Wilhelm Leibniz introduced the stepped gear cylinder (the Leibniz wheel), enabling a mechanical machine to perform direct multiplication and division alongside addition and subtraction. Leibniz was also the first to systematically document the modern binary number system (1679).
    Leibniz reckoner
  • Thomas de Colmar's Arithmometer (1820): The first mechanically reliable, commercially manufactured calculator capable of daily office use, bringing four-function desktop calculation into mass adoption across finance and engineering.
    Colmar arithmometer
  • The Jacquard Loom (1804): The dawn of stored instruction In 1804, French weaver Joseph Marie Jacquard revolutionized textile production by automating loom operations through punched card chains. Perforated holes in stiff cards mechanically determined whether individual warp threads were lifted or lowered. While not designed for mathematical computation, Jacquard’s invention demonstrated the principle of external programmability, the ability to change the machine's task dynamically by feeding it a new set of interchangeable cards without modifying the underlying physical machinery. This directly inspired Charles Babbage’s design for the Analytical Engine's card-reading mechanism. Demonstration video: https://www.youtube.com/watch?v=pzYucg3Tmho
Jacquard loom


Comparison of Era 0 computing devices

Device / System Primary Inventor / Origin Operating Era Working Principle Historical Significance
Antikythera mechanism Ancient Greece c. 150-100 BCE Bronze gear trains and differential dials Earliest known astronomical analog calculator.
Napier's Bones & Slide Rule John Napier / William Oughtred 1617-1622 Logarithmic scales Replaced manual multi-digit multiplication with addition.
Pascaline Blaise Pascal 1642 Interlinked dial gears with gravity-assisted sautoir First practical mechanical decimal adder with automated carries.
Stepped Reckoner Gottfried Wilhelm Leibniz 1673 Fluted stepped drum (Leibniz wheel) Expanded mechanical arithmetic to direct multiplication and division.
Jacquard loom Joseph Marie Jacquard 1804 Perforated pasteboard punched-card chains Pioneered external data storage and mechanical execution control.
Arithmometer Thomas de Colmar 1820 Refined stepped cylinder desktop assembly First commercially successful mass-produced mechanical calculator.

Conceptual transition to Era I

The innovations of Era 0 revealed three fundamental lessons that directly guided the formulation of Era I:

  1. Digital mechanical representation: Proved that discrete numeric values and arithmetic operations could be mapped directly into mechanical gear teeth and rotational increments.
  2. External control: Demonstrated that punched physical media could program physical operations without altering mechanical hardware.
  3. The limit of single-purpose hardware: Highlighted that every machine prior to 1833 was inherently fixed-function (capable of only arithmetic or static astronomical tracking). Babbage's conceptual leap was unifying memory, a processing core, and conditional execution into a single, general-purpose computer.



Era I: Mechanical pioneers (1833)

Charles Babbage and the Analytical Engine

In 1833, British mathematician Charles Babbage conceived the Analytical Engine, widely considered the theoretical precursor to the modern general-purpose electronic computer. Although never fully constructed during his lifetime due to mechanical limitations, Babbage's design established five core functional units:

  • Input devices: For entering instructions and data.
  • Memory: For holding numbers and intermediate results.
  • Control Unit: For directing the sequence of operations.
  • Arithmetic Logic Unit (The Mill): For executing mathematical calculations.
  • Output Devices: For displaying or printing results.
Babbage Analytic engine

More about Babbage analytic engine

The "Real" Analytical Engine (1833)

In 1833, Charles Babbage designed the Analytical Engine, widely considered the theoretical precursor to the modern general-purpose computer.

How it worked

The Analytical Engine was designed as a fully mechanical, steam-powered machine. Remarkably, its architecture mirrored the core components of modern computers long before electronics existed:

  • Input system 📥: Instructions and data were fed into the machine using punched cards (a technique adapted from the Jacquard loom).
  • The store (Memory) 🧠: A vast system of gears and counter wheels designed to hold up to 1,000 numbers of 50 decimal digits each.
  • The Mill (ALU) 🔢: The mechanical processing unit capable of performing basic arithmetic (addition, subtraction, multiplication, division) and comparison tests.
  • Control unit 🎛️: Barrel controllers (similar to those in music boxes) orchestrated operations, allowing for conditional branching ("if/then") and loops
  • Output system 📤: Results were sent to a printer, a curve plotter, or punched directly onto cards.

Construction status

  • During Babbage's lifetime: Babbage never completed a fully functional, full-scale Analytical Engine due to funding shortages, personal disputes, and the limits of 19th-century mechanical precision.
  • Modern reconstructions: While a complete Analytical Engine has never been built, London's Science Museum constructed Babbage's simpler Difference Engine No. 2 in 1991, proving his mechanical theories were sound. An ongoing initiative called Plan 28 aims to construct a working Analytical Engine using Babbage's original drawings.
analytic engine London
Babbage’s precursor: The difference engine (Mechanical calculator)

Before conceiving the general-purpose Analytical Engine, Charles Babbage designed the Difference Engine (conceived in 1822) to address the rampant errors found in human-computed mathematical, astronomical, and navigation tables.

  • Core purpose: Unlike the programmable Analytical Engine, the Difference Engine was a dedicated, fixed-function mechanical calculator designed to evaluate polynomial functions using the method of divided differences.
  • The method of finite differences: Because many mathematical functions (such as logarithms and trigonometric ratios) can be approximated by polynomials, calculation could be reduced entirely to simple, sequential additions without requiring multiplication or division:
    • $\Delta f(x) = f(x+h) - f(x)$
    • By storing starting values and constant higher-order differences on geared columns, rotating the main crank cascaded carries across decimal wheels to generate successive table entries automatically.
  • Integrated Printing Mechanism: To eliminate typesetting and transcription mistakes (the final bottleneck in manual computing), the machine was designed to press the calculated digits directly into soft metal stereotyping plates ready for printing presses.
  • Realization: Although Babbage only completed a functional demonstration section (Difference Engine No. 1, 1832) during his lifetime due to funding cuts and precision-machining disputes with his toolmaker Joseph Clement, the London Science Museum successfully constructed a working, full-scale Difference Engine No. 2 in 1991, proving the mechanical soundess of his calculations.
baggage differencial engine

Ada Lovelace: The first programmer

Ada Lovelace (1815-1852), an English mathematician and writer, played a pivotal role in the conceptualization of general-purpose computing. While translated work on Babbage's Analytical Engine was published in 1842 by Italian engineer Luigi Menabrea, Lovelace added extensive "Notes" that were three times longer than the original paper itself.

Key contributions

  • The first computer algorithm: In "Note G," Lovelace detailed a step-by-step method for calculating Bernoulli numbers using the Analytical Engine. This execution plan is widely recognized as the world's first published algorithm designed specifically for implementation on a computer.
  • Beyond pure calculation: Lovelace had a visionary insight that set her apart from her contemporaries. While Babbage focused primarily on numerical calculation, Lovelace realized that if the machine could manipulate symbols representing any entity (such as musical notes or text), it could manipulate non-numeric data. She famously suggested that the engine "might compose elaborate and scientific pieces of music of any degree of complexity or extent."
  • Foundational programming concepts: Her notes introduced early conceptual models of programming techniques still used today, including Loop (computing)|loops, Subroutine|subroutines, and conditional instruction execution.


Note G in Python
from fractions import Fraction

def calculate_bernoulli_ada_lovelace(n_max):
    """
    Calculates Bernoulli numbers up to index n_max
    using the looping logic from Ada Lovelace's Note G.
    Uses the Fraction class to ensure exact historical precision.
    """
    # Note G calculates B_1, B_3, B_5... (which corresponds to B_2, B_4, B_6... in modern notation)
    # We use a dictionary to simulate the Analytical Engine's storage variables (V1, V2, V3...)
    B = {}
    
    print(f"{'Index (n)':<12}{'Bernoulli Number (B_n)':<25}")
    print("-" * 40)

    # Ada's main loop to calculate each term sequentially
    for n in range(2, n_max + 1, 2):
        # The independent term of the equation from Note G
        independent_term = Fraction(n - 1, 2 * (n + 1))
        
        # The inner loop: Ada's nested loop that multiplies 
        # previous Bernoulli numbers by the newly calculated coefficients
        inner_sum = Fraction(0, 1)
        for k in range(2, n, 2):
            # Calculating binomial coefficients according to Ada's sequence of operations
            coefficient = Fraction(n, k)
            # Multiply by the previously stored Bernoulli number
            inner_sum += coefficient * B[k]
        
        # Final calculation for the current B_n
        B[n] = independent_term - inner_sum
        
        # Display the result formatted as an exact fraction
        print(f"B_{n:<10}{str(B[n]):<25}")

    return B

# Run the algorithm for the first 10 even numbers
# (Ada's original Note G specifically demonstrated the steps to find B_8)
results = calculate_bernoulli_ada_lovelace(10)


Electro-mechanical realization (1944)

The IBM Harvard Mark I

In 1944, Howard H. Aiken|Howard Aiken realized Babbage's vision by completing the IBM Harvard Mark I. It was the first fully functional, large-scale electro-mechanical computer.

Harvard Mark I

Engineering & construction: How the Harvard Mark I was built

Conceived by Harvard physicist Howard Aiken and engineered at IBM's Endicott laboratories under the direction of Clair D. Lake, the IBM Automatic Sequence Controlled Calculator (ASCC / Harvard Mark I) translated Charles Babbage's purely mechanical concepts into electromechanical reality using standard tabulating machine components.

  • Central drive shaft & Synchronized motion:
    • The machine was driven by a continuous 5-horsepower electric motor connected to a single 50-foot (15-meter) central driveshaft.
    • This rotating steel driveshaft ran horizontally through the entire base of the machine, distributing mechanical rotational power to thousands of gears, cams, and counters via magnetic clutches.
  • Standardized electromechanical relays & accumulators:
    • Rather than using delicate experimental parts, IBM engineers assembled the machine using proven, mass-produced telephone relays, switches, and counter wheels from existing IBM punch-card accounting systems.
    • It contained 72 accumulators, each capable of holding a 23-decimal-digit number plus a sign indicator (+ or -). Mechanical carry wheels and electromechanical contacts executed arithmetic operations sequentially as the rotating shaft turned.
  • Instruction control via punched paper tape:
    • Unlike later stored-program architectures, the Mark I read operational instructions sequentially from a wide, continuous 24-channel perforated paper tape.
    • As the tape advanced line by line, metal contact fingers dropped through the holes to close electrical circuits, routing numbers from specific accumulator registers into the arithmetic unit and back.
  • Cabling & physical housing:
    • Construction required over 500 miles (800 km) of electrical wiring and thousands of terminal strips to interconnect relays and mechanical units.
    • The entire 51-foot-long, 8-foot-tall frame was encased in a futuristic polished cabinet of stainless steel and glass designed by industrial designer Norman Bel Geddes, highlighting the synchronized motion of spinning mechanical wheels inside.
Core structural sub-assemblies of the Mark I
Component Engineering Principle Role in the Machine
5-HP Main Motor & Driveshaft Mechanical rotation (gears and clutches) Provided constant, synchronized torque to all calculating wheels and registers.
72 Register Accumulators Decimal rotary counter wheels + relays Stored numbers and performed mechanical addition/subtraction.
24-Channel Paper Tape Reader Perforated mechanical switch contacts Program control unit (stepped sequentially through instructions).
Interconnected Wire Harness 500+ miles of point-to-point electric wiring Routed data pulses and control logic between registers and switches.
Technical specifications of the Harvard Mark I
Feature Specification
Dimensions 17 meters long × 2 meters high
Weight Approximately 70 tons
Components 700,000 moving parts; hundreds of kilometers of wiring
Input Method 80-column IBM punched cards
Performance Addition: < 1 second; Multiplication: ~6 seconds


Punched cards: The first external storage & Program input

Punched cards represent the historical bridge between mechanical automation and digital data entry.

  • Origin in textiles (1804): Joseph Marie Jacquard revolutionized the textile industry by using perforated paperboard cards to control the needles on mechanical looms, automating the weaving of intricate tapestries.
  • Adaptation to computing (1830s): Charles Babbage and Ada Lovelace adapted Jacquard's concept for the Analytical Engine. Babbage divided cards into:
    • Operation cards: Directed the internal Mill on which arithmetic operation to execute (add, subtract, multiply, divide).
    • Variable cards: Dictated which storage registers (the "Store") supplied operands or accepted results.
  • Data processing & Herman Hollerith (1890): Herman Hollerith developed 80-column punched-card tabulators for the 1890 US Census, cutting computation time from ten years down to months. His company later merged to form IBM.
  • Role in 20th-Century computing: Punched cards served as the primary offline input/output medium for early mainframes through the 1970s. Programmers used keypunch machines (such as the IBM 029) where each card typically represented a single 80-character line of source code or record data.


Era II: First-generation electronic computers (1946-1958)

The first generation of electronic computing replaced electro-mechanical switches with vacuum tubes. While this drastically increased processing speed, these early computers had a massive physical footprint, consumed enormous amounts of electricity, and required frequent maintenance due to tube failure.

Key early systems

  • ENIAC (1946): Built to calculate artillery firing tables, it was one of the earliest fully electronic, general-purpose digital computers.
    ENIAC
Physical Specifications and Computing Capabilities of the ENIAC (1946)
Category Characteristic Details
Physical Specifications Floor Space ~167 m²
Weight ~30 tons
Dimensions ~2.4 m × 0.9 m × 30.5 m
Power Draw ~150 kW to 160 kW
Internal Components ~17,468 vacuum tubes, 7,200 diodes, 70,000 resistors, 10,000 capacitors
Computing Capabilities Addition / Subtraction 5,000 operations per second
Multiplication ~357 operations per second
Division / Square Root ~35 operations per second
Clock Speed 100 kHz (100,000 cycles per second)
Memory / Storage 20 accumulators (storing ten 10-digit decimal numbers each)
  • UNIVAC I (1951): The first commercially produced digital computer designed for business and administrative applications.
UNIVAC I
Physical Specifications and Computing Capabilities of the UNIVAC I (1951)
Category Characteristic Details
Physical Specifications Floor Space ~35.5 m²
Weight ~13 tons
Power Draw ~125 kW
Internal Components ~5,200 vacuum tubes, 18,000 crystal diodes
Primary Storage Mercury delay line memory (1,000 words of 12 decimal characters each)
Computing Capabilities Addition / Subtraction ~1,905 operations per second
Multiplication ~455 operations per second
Division ~257 operations per second
Clock Speed 2.25 MHz
Input / Output Method Unityper (magnetic tape units), punched card converter, electric typewriter


The Von Neumann Architecture (1945-1946)

Formulated by mathematician John von Neumann, this theoretical framework defines the core hardware layout used by modern computers, including PCs, smartphones, and embedded systems.

The architecture of a PC is understood as the way of distributing the different hardware devices so that they interact in the best possible way.

Von Neumann architecture

Core Components

The Von Neumann model divides a computer system into four main functional blocks connected by buses:

  1. Central Processing Unit (CPU): The brain of the computer that processes all data.
    • Control Unit (CU): Fetches, decodes, and sequences instructions from memory.
    • Arithmetic Logic Unit (ALU): Executes mathematical calculations (`+`, `-`, `*`, `/`), logical operations (`AND`, `OR`), and comparisons (`<`, `>`, `=`).
    • Registers: High-speed temporary storage cells within the CPU core.
  2. Main Memory (RAM): Volatile storage holding the current program instructions and active data.
  3. Input/Output (I/O) Unit: Interfaces with external peripherals (e.g., keyboards, displays).
  4. System Buses: Communication pathways that transmit data, memory addresses, and control signals.

Simulador Von Neumann: https://www.youtube.com/watch?v=SBX9pma_e-g

Machine language: Hardware-level binary execution

In first-generation electronic systems (Era II), computers possessed no operating systems or compilers; they executed programs encoded strictly in primitive binary machine instructions.

  • Nature of machine code: Machine code consists of raw hexadecimal or binary sequences (strings of 0s and 1s) directly decoded by the CPU’s control unit via digital logic gates.
  • Instruction structure: Each instruction maps directly to the underlying architecture and consists of:
    • Opcode (Operation code): Specifies the hardware operation (e.g., fetch memory, load accumulator, add register, jump).
    • Operands/Addresses: Specifies the target memory locations or hardware registers involved.
  • The First-generation programming experience:
    • Early systems like ENIAC originally required physically re-plugging patch cords and setting rotary switches to alter routines.
    • With stored-program systems (EDVAC, EDSAC), instructions were toggled manually via front-panel console switches or entered byte-by-byte into memory registers, resulting in extreme cognitive fatigue and tedious debugging.
  • Transition to assembly: The immense difficulty of reading raw binary prompted the creation of Assembly language (Second Generation), substituting numeric opcodes with human-readable mnemonics (e.g., MOV, ADD, JMP) that assembled 1-to-1 into machine instructions.

Simple example: What machine language actually looks like (Adding 5 + 3)

At its most basic level, a computer cannot read English words or complex code. It only understands numbers that turn tiny electronic switches on (1) or off (0).

Here is a 5-byte program that adds the numbers 5 and 3:

Binary (What the chip sees) Hexadecimal What the CPU actually does Normal description
10110000 00000101 B0 05 Put the number 5 into memory slot AL Load first number
00000100 00000011 04 03 Add the number 3 to memory slot AL Add second number
11110100 F4 Stop working until told otherwise Halt (Stop)

The entire program in machine code is just 5 bytes:

B0 05 04 03 F4
  • Step 1: The CPU reads B0 and knows it must copy a number into its internal register. It reads 05 and stores 5.
  • Step 2: The CPU reads 04, which triggers its adding circuit. It reads 03, adds it to the 5 already stored, and gets 8.
  • Step 3: The CPU reads F4 and halts.

Before compilers and programming languages were invented, programmers had to write and debug long sequences of these exact numbers by hand.

Era III: Second and Third Generations (1958–1974)

The shift from vacuum tubes to modern solid-state electronics occurred across two distinct phases.

Second generation: The discrete transistor era (1958–1964)

Prior to this era, first-generation computers relied on thermionic vacuum tubes, which functioned like incandescent light bulbs: fragile, hot, power-hungry, and prone to burning out every few hundred hours.

The invention of the point-contact and bipolar junction transistor at Bell Labs (1947–1951) introduced the first solid-state switch:

  • Replacing the vacuum tube: Transistors performed the identical electronic task as vacuum tubes (amplification and binary on/off switching) using solid semiconductor materials (initially germanium, later silicon) without requiring a heated filament or vacuum envelope.
  • Advantages over tubes:
    • Power consumption dropped from tens of watts per tube to milliwatts per transistor.
    • Heat dissipation was radically minimized, allowing denser chassis design without extreme industrial air conditioning.
    • Mean Time Between Failures (MTBF) improved from hours to tens of thousands of hours.
  • The Bottleneck "The Tyranny of numbers":
    • Second-generation machines (such as the IBM 7090 and CDC 1604) still used discrete components.
    • Each transistor, diode, capacitor, and resistor was manufactured as a separate physical part. Engineers had to hand-solder hundreds of thousands of individual copper wires to connect these parts onto circuit boards.
    • As computers grew more capable, the sheer number of soldered joints created an insurmountable reliability barrier: a system with 100,000 discrete components had hundreds of thousands of potential solder-joint failure points.
transistors evolution
transistor 14nm

High-level language programs: abstraction over hardware

Coinciding with the arrival of reliable transistor-based systems (Era III, 1958–1964), computing underwent a revolution by decoupling algorithm design from hardware instruction sets.

  • Hardware independence & abstraction: High-level programming languages (HLL) enable developers to write declarative mathematical expressions and algorithmic logic using English keywords, shielding programmers from specific register architectures and memory topologies.
  • Pioneering high-level languages:
    • FORTRAN (Formula Translation, 1957): Created by John Backus at IBM for scientific and numerical computation, proving that compiled code could match the execution speed of hand-crafted assembly.
    • LISP (List Processing, 1958): Pioneered symbolic computation, dynamic typing, and tree-based data structures for early artificial intelligence research.
    • COBOL (Common Business-Oriented Language, 1959): Standardized by a committee guided by Grace Hopper, tailored for enterprise records, payroll, and business logic with English-like syntax.
  • The Role of compilers and interpreters: High-level source code cannot be executed directly by silicon logic. A translation layer—a compiler (translating entire programs to object/machine code ahead of execution) or an interpreter (evaluating statements dynamically line-by-line)—is required to map abstractions down to underlying machine cycles.

Understanding an x86 Assembly "Hello, World!" program

Assembly language provides a direct, human-readable 1-to-1 mapping to raw machine instructions. Because there is no runtime engine or standard library handling printing, the program communicates directly with the operating system kernel using registers (high-speed internal CPU storage slots) and system calls (syscalls).

The Program Source

section .data
    hello db 'Hello, World!', 0Ah   ; The string with a newline character

section .text
    global _start

_start:
    ; 1. Write syscall
    mov eax, 4          ; sys_write
    mov ebx, 1          ; stdout file descriptor
    mov ecx, hello      ; pointer to message
    mov edx, 14         ; length of message (including newline)
    int 80h             ; call kernel

    ; 2. Exit syscall
    mov eax, 1          ; sys_exit
    xor ebx, ebx        ; exit code 0
    int 80h             ; call kernel

Step-by-Step Explanation

1. Memory Segments (Data vs. Code)

  • section .data: Declares static, initialized memory.
    • hello db 'Hello, World!', 0Ah: db stands for Define Byte. It stores the ASCII characters in sequential memory addresses followed by 0Ah (hexadecimal for decimal 10, the newline character \n).
  • section .text: Defines the memory area where executable CPU instructions live.
  • global _start: Informs the linker where the program execution begins (the program entry point, similar to main() in C).

2. Preparing the Write System Call (Lines 9–14)

To display text, the program asks the Linux kernel to run its internal `sys_write` routine. The kernel expects arguments loaded into specific CPU registers before execution:

Register Value Loaded Purpose
EAX 4 The system call ID for sys_write in 32-bit Linux.
EBX 1 The destination file descriptor: 1 represents standard output (stdout / the screen).
ECX hello The memory address (pointer) pointing to the first letter ('H') of the string.
EDX 14 The exact byte length to print (13 letters/punctuation + 1 newline byte).
int 80h — Interrupt: Pauses user code execution and transfers control to the operating system kernel to perform the requested write operation.

3. Clean program exit (Lines 16–20)

In Assembly, execution does not stop automatically at the end of the file; without an explicit exit instruction, the CPU continues reading random adjacent memory as instructions, causing a crash (*Segmentation fault*).

  • mov eax, 1: Loads the system call number for sys_exit into EAX.
  • xor ebx, ebx: Sets register EBX to 0 (XORing any number against itself equals 0; this is faster and takes fewer bytes than mov ebx, 0). This serves as the exit status code (0 = success).
  • int 80h: Triggers the interrupt again, cleanly terminating the process.

Third generation: Integrated circuits (1964–1974)

The Third Generation did not replace the transistor. Instead, it solved the "Tyranny of Numbers" by replacing the physical wiring between transistors with chemical lithography on a single crystal slab. A frequent misconception is that integrated circuits replaced transistors; in reality, the transistor remained the fundamental building block of computing. The revolution lay in how transistors were manufactured, packaged, and connected: moving from individually wired components to micro-etched, monolithic semiconductor circuits.

Invented independently by Jack Kilby (Texas Instruments, 1958) and Robert Noyce (Fairchild Semiconductor, 1959), the Integrated Circuit (IC) unified active components (transistors, diodes) and passive components (resistors, capacitors) into a single continuous substrate.

How the IC transformed the transistor

  • Monolithic integration: Instead of soldering individual transistors onto a board, dozens (SSI, Small-Scale Integration) and then hundreds (MSI, Medium-Scale Integration) of transistors were diffused and etched directly onto a single slice of silicon.
  • Photolithography: Microscopic interconnects were deposited chemically (planar process) rather than wired by hand. The physical connection between transistors became part of the silicon chip itself.
  • Speed and physical distance: Because electrical signals propagate at a fraction of the speed of light (~20 cm/ns in copper traces), discrete systems lost processing time just waiting for signals to travel down copper traces. Compressing thousands of transistors into millimeters of silicon shortened signal travel times by orders of magnitude, dramatically increasing clock speeds.
  • Economic scaling: Batch fabrication meant an entire wafer containing hundreds of ICs, each holding thousands of transistors, could be produced simultaneously, dropping the per-transistor manufacturing cost from dollars to fractions of a cent.

Landmark Systems of Era III

  • IBM System/360 (1964): Bridged the transition using Solid Logic Technology (hybrid IC modules) and established the first standard mainframe family where software was backward-compatible across different price tiers.
  • Apollo Guidance Computer (1966): The first major production consumer of monolithic silicon integrated circuits, utilizing thousands of standard dual 3-input NOR gate ICs, proving that micro-circuitry possessed the extreme reliability needed for human spaceflight.
  • DEC PDP-8 (1965): The emergence of the minicomputer, leveraging smaller footprint electronics to make computing accessible to individual university departments and laboratories rather than just massive corporate datacenters.

Comparison: Tubes vs. Discrete Transistors vs. Integrated Circuits

vacuum transistor ic
Parameter 1st Gen: Vacuum Tubes 2nd Gen: Discrete Transistors 3rd Gen: Integrated Circuits (ICs)
Historical Period 1946–1958 1958–1964 1964–1974
Fundamental Switching Element Thermionic valve (vacuum tube / vàlvula de buit) Individual solid-state transistor Integrated circuits (electrical components integrated into a single piece)
Component Interconnect Heavy copper chassis wiring & tube sockets Point-to-point soldered PCB copper traces Microscopic planar photolithographic traces
Transistor Density 0 (Vacuum tubes) 1 transistor per physical component Dozens to thousands of transistors per package
Physical Scale & Maintenance Room-scale mainframes; very large size and complicated maintenance Cabinet-sized units; smaller dimensions Desktop and compact cabinet minicomputers; reduced footprint
Power Consumption & Efficiency High power consumption Lower power consumption, higher energy efficiency Significantly reduced power consumption
Performance & Reliability Low speed, frequent valve burnout Gain in processing power, speed, and reliability Higher execution speed
Primary Failure Mode Burnout of heated cathodes (~hundreds of hours) Soldered joint fractures, manual assembly flaws Silicon manufacturing impurities (solid-state run life in decades)
Programming & Software Machine language High-level languages (COBOL, ALGOL, FORTRAN) Major software evolution (operating systems, structured programming)
Input & Primary Storage Media Punched cards Magnetic tapes and magnetic drums Magnetic disks
Notable Systems / Examples ENIAC, UNIVAC 1 IBM 1401, IBM 7090, CDC 1604 IBM System/360, DEC PDP-8



Era IV: Fourth Generation & Modern Computing (1974-Present)

The fourth generation of computing is defined by the development of the microprocessor, which integrated the entire Central Processing Unit (CPU) onto a single integrated circuit chip.

The microprocessor & The PC revolution

Integrating all CPU components onto a single chip drastically reduced production costs and physical size while boosting processing speeds.

  • Personal computers (PCs): In 1981, IBM introduced the IBM Personal Computer|IBM PC, bringing computing power out of specialized laboratories and into homes and offices.
  • Storage advances: Internal hard disk drives (HDDs), floppy disks, and later solid-state drives (SSDs) expanded local data storage capacity.
  • Network integration: Devices became interconnected through local networks and the Internet, expanding access to information.

Modern architecture enhancements

Modern processors expand upon the classical Von Neumann model to overcome performance bottlenecks and execute instructions faster:

  • Floating-Point Unit (FPU): A specialized hardware block designed specifically to handle fractional, trigonometric, and logarithmic operations in a single cycle. It used to be made by the ALU, but FPU reduces its processing time in hundreds.
  • Cache memory (L1, L2, L3): High-speed internal memory layers that store frequently accessed data close to the CPU core to reduce memory latency.
  • System buses:
    • Front-Side Bus (FSB): Connects the secondary cache and CPU to the motherboard and main memory (typically 64 bits wide).
    • Back-Side Bus (BSB): High-speed internal interface connecting the CPU core directly to L1 and L2 caches.
  • Parallelism & Specialization: Advanced techniques such as instruction pipelining, superscalar execution, hyper-threading, multi-core architectures, and specialized instruction sets (MMX, Streaming SIMD Extensions|SSE) allow computers to process multiple instructions simultaneously.

Multicore Processors: Multiple cores on a single chip

A multicore processor packs two or more complete, independent central processing units (called cores) onto a single piece of hardware, typically a single silicon chip or a small group of interconnected chip. Instead of running one single core at blisteringly high clock speeds (which produces excessive heat and draws too much power), CPU designers split the work across multiple cores running at efficient frequencies.

How do multiple cores fit and work on a single hardware piece?

Fitting multiple CPU cores onto a single piece of silicon requires three key hardware solutions:

1. Physical layout on the silicon chip

  • Photolithography: Millions (or billions) of microscopic transistors are etched directly into one continuous piece of silicon using light. A modern 4-core, 8-core, or 16-core chip simply etches several complete CPU processing units side-by-side on that same slice of silicon.
  • Monolithic vs. Chiplets:
    • Monolithic Design: All cores, memory controllers, and caches are etched onto one single slab of silicon (common in laptops and smartphones).
    • Chiplet Design: Several smaller silicon tiles (each containing multiple cores) are placed on the same fiberglass substrate and connected via microscopic high-speed bridges (popularized by AMD Ryzen and modern enterprise chips).

2. Shared memory and on-chip interconnects

If cores were completely isolated, they couldn't coordinate. They share space and communicate using an on-chip network:

  • Layered Caches:
    • Each core has its own tiny, ultra-fast memory (L1 and L2 caches) right next to its execution pipeline.
    • All cores share a larger, central memory block on the same chip (the L3 cache), allowing them to pass data without having to travel across the motherboard to the main RAM.
  • Data Highways (Interconnects): Cores are linked together by on-chip microscopic "highways" (such as a circular Ring Bus or a Grid/Mesh network) that let them swap information in nanoseconds.

3. Coordinated Execution (The Role of the OS)

To the computer's operating system (Windows, macOS, Linux), each hardware core appears as a distinct processor:

  • The OS task scheduler automatically assigns different applications (e.g., your web browser on Core 0 and a video game on Cores 1–4) to run concurrently.
  • When working on a single heavy application (like rendering 3D graphics or encoding video), the software splits the job into multiple smaller tasks (called threads), allowing all cores to work on parts of the same problem simultaneously.
Component Role on the single CPU chip
Individual Core Fetches, calculates, and executes instructions independently.
Private Caches (L1/L2) Instant local memory right next to each core.
Shared Cache (L3) Common pool of memory on the chip that all cores read from.
Internal Interconnect Microscopic high-speed bus connecting all cores to each other and to the RAM controller.


Comparison of computing generations, key technologies, and physical specifications

Era / Generation Years Key Technological Aspects Representative Computer & Physical Specifications
Pre-Generation 1833-1944
  • Transition from mechanical to electro-mechanical computing.
  • Introduction of foundational units: Input, Memory (Store), Control Unit, ALU (Mill), Output.
  • Implementation of punched cards for data input.
IBM Harvard Mark I (1944)
  • Dimensions: 17 m long × 2 m high
  • Weight: 70 tons
  • Components: 700,000 moving parts
  • Speed: Addition < 1s, Multiplication ~6s
1st Generation 1946-1958
  • Built using vacuum tubes.
  • Large physical footprint, high power draw, complex maintenance.
  • Programmed directly in machine language.
  • Establishment of stored-program model (Von Neumann Architecture).
ENIAC (1946) & UNIVAC I (1951)
  • ENIAC: ~167 m² floor space, 30 tons weight, ~160 kW power draw, 17,468 vacuum tubes, 5,000 additions/sec.
  • UNIVAC I: ~35.5 m² floor space, 13 tons weight, 125 kW power draw, 5,200 vacuum tubes.
2nd Generation 1958-1964
  • Transistors replace vacuum tubes.
  • Reduced size, lower cost, improved speed and reliability.
  • Emergence of high-level programming languages (FORTRAN, COBOL, ALGOL).
  • Data stored on magnetic tapes and drums.
Transistorized room-sized mainframe systems utilizing magnetic drum and tape storage.
3rd Generation 1964-1974
  • Integration of components onto Integrated Circuits (ICs).
  • Lower power consumption, smaller footprint, faster processing speeds.
  • Adoption of magnetic disk storage.
  • Evolution of software applications (database management, computer-aided design).
Mainframes and minicomputers integrated onto single-chip component boards.
4th Generation 1974-Present
  • Introduction of the Microprocessor (entire CPU on a single IC).
  • Significant size reduction and drastic increase in execution speed.
  • Dawn of the Personal Computer (PC) era (e.g., IBM PC in 1981).
  • Development of floppy disks, compact hard drives, and computer networks.
IBM PC (1981) & Modern Microprocessors
  • Single-chip CPUs, high-density storage drives, 64-bit wide system buses.
Computing OPS over time

References

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

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