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. -----------------------------------------------------------------