% -*-latex-*-
% 1-information-systems
%
% Author: Pekka Nikander <pnr@ngs.fi>
%
% Created: Wed Feb  6 20:14:31 1991 pnr
% Last modified: Sun May  5 08:54:54 1991 pnr
%


\chapter{Basic computer technology}

\author{Pekka Nikander}

\section{Introduction}
Information systems play an increasingly important role in our modern
society.  More and more of our technical everyday household machines
contain embedded {\em micro processors} that control their functions.
A modern car has several computers built into it.  Traditional post is
slowly being replaced by {\em electronic mail}.  Newspapers emphasis
the importance of telecommunication systems in the Persian Gulf war.

However, even though we are affected by information systems every day,
the term ``information system'' itself is often misunderstood or viewed
from a very narrow angle.  From a very general point of view, an
information system is any system that handles or stores information in
one way or another.  It may or may not be built up of computers.

On the other hand, the word ``system'' gives us a feeling of a complex
or complicated combination of numerous parts.  Thus, by gluing together
these two viewpoints we can give a more accurate definition for this
fascinating tool:
\begin{quote}
  An information system consists of computer {\bf hardware}, {\bf
  software} and {\bf people}, together with published and unpublished
  \goodbreak method\-ol\-ogies and means used to handle and store information
  both manually and automatically.
\end{quote}
By this definition, a piece of paper, a pencil, a person and means of
writing forms an information system.  However, the paper and pencil
alone are not a complete system, they are just a part of it.
Similarly, a computer and program alone are not enough, but together
with the system designers and users they form a complete information
system.

\section{Hardware}

Hardware is the physical (computer) equipment we can see and touch.
The technological development has brought us to a level where
computers get increasingly powerful all the time.  On the other hand,
the basic technology and computer architecture has been quite stable
since the sixties.

\subsection{Basic Technology}

Today all computers are digital.  All of them basically handle binary
digits, or {\em bits}.  A bit is the smallest amount of information.  The
value of a single bit can be zero or one, nothing else.  However, when
several of these bits are combined together, larger units of
information can be formed.  A typical modern computer system can store
over a hundred billion bits.  

Almost every modern computer always handles at least eight bits
simultaneously.  Eight bits in a line is called a {\em byte}.  A byte may
contain any of 256 different bit combinations.  These combinations can
be used to denote different values.  They may be used to mean integer
numbers between zero and 255, or maybe between -128 and 127.

Within some other context a byte may contain a value that denotes a
letter, digit or some special character.  In this way text can be
stored in computers; every character is turned into a bit pattern and
stored in some byte.  Words are formed by putting several bytes in a
row.  Words can be joined by taking a special bit pattern to denote
the space between the words, and so on.  In this way complete books
can be stored as huge byte strings.

\subsection{Computer Architecture}

The prevailing computer architecture used today is a so-called von
Neuman architecture.  It is named after its inventor, a mathematician
who, already in the forties, formed the basic theories behind modern
computers.

A von Neuman computer has basically two distinct components: CPU and
{\em memory}.  CPU, the {\em central processing unit}, is the
computer's brain.  Memory is just memory, it contains all the
information the computer knows.  However, in reality, every computer
has a number of other components called Input/Output devices, or {\em
I/O devices} for short.  These {\em peripherals} allow the computer to
communicate with the outside world and other computers.

From the hardware point of view, the memory is simply a huge array of
memory cells.  Each of these cells can normally store a single byte,
or eight bits of information.  The contents of each memory cell can be
read and modified, or written, by the central processing unit.  In
this way the computer can access and modify the contents of its
memory.

Nearly every computer has two kinds of memory: primary and secondary.
The {\em primary memory} is made of silicon and can be accessed very
fast.  Every single byte within the memory can be reached in less than
100 nanoseconds, or a billionth of a second.  The {\em secondary
memory} is actually a kind of I/O device.  It can be a {\em hard
disk}, a {\em floppy disk} or a {\em tape}.  Secondary memory devices
are used since their price is much lower per bit than the primary
memory.  However, the computer cannot directly use the information in
the secondary memory; the required information has to be transferred
into the primary memory first.

The computer memory contains two kinds of information: {\em programs}
and {\em data}.  A program is a sequence of instructions meant to be
executed by the central processing unit.  Data is simply a collection
of bytes handled by the program.

