Unformatted text preview:

n On Orthogonality What makes orthogonality work m by remembering only m n things we get m n capabilities Orthogonality says that no point should be definable by more than one XY pair Orthogonality advantageous only if m n e m n e ALGOL68 ALGOL68 Goals History Thesis It is good practice in programming language design to abstain from exceptions Design goals gen purpose rigorously defined language Clear up trouble spots in ALGOL60 but Pascal more like A60 than A68 is orthogonality extensibility ALGOL68 development started in mid 60 s Revised report SIGPLAN Notices May 1977 cleared up many ambiguities Key Ideas in ALGOL68 User type declarations modes Orthogonal design modes structures ops Reference mode pointers of a sort United modes predecessor to variant records Auto declaration of FOR LOOP index User specified operator overloading Notion of elaboration on context entry More Key Ideas Mode requirement for formals Casting user spec d mode conversion Redefinition of operator precedence Collateral actions Semaphores W grammars two level grammar Contexts strong firm meek weak soft WRT coercion ALGOL68 Structure ALGOL68 is block structured w static scope rules Monolithic programming as in ALGOL60 and later in Pascal ALGOL68 s model of computation static stack block procedure AR s local data objects heap heap dynamic data objects ALGOL68 is an expression oriented language note influence on C C ALGOL68 Organization Declarations Must be given FOR LOOP index only exception Can name new types modes Imperatives units 15 major unit types Assignment is allowable side effect of units c f C Data types primitive modes Int Real Char primitives Bool Void Modes created from primitives defined in prelude String Compl Bits Word full of bits More Primitive Modes Bytes Word full of chars Sema Semaphore Format I O File I O User defined modes allowed Mode largeint long INT and its attendant advantages Non primitive non plain modes references multiples arrays rows structures unions procedures unusual can be applied to primitives or other constucted modes References Variable X has two attributes of concern its value reference to storage where value is kept Most languages don t distinguish e g x x 2 value of x ref to place where value is stored The type of x is integer and The type of values assigned to x is integer get combined in this case ALGOL68 made the distinction as do e g C C References INT x means x is a ref to objects of type INT In general a variable stands for reference to data object so for x x 2 dereferenced to yield int so operation is meaningful In general for V E type of V should be ref type of E Thus if we declare REF INT PNTTOX mode of PNTTOX is REF REF INT and PNTTOX X assigns X s address to PNTTOX action not obvious from syntax Consider INT x y x y are REFs to objects of type INT REF INT r r is REF to REF INTs no deref necessary x 2 ditto pointer assignment r x y r assigns 2 as value of y two derefs required x 3 y r no deref necessary assigns 3 to y Two derefs req d No visual clue that y s value could be affected by assignment to x ALGOL68 References Note can t do r 3 r is REF REF INT and 3 is INT no coercion possible ref int r 3 will work It assigns 3 to the last variable r referred to i e x Note can create REF REF REF INT etc if so inclined Syntactic consistency Manifest interface Structuring Primitives ARRAYs rows 1D ROW 2D ROW ROW STRUCTURES e g 1 12 INT MONTH vector of 12 integers On equivalence of arrays Objects of different dimensions different modes Bounds are not part of the mode c f Pascal 1 10 1 n REAL time equivalent 1 100 7 11 REAL thing modes More Structured Types Aggregate Assignment month 31 28 31 30 31 30 31 31 30 31 30 31 adopted in Ada and later languages Dynamic arrays m n INT obj When encountered array with n m 1 locations created Continue Structuring Primitives FLEX ARRAYs change size on the fly e g FLEX 1 0 INT obj a row with no integers obj 5 5 5 changes bounds to 1 3 on the fly bounds change only by assignment to whole array Aside on strings mode string FLEX 1 0 CHAR done in prelude declaration string greetings greetings Greetings and salutations creates vector exact length of string Structures e g mode bin tree struct INT data REF bin tree l child r child note recursive definition illegal definition w o REF Why Other standard modes built up from structs e g mode compl struct REAL re im mode bits struct 1 bits width BOOL x mode bytes struct 1 bytes width CHAR x mode sema struct REF INT x all in ALGOL68 prelude Unions e g mode combine UNION INT BOOL combine x x can take on INT or BOOL values but only under controlled conditions assignment is OK x 5 x TRUE More Unions Using x in an expression requires CASE x IN conformity clause INT x1 use x1 BOOL x2 use x2 ESAC Note UNION t1 t2 tn ti can be any mode Only limitation can t have ti and REF ti in same union incestuous union creates ambiguity in cases like UNION INT REF INT x INT y x y Can t determine how many deREFs to do on y 0 if x is ref ref int 1 if x is ref int Procedures Procedure units have mode and value mode determined by arg modes and ret mode ALGOL68 supports procedure valued variables mode Pr PROC vector matrix matrix Pr P1 P2 two instances of generic Pr P1 PROC vector a matrix b matrix procedure definition P2 P1 P2 now has same def as P1 implemented using pointers Procedure modes can be used as parameters routine texts Formals and actuals must have same type Coercion six kinds see Tannenbaum dereferencing deproceduring widening rowing uniting voiding More Coercion int i real r 1 1 int rowi ref int refi union int real ir proc int p r i r ir i ir r i p i refi p rowi 5 i gets widened uniting uniting deproceduring dereferencing twice deproceduring voiding rowing CASE Clauses CASE i IN action1 action2 action3 action4 ESAC Pro s Enforced structure as compared to FTN computed goto and ALGOL60 switch Cons CASE expression restricted to INT a bother If for say i 2 4 and 6 we want to perform the same action that action would have to be repeated in place all three times Continue Cons of CASE Statement If during program development maintenance an action got added or removed programmer could miss the change and the compiler won t complain very difficult kind of error to identify birth of the labeling principle Tony Hoare came up with model Wirth included in Pascal Catchall phrase else otherwise etc to catch cases not named was born later incorporated into Ada and Modula 2 A68 Summary Coercion Elaborate interactions


View Full Document

UVA CS 655 - LECTURE NOTES

Download LECTURE NOTES
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view LECTURE NOTES and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view LECTURE NOTES and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?