Page 35 - Designing Autonomous Mobile Robots : Inside the Mindo f an Intellegent Machine
P. 35
Chapter 2
The great rift
Interestingly, as main line conventional programming was faced with ever more
complex requirements, it divided into two major philosophies under which many
individual programming languages were born. The two major philosophies are
conventional languages (such as C, LISP, and Basic), and database languages such as
DB, and later Oracle and SQL.
Database languages were forced to confront vast quantities of data and primarily to
search, sort, and cross reference data within these oceans of information. Conven-
tional programs, on the other hand, evolved to facilitate applications ranging from
word processing to video games.
As complexities continued to grow, these languages further evolved. Databases
moved from using flat files to relational structures while conventional programs
moved toward object-oriented structures. The C language became C++ and later
Visual C++, while Basic adapted many of the best concepts of structured languages
such as C, a GUI interface, and the concept of objects, and became Visual Basic.
Object-oriented programming
The highest of the fiefdoms we are going to consider is that of object-oriented
programming. Such is the jargon surrounding this elegant and simple concept that
its high priests have been able to discourage many mortals from even trying to
understand it at a lay level.
The fact is, if you had never heard of object-oriented programming and simply spent
a dozen or so years working on ever more complex conventional programs, you
would either suffer a nervous breakdown or gradually invent most of the principles of
object-oriented programming. Like so many of the concepts we will be discussing,
this one is a natural solution to the problem of complexity.
Object-oriented programming is not so much a different way of programming as a
different way of organizing your programs. It is an elegant structure that helps the
programmer maintain order in the face of increasing complexity. Like all such
concepts, it is more appropriate to some kinds of programs and less to others. It is
very useful in complex programs such as those found at higher levels of control in
mobile robotic systems.
18