If the memory contents is seen by the CPU as a program, each byte in
the memory is taken as an {\em instruction} to do something.  The
instructions a normal CPU acts upon are utterly simple.  For example,
there might be an instruction for reading a data byte from the memory,
adding another byte to the value and storing the byte again in the
memory.

Normally the computer reads instructions simply one after another, or
linearly.  However, there are special instructions that command the
CPU to read the next instruction from somewhere else within the
memory.  These instructions are called jumps.  A jump may be
conditional, i.e. depending e.g. on the value of some memory cell the
CPU may either read the next instruction in row or jump to some other
location within the memory.

The I/O devices, or peripherals, are often directed by special
instructions.  When the CPU encounters a special I/O instruction
within a program, it will access the special I/O hardware and
command the peripheral devices.  In this way, the computer may e.g.
read one character from the keyboard or write a single letter on the
computer screen.

Even though every basic instruction the computer understands is
very simple, a computer can do magnificent things.  How is this
possible?  There are two basic explanations:
\begin{enumerate}
  \item The computer is blindingly fast.  A normal home computer or a
     personal computer can typically execute at least one million
     instructions every second.  A modern supercomputer is capable of
     executing at least ten billion instructions every second. 
  \item The basic instructions can be combined together to form larger 
     software units.  A typical program today contains at least ten
     thousand instructions, and in many cases well over a million
     instructions.  However, these instructions are parts of several
     levels of larger systems, every level containing increasingly
     powerful software components.
\end{enumerate}

\subsection{Trends in hardware development}

There are four major trends that can be clearly seen in the field of
hardware.  The {\sl exponential growth} has been going on for the last forty
years and there seems to be no end.  More recent trends are 
the {\sl shift from central computing towards {\em distributed} environments},
the {\sl birth and evolution of personal networked {\em workstations}} and 
the {\sl introduction of more and more powerful wide area networks}.

Since the invention of the computer in the forties, we have seen many
generations of computers.  The first computers were made of radio
tubes.  Then came the transistor, silicon {\em chips} and micro
processor.  Today the silicon chips are becoming more and more
powerful.  A single chip has more computing power than a number of
large computers from the sixties.

The growth of the hardware power can be easily measured using many
indicators.  The three most important indicators are CPU power, secondary
memory or disk space, and primary memory space.  Figures \ref{fig1},
\ref{fig2} and \ref{fig3} (see next page) display typical values for
midrange computers from 1985 to today.  We can clearly see that each and
every one of these aspects have grown exponentially over the given period
--- and there seems to be no end.  Every year we get more and more powerful
computers that are able to store more and more information.

\begin{figure}
 \begin{center}
  \begin{picture}(400,200)
    \put(0,0){\framebox(400,200)}
  \end{picture}
  \caption{CPU power development from 1985 to 1991}
  \label{fig1}
 \end{center}
\end{figure}

\begin{figure}
 \begin{center}
  \begin{picture}(400,200)
    \put(0,0){\framebox(400,200)}
  \end{picture}
  \caption{Disk storage development from 1985 to 1991}
  \label{fig2}
 \end{center}
\end{figure}

\begin{figure}
 \begin{center}
  \begin{picture}(400,200)
    \put(0,0){\framebox(400,200)}
  \end{picture}
  \caption{Main memory development from 1985 to 1991}
  \label{fig3}
 \end{center}
\end{figure}

Since the sixties to the beginning of the eighties computers were
mostly seen as, well, computers.  That is, people considered computers
to be huge calculators.  Computers were big, clumsy machines that were
located in special air-conditioned machine rooms.  The invention of
the microprocessor changed all this.  It made it possible to build
small computers, {\em personal computers} that were mostly used for
everything else but real computing.

As the personal computers grew more powerful, they gradually began to
contain capabilities that traditionally only big {\em mainframes} had
had.  At the same time, the {\em minicomputers} grew smaller.  The invention
of big graphical screens and the mouse brought us graphical
workstations.  Macintosh was the first upcomer from the microcomputer
world, and Sun Microsystems was among the first manufacturers of big
machine-like workstations.

A single personal computer or workstation alone cannot do very much.
It has access to its local memory that is typically quite small and
contains only the user's personal data.  However, if the workstation
is hooked to a {\em computer network} the situation is quite different.
Suddenly there are several magnitudes more information available.
Documents can be transferred electronically from one workstation to
another.  In this way, networks increase the possibilities for
interpersonal communication as well.  

