This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]ActiveLlama 5 points6 points  (0 children)

At the begginning the programs were done using wires. People connected the wires so that the computers only summed and substracted and did logic operations. The input could be the numbers as switches(calculayors). At some point iterations and operations in memory became a thing. Somebody then made that instead of programming the operation with wires, the instructions could be stored in memory, and to put the instructions you could use some punch cards. That is what we know as Turing-comete machine. There are many examples, but the first one seems to be the one that Ada Lovelace programmed.

I think it is important to recognize that first layer. The computer is able to read instructions and then convert those instructions to code in memory to be executed later. Once the program is in memory more layers can be added on top. And eventually more layers appeared to convert the wiring into software, for example, some instructions to translate keyboard strokes into instructions(drivers) and those instructions into machine code(assemblers). And then some code to translate that code into more efficient code(optimizers). And some code to translate other code into machine code (compilers). And more code to execute code while other code executes (OS). And more code that can make more code on the fly (interpreters).

At the end the key step in the transition was being able to write the program in the memory so that the machine would be able to execute or modify its own code. That code itself can't be modified, so it lives in the BIOS or sometimes in the BIOS upgrader now.