De allereerste "programma's" --die je eigenlijk nauwelijks zo kunt noemen-- waren switchboards waarin de nullen en enen met schakelaars werden 'ingeprogrammeerd'. Later werd dat 'vereenvoudigd' door instructies in te typen in een rekenprocessor. Dat werd vervolgens weer vereenvoudigd door assembler-code. Toen werden ook de eerste programma's geschreven om assember-code om te zetten naar die rekenprocessor-instructies (compilers). Weer later kwamen de hogere programmeer-talen die weer teruggrepen op de in assembler gecodeerde compilers. Tenslotte werden de compilers geschreven in de hogere programmeer-talen (vaak nog handmatig geoptimaliseerd). En nu, nu zouden we eigenlijk geen programma meer kunnen schrijven zonder terug te grijpen op de erfenis aan bestaande compilers en linkers. Vergelijk het met de vooruitgang op technisch gebied: stel dat alle technische hulpmiddelen: hamers, spijkers, walsen, smelterijen e.d. er even niet zouden zijn, dan zouden we, voordat we ook maar een schroef kunnen maken, eerst weer helemaal opnieuw beginnen met een uitgehold stuk steen op een steel: de vuistbijl!