During the beginning of the eighties {\em local area networks} became
common resources in many organizations.  In the near future we will
see how the LANs will begin to get hooked together via {\em wide area
networks}, WANs.  First big companies will interconnect their local
area networks located in physically distinct sites.  A little later
the business will begin to realize the benefits available by
interconnecting the networks of distinct companies via WANs.  This
phenomenon is already happening in the research and university world,
but has not yet penetrated into the administrative, financial and
marketing fields.

\subsection{Modern computer types}

As was shown earlier, computer power increases exponentially.
Therefore we cannot classify computers by their power.  The power of 
today's mainframe will be found at the desktop within a couple of
years.  

Thus, the only meaningful way to classify the various systems is by
price.  Using this method, we can claim the following definitions.

\begin{itemize}
 \item A microcomputer is anything that costs less than \$5~000.
 \item A workstation costs from \$5~000 to \$10~000.  They are nearly always
   connected to a network.
 \item A minicomputer or server costs between \$10~000 and \$100~000.
 \item A mainframe has its price tag somewhere in the 
       range \$100~000 -- \$1~000~000
 \item A supercomputer is anything that costs over one million dollars.
\end{itemize}

\subsection{Summary}
	
The power of digital computers increases every year.  New hardware
makes it possible to create new systems.  Computers and networks
penetrate everywhere.  This will eventually change our society in a
dramatical way.

\section{Software}

The development in the software field has not been so fast as the
hardware development.  However, as increasingly many people have begun
to use computers, people have also begun to require more from
programs.  New {\em user interface} techniques and programming methodologies
have been developed at a rapid pace.  On the other hand, the amount of
scientific knowledge of the mathematical bases of programs and the
psychological aspects of user interfaces has increased much more slowly.

\subsection{Software development in the large}

Even today most programmers produce code in the same way as in the
sixties.  Nearly all widely used programming languages were developed
in sixties or early seventies -- C, Lisp, Pascal, Cobol and Fortran
are all quite old.  In my opinion, only three major
innovations have been made during the last twenty years.

\begin{itemize}
 \item{} {\em Object oriented programming} methodologies and the concept of
   {\em abstract data types} has made it easier to manage large systems.

 \item {\em Computer Aided Software Engineering}, CASE, helps a lot when
   developing accounting, management etc. database based
   software.  However, in the case of system software, user
   interfaces etc. it does not help very much.

 \item Distributed system software is gradually replacing traditional
   {\em operating systems} and other system software.  Even though we
   have large networks and thousands of distinct computers hooked into
   it, it will look like a single huge computer in the future.  This
   can be accomplished with distributed operating systems such as
   Mach and Chorus.
\end{itemize}

\subsection{New innovations}

The invention of spread sheet programs dramatically changed the way
bud\-gets and other kinds of calculations are done.  I think today there
are only two major trends that may have such a considerable effect in
the future.

\begin{itemize}
  \item{} {\em Multimedia} and {\em hypermedia} will eventually change
    the computer from a number and word processing machine to an
    actual media processing machine.  Within few years we will see an
    emergence of a plethora of computers capable of handling voice and
    live video.

  \item The development of {\em artificial intelligence} and {\em
    voice recognition} may eventually produce computers that can
    understand natural speech.  This will lead to programs that
    somewhat resemble human servants.  Apple computer together
    with a few other companies are already investigating this kind of
    technology.  They have also given a name to these programs: they
    are called ``personal agents''.
\end{itemize}

\section{People}

There will always be two separate personal groups in the field of
computing.   Designers design computers and software.  Users just use
the ready-made software.  However, the distinction between these two
groups will gradually simultaneously both diminish and increase.  On
the one hand, the new programs will make it easier for users to build
their simple applications or customize the behavior of commonly used
tools.  However, on the other hand, much of the system software and many
of the tools will get so complex that only highly educated experts
will be able to understand and modify their fundamental structures.

\subsection{Social effects}

The technological development does not have just positive effects, it
will also cause effects that should worry everyone.  I am afraid that
we will have three groups of people in the future.

\begin{itemize}
  \item The computer experts and power users are people that design and
    use computers everyday on a professional basis.  They have thorough
    understanding of computing or at least the subfield they are
    working with.  They spend a part of their time in communicating
    through computer networks.

  \item The computer literate people are able to use standard
    applications and can cope with electronic media.  They know the
    limitations of computer and understand their basic capabilities.

  \item The computer illiterate people are afraid of computers and cannot
    use them.  They do not have clear mental models of how computers
    operate and cannot understand their limitations.  They may even
    turn hostile towards computerization of our society.
