Contributor: JOHN GOHDE

TOPIC    :  Cool stuff Borland left out of their TP manuals. ;-)
FOR      :  TP 4.0+
-----------------------------------------------------------------
This  post  is  about  cool  programming  concepts  that  will be
referred  to either  directly or  indirectly in  my ON PASCAL ...
tutorial series of messages.

The underlying  programming style that will  be implemented in my
posts  is  called  OBP,  Object  Based  Programming,  or  Modular
Programming. This programming style provides many of the benefits
of Object  Oriented Programming (OOP) without  actually having to
use OOP code in your programs.

These benefits are namely: 1)the  ability to manage complexity in
your programs, 2)easy to use reusable  object code in the form of
TPUs, and  3)fewer program bugs.  Further, you are  able to stick
with traditional programming methods with OBP.

The following  are definitions of cool  programming concepts. You
are  going to  have to  accept on  faith that  these are NOT just
boring definitions!!!  Every time you write  a program you should
be thinking about and using this  cool stuff. As Borland does not
talk about them in the context of OBP, I will. ;-)

So, ... It is time to rattle your brains a little.

-----------------------------------------------------------------
ABSTRACTION
-----------
It  is the  process by  which programmers  distill the  essential
characteristics of some conception that distinguishes it from all
others. Abstraction is why High Level Programming Languages (HLL)
were invented!  HLLs achieve abstraction  by allowing programmers
to write programs without having to bit-twiddle. Bit-twiddling is
for Assembly  Programming. Every HLL implements  abstraction to a
certain degree.  Hence, bit-twiddlers should  stay with ASM,  and
everybody  else should  start  thinking  in terms  of abstraction
rather than bit-twiddling in their programs!!! ;-)


ABSTRACT DATA TYPE (ADT)
------------------------
A data type that  is defined in terms of  the operations that can
be  performed  on  objects  of  that  type  rather  than  by  the
properties   of  the   objects  themselves.   ADTs  represent  an
intermediate    step   between    traditional   programming   and
object-oriented programming.  Among the many  cool uses of  ADTs,
they can make  your code portable. Think of  ADTs as the ultimate
level of abstraction in high level programming.


BINDING TIME
------------
The point in a program at which reference to a program's elements
or  abstractions   are  bound  to   specific  computer's  storage
locations and values.


BLOCK
-----
A block  is a  segment of  source code  that can  be selected and
acted upon as a whole. Think  of blocks as being a relative level
of abstraction.


CAST
COERCION
--------
A data  conversion from  one type  to another.  They are  used to
selectively turn off type checking in TP.


DATA TYPE
---------
A definition of a  set of data that specifies  the possible range
of values of the set, the operations that can be performed on the
values, and the way in which the values are stored in memory. The
concept of a data type  makes data manipulation more abstract and
hides the  underlying binary representation of  the data. We will
be using  Modules to implement  Data Types in  TP. Think of  data
types instead of just types as they are the total package!!!


DYNAMIC BINDING
LATE BINDING
---------------
Binding that occurs during program  execution. We will achieve to
a degree  this  type  of  binding  with  traditional  programming
methods using procedural types and pointers.


GLOBAL VARIABLE
---------------
A variable  whose  value  can  be  accessed  and  modified by any
statement in  a program. These variables  exist during the entire
time  a  program  executes.  Conventional  wisdom  is that Global
variables are  to be avoided  as they can  easily result in  side
effects.


INFORMATION HIDING
------------------
A design practise  in which implementation details  for both data
structures  and  algorithms  within  a  module  are  hidden  from
routines using  same. What is  hidden does not  contribute to the
essential  characteristics  of  the  abstraction.  In  theory, it
allows you to use modules in  a manner different from the planned
way without breaking  the routine that calls it.  In short units,
modules, and routines  are supposed to give out  information on a
need to know basis only, in order to avoid side effects.


LOCAL VARIABLE
--------------
A program variable whose scope in TP  is limited to a given block
of code  or routine. These  variables exist only  while the given
routine is executing. Conventional wisdom  is that you should use
Local rather than Global variables in your program.


MODULAR DESIGN
--------------
An approach to software design in  which a program is broken down
into  small units,  or modules,  each of  which can be developed,
tested,  and finished  independently before  being combined  with
other modules.


MODULAR VARIABLE
----------------
A conceptual subset  of global variables.  They exist during  the
entire  length  of  program  execution  but  can  be accessed and
modified ONLY by  a block of code known as  a module. They are to
be considered good global. In TP, we will be implementing Modular
variables  with OBP.  You will  need  to  use these  since it  is
impractical to avoid all use of global variables.

--> Continued to next message

 * SLMR 2.1a * Great minds discuss ideas; Small ones discuss people!
---
 * Communications Systems BBS, Richmond, VA, (804)285-7231
 * PostLink(tm) v1.20  COMMSYS (#923) : RelayNet(tm)

{SWAG=???.SWG,JOHN GOHDE,On Pascal ... #0011 2:2}
--> Continued from previous message

MODULE
------
A collection  of routines  and  data  structures that  performs a
particular task or implements a particular abstract data type. We
will  implement modules  in TP  as a  conceptual block of related
units.


OBJECT BASED PROGRAMMING (OBP)
MODULAR PROGRAMMING
------------------------------
A precursor of  object-oriented programming in  which the program
is broken down into several independently compiled modules. It is
considered a refinement of  structured programming or traditional
programming  methods. OBP  recognizes the  strong role  that data
plays in programs.


PASCAL
------
A programming language designed to encourage programmers to write
modular and well structured  programs. With Pascal the programmer
is supposed to deal with  abstractions rather than always working
directly  with computer  memory.  Pascal  was designed  for those
programmers who  want the highest levels  of abstraction possible
in their programs.  Did you know that?  ;-)


SIDE EFFECT
-----------
An unanticipated  effect or change  of state caused  by a routine
that happens when  the program is executed. In  other words, they
are program "bugs".


STATIC BINDING
EARLY BINDING
--------------
Binding that  occurs during program compilation  or linkage. This
is the binding used with traditional programming methods.


STRONG TYPING
-------------
A characteristic  of Pascal  that does  not allow  the program to
change the type of a variable during program execution.


STRUCTURED PROGRAMMING (SP)
TRADITIONAL PROGRAMMING METHODS
-------------------------------
A style   of   programming   designed   to   make  programs  more
comprehensible  and  programming  errors  less frequent. Strictly
speaking, SP concentrates on algorithms  or flow of control while
neglecting the role of data or objects.


TYPE
----
Defines the nature of a variable. It is a level of abstraction.


TYPE CHECKING
-------------
The examination by  a compiler of the operations  in a program to
make sure that  the operations make sense, that  the correct data
types are being used, and  that all expressions are guaranteed to
be type-consistent.


VISIBILITY
SCOPE OF ...
-----------
This refers to the extent a given identifier can be referenced in
a program. Another way of looking at  this issue is how long does
an identifier in a program exist.
-----------------------------------------------------------------