Page 29 - Designing Autonomous Mobile Robots : Inside the Mindo f an Intellegent Machine
P. 29
Chapter 2
Flat File Relational
Database Database
Languages Languages
Low Level Compiled Dynamically Object
Machine Assembly
Compiled Adv. Data Linked Oriented
Language Language
Languages Structures Languages Languages
Interpreted Applications Hyper Text
Languages Scripts Languages
Figure 2.1. A grossly over-simplified history of the evolution of software
The history of software evolution is a useful context for understanding the reason for
each concept and its potential usefulness. In the beginning there was machine
language. This is the stuff all computers burn, no matter how abstracted it becomes
from the programmer. I would argue that it is as useful to understand the basics of
Boolean mathematics as it is the more advanced concepts.
Assembly language
It wasn’t long before early programmers realized that the first programs they needed
to write were tools to facilitate programming itself. Essentially, the first significant
market for software was to other programmers. Thus, the first program language to
evolve was assembly language, a more-or-less direct representation of the machine
language it generated. Simple text editors were created in order to write the assem-
bly language programs. These text files were then assembled into binary machine
language.
Before long, programmers began to create huge unmanageable assembly language
programs, and the concept of modular code emerged. Now programs were written in
manageable chunks, which could be included (copied by the assembler) into other
programs, or which could be assembled into object code that could be linked to the
object code from other modules to produce the final machine language program .
1
Mention assembly language to a freshly minted computer science major and the
reception will be similar to that a leper might enjoy on a particularly bad hair day.
1 This use of the word object has no relation to the object-oriented concepts to be discussed later.
12