\end{itemize}

In order to minimize the negative effects of this development we have
to really pay attention to education.  The more people know about
computers, the less they are afraid of them and the better they can
use them.  

Another important issue is the attitudes of the public.  It should be
clear to everyone that a computer is only a tool like a hammer or a
saw; it is just somewhat more complex.  There is nothing magic with
computers, they are just machines made by people.

\section{Summary}

Hardware seems to grow at exponential speed.  The capacity of
computers seems to double every two to three years.  New hardware will
offer a platform for new interesting software technologies such as
multimedia and user agents.  However, we have to pay great attention
to the social effects of computerization in order to minimize the
emerging negative effects.

\section*{Glossary}

\def\AR{$\rightarrow$}
\begin{tabular}{ll}
  Abstract data type		& abstrakti tietotyyppi	\\
  Artificial intelligence	& teko\"aly			\\
  Bit 				& bitti, ykk\"onen tai nolla		\\
  Byte				& tavu, 8 bitti\"a			\\
  CASE				& \AR Computer aided software engineering \\
  Central processing unit	& keskusyksikk\"o		       \\
  Chip				& mikropiiri		       \\
  Computer			& tietokone		        \\
  Computer aided software engineering 
			        & tietokoneavusteinen ohjelmistosuunnittelu \\
  Computer network		& tietokoneverkko		        \\
  Compiler			& (ohjelmointikielen) k\"a\"ant\"aj\"a \\
  CPU				& \AR Central processing unit  \\
  Data				& tietokonemuodossa oleva tieto \\
  Disk				& \AR Hard disk		       \\
  Distributed computing		& hajateuttu tietojenk\"asittely \\
  Elektronic mail		& s\"ahk\"oposti		       	   \\
  Floppy disk			& levyke			   \\
  FLOPS				& liukulukuoperaatioita sekunnissa \\
				& (nopeuden yksikk\"o)		   \\
  Gigabyte			& miljardi tavua \AR Byte 	   \\
  Hard disk			& kova- l. kiintolevy		   \\
  Hardware			& laitteisto			   \\
  Hypermedia			& hypermedia			   \\
  I/O				& sy\"ott\"o ja tulostus		   \\
  Information			& informaatio, tieto		   \\
  Information System		& tietoj\"arjestelm\"at		   \\
  Instruction			& k\"asky(koodi)			   \\
  Input				& sy\"ott\"o			   \\
  Kilobyte			& tuhat tavua \AR Byte		   \\
  LAN				& \AR Local area network	   \\
  Local area network		& l\"ahiverkko			   \\
  Mainframe			& keskustietokone		   \\
  Memory			& muisti			   \\
\end{tabular}

\pagebreak
\begin{tabular}{ll}
  Megabyte			& miljoona tavua \AR Byte 	   \\
  Micro computer		& mikrotietokone, mikro		   \\
  Micro processor		& mikroprosessori		   \\
  Mini computer			& minitietokone, mini		   \\
  MIPS				& Miljoonaa k\"asky\"a sekunnissa	   \\
				& (nopeuden yksikk\"o)		   \\
  Multimedia			& multimedia			   \\
  Object oriented programming	& oliokeskeinen ohjelmointi	   \\
  Operating system		& k\"aytt\"oj\"arjestelm\"a		   \\
  Output			& tulostus			   \\
  Peripheral device		& oheislaite			   \\
  Personal computer		& henkil\"okohtainen tietokone	   \\
  Primary memory		& keskusmuisti			   \\
  Program			& (tietokone)ohjelma		   \\
  Programming language		& ohjelmointikieli		   \\
  RAM				& \AR Random access memory	   \\
  Random access memory		& luku- ja kirjoitusmuisti	   \\
  ROM				& \AR Read only memory		   \\
  Read only memory		& lukumuisti			   \\
  Software			& ohjelmisto			   \\
  Secondary memory		& oheismuisti; levyt ja nauhat	   \\
  User interface		& k\"aytt\"oliittym\"a		   \\
  Tape				& (magneetti)nauha		   \\
  Voice recognition		& \"a\"anen (puheen) tunnistus	   \\
  Workstation			& ty\"oasema			   \\
  WAN				& \AR Wide area network		   \\
  Wide area network		& laajan alueen verkko		   \\
\end{tabular}

