|
|
TUTORIALS for SOFTWARE
DEVELOPERS
◄◄ Select
the category
The programming language a computer can directly execute
is machine language (sometimes called "machine code"). Originally all
programmers worked out every detail of the machine code, but this is hardly
ever done anymore. Instead, programmers write source code, and a computer
(running a compiler, an interpreter or occasionally an assembler) translates
it through one or more translation steps to fill in all the details, before
the final machine code is executed on the target computer. Even when
complete low-level control of the target computer is required, programmers
write assembly language, whose instructions are mnemonic one-to-one
transcriptions of the corresponding machine language instructions.
The earliest programmable machine (that is, a machine that can adjust its
capabilities based upon changing its "program") can be said to be the
Jacquard Loom, which was developed in 1801. The machine used a series of
pasteboard cards with holes punched in them. The hole pattern represented
the pattern that the loom had to follow in weaving cloth. The loom could
produce entirely different weaves using different sets of cards. This
innovation was later refined by Herman Hollerith of IBM in the development
of the famous IBM punch card.
Another early use of computer programs was made using a soldering iron and a
large number of vacuum tubes (later transistors). As programs became more
complex, this became almost impossible, as one mistake would likely render
the whole program useless. As data storage media became more advanced, it
became possible to re-use one program for many things according to the
content of the memory. A person would spend quite some time making punch
cards that would hold a list of instructions for a computer. Every model of
computer would be likely to need different instructions to do the same task.
As computers became more powerful, and storage media became re-usable, it
became possible to use the computer to make the program. Programmers quickly
began to favor text over 1s and 0s, and punch cards were phased out. As time
has progressed computers have made giant leaps in the area of processing
power. This has brought about newer programing languages that are more
abstracted from the underlying hardware. Although these more abstracted
languages require additional overhead, in most cases the huge increase in
speed of modern computers has brought about little performance decrease
compared to earlier counterparts. The benefits of these more abstracted
languages is that they allow both an easier learning curve for people less
familiar with the older lower-level programming languages, and they also
allow a more experienced programmer to develop simple applications quickly.
Despite these benefits, large complicated programs, and programs that are
more dependent on speed still require the faster and relatively lower-level
languages with todays hardware.
|