Hello trent44,
Great question! One that I can remember myself asking when I first
started learning about computer languages.
I found an article on http://www.about.com that does a good job of
describing how computer languages work.
Here is the first excerpt: "The first generation of codes used to
program a computer, was called machine language or machine code, it is
the only language a computer really understands, a sequence of 0s and
1s that the computer's controls interprets as instructions,
electrically." It is possible still to write programs in machine code,
but imagine what it would be like if programming would still have to
be done in 0s and 1s!
Thankfully, the second generation of codes (or computer languages)
partially solved this problem. "The second generation of code was
called assembly language, assembly language turns the sequences of 0s
and 1s into human words like 'add'. Assembly language is always
translated back into machine code by programs called assemblers."
Instead of using lengthy sequences like 010010100010101 for such
things as add, assembly languages allowed programmers to code in
English (and other human languages) which would then be changed into
machine code.
The third generation which was called "high level language" has "human
sounding words and syntax (like words in a sentence". "In order for
the computer to understand any HLL, a compiler translates the high
level language into either assembly language or machine code. All
programming languages need to be eventually translated into machine
code for a computer to use the instructions they contain."
Source for above three paragraphs: "The First Successful High Level
Programming Language" by Mary Bellis
http://inventors.about.com/library/weekly/aa072198.htm
The first computer language that was actually used on an electric
computing device actually appeared in 1949:
http://www.byte.com/art/9509/sec7/art19.htm
In your question, the implication is that there was a specific
language created in 1952 that was called "assembly". I just wanted to
point out that an assembly language "is not a single language, but
rather a group of languages. Each processor family (and sometimes
individual processors within a processor family) has its own assembly
language. In contrast to high level languages, data structures and
program structures in assembly language are created by directly
implementing them on the underlying hardware."
SOURCE: "Introduction to Assembly Language" by Milo (contact info at
bottom of page)
http://www.osdata.com/topic/language/asm/asmintro.htm#general
Assembly language is basically a shortcut that will translate code
into machine code.
Here is an excerpt from an article on Computers found at
http://encarta.msn.com
"Assembly language uses easy-to-remember commands that are more
understandable to programmers than machine-language commands. Each
machine language instruction has an equivalent command in assembly
language. For example, in one Intel assembly language, the statement
MOV A, B instructs the computer to copy data from location A to
location B. The same instruction in machine code is a string of 16 0s
and 1s. Once an assembly-language program is written, it is converted
to a machine-language program by another program called an assembler."
Source: MSN Learning & Research - Computer
http://encarta.msn.com/encnet/refpages/RefArticle.aspx?refid=761563087&pn=2#s31
If we take a look at computer history, we can see that there was a lot
of time for people to take the idea of making shortcuts with an
assembly language instead of using 0s and 1s. (I mean that things are
often done in theory long before there is a practical application,
even in computer science).
Looking into the history of computing, we find that "in 1623 German
scientist Wilhelm Schikard invented a machine that used 11 complete
and 6 incomplete sprocketed wheels that could add, and with the aid of
logarithm tables, multiply and divide."
SOURCE: MSN Learning & Research - Computer
http://encarta.msn.com/encnet/refpages/RefArticle.aspx?refid=761563087&pn=3#s40
Another excerpt from the same article: "In 1936 British mathematician
Alan Turing proposed the idea of a machine that could process
equations without human direction. The machine (now known as a Turing
machine) resembled an automatic typewriter that used symbols for math
and logic instead of letters. Turing intended the device to be a
universal machine that could be used to duplicate or represent the
function of any other existing machine. Turings machine was the
theoretical precursor to the modern digital computer. The Turing
machine model is still used by modern computational theorists."
As you can see, theory usually comes before the product and by 1948
the transistor was already invented. Even if computers would have
stuck to vacuum models forever, theory is always possible! Especially
in the academic world, things do not have to be practical or useful in
the pursuit for knowledge. This link:
http://mbinfo.digitalrice.com/1937-1960.htm shows that "Short Code" in
1949 was the first assembly language. Short Code did have a good use
though, because now programming was possible with the Univac 1 without
having to use 0s and 1s. It is important to note that because assembly
languages convert instructions into machine code (and likewise third
generation languages have their instructions converted directly to
machine code, or first to assembly language and then to machine code),
the effeciency of the final code is entirely dependent on the compiler
and how well it can generate the fastest 0s and 1s. Then again,
imagine how inefficient code would be if programmers today had to
write entire complex programs (like games) in 0s and 1s!
I hope this was the type of answer you were looking for. If you need
any clarifications, please do let me know and I will do my best to
further assist you.
tisme-ga
Additional links you might find interesting:
http://www.tpub.com/incs/47.htm
http://www.macs.hw.ac.uk/~pjbk/scholar/topic1/html/topic11.html
http://www.dickinson.edu/~cs131/Topics/Work4.html
http://www.intap.net/~drw/cpp/cpp00_01.htm
Search Strategy:
assembly computer language OR languages history
://www.google.com/search?q=assembly+computer+language+OR+languages+history
"assembly languages"
://www.google.com/search?q=%22assembly+languages%22
"first assembly language" 1952
://www.google.com/search?q=%22first+assembly+language%22+1952 |