Suppose some hardware folks somewhere invent a machine made of hardware that does something when it carries out a series of instructions. The instructions will be in a language the machine understands.
Instructions for the machine are written in the "machine language" of the hardware, sometimes called "machine code." The machine language is the final low-level language in the journey from high level language to low-level language, resulting in correct instructions that do something useful; it is the language the machine understands.
Usually (though not in every case), the machine language is designed with only the machine in mind, not the human. Or mostly with the machine in mind, the people writing software for the machine a mere afterthought. If a person was to write instructions for the hardware using the machine's own language, it would be a tedious task of writing out the machine instructions as they actually exist inside the machine.
Why might it be tedious? In a digital machine that can execute instructions, the instructions, and memory and anything else, are all represented as digital information. (Unless it's an analog machine.
That's a different department -- two doors down on the right.)
Back to the tedium: In the (digital) machine, instructions will be represented digitally. Ultimately, everything "digital" sooner or later means "binary." Think of it as simply off or on, usually represented in
(human) writing as 0 and 1. To give the machine instructions, one could write out the instructions in binary representation and somehow get those instructions into the hardware. As typed (by a human in a some blog on some website) one such machine instruction might look like this:
Simple, right? Readable and easy to remember, not so much. If the instruction 00101111011011101 actually meant something and was executed in some machine that understood the instruction, it might make the machine do something (or not). The hardware designers could, say, design a machine to quack like a duck when the instruction (machine code, remember) 00101111011011101 was executed in the machine.
Wait. We should probably talk about what "executed" means here. It simply means the instruction is invoked, made to happen, kicked into gear, fired up. The machine does what the instruction says to do when the instruction is "executed." Same thing as the instruction "wash the dishes" results in (eventually, usually) clean dishes. "Load and start the dishwasher" could be an instruction as well, with the same results.
In the early days, hardware (a machine that executed instructions) which ran software (a list of instructions) was programmed in just that way, in machine language, the language that the machine understands, by laboriously entering instructions written in machine language one-by-one. (By the way, "software" is an overloaded word; as noted above, here we mean a list of instructions.)
A high rate of turnover of software developers (called "programmers") soon became apparent, back in those ancient days of programming machines with instructions in machine language. Programmers often ran screaming from their cubicles to work in jobs less painful than writing and testing software in machine language, such as sorting small rocks by shape, color, and texture for landscapers or counting bird seed to ensure exact counts in bird seed packages.
What happened next? How might things be made easier than writing binary instructions in the machine's specific language? Just like all the humans before them, the people responsible for getting the early programmable digital machines to do something useful, or at least amusing, began to invent tools to make their jobs easier. (I see a show of hands. No, no. Hexadecimal notation is just another way to represent digital information. It is not a tool. Not like what we're fixin' to
Anyway, what was (and still is) really cool, after some tools were invented, those tools were used to build more tools. And so on. We'll talk about that and more in the next installment.
Privacy Center |
Terms and Conditions
Copyright ©2021 Mouser Electronics, Inc.
Mouser® and Mouser Electronics® are trademarks of Mouser Electronics, Inc.
All other trademarks are the property of their respective owners.
Corporate headquarters and logistics center in Mansfield, Texas USA.