A DATA DEFINITION FACILITY for PROGRAMMING LANGUAGES By

Total Page:16

File Type:pdf, Size:1020Kb

A DATA DEFINITION FACILITY for PROGRAMMING LANGUAGES By A DATA DEFINITION FACILITY FOR PROGRAMMING LANGUAGES by T. A. Standish Carnegie Institute of Technology ....... PittsbUrgh, Pennsylvania May 18, 1967 Submitted to the Carnegie Institute of Technology ....... in partial fulfillment of the requirements for the degree of Doctor of Philosophy This work was supported by the Advanced Research Projects Agency of the Office of the Secretary of Defense (SD-146). Abstract This dissertation presents a descriptive notation for data structures which is embedded in a programming language in such a way that the resulting language behaves as a synthetic tool for describing data and processes in a number of application areas. A series of examples including formulae, lists, flow charts, Algol text, files, matrices, organic molecules and complex variables is presented to explore the use of this tool. In addition, a small formal treatment is given dealing with the equivalence of evaluators and their data structures. -ii- Table of Contents Title Page ....................... i Abstract ........................ ii Table of Contents .................... iii Acknowledgments .................... v Chapter I. Introduction .................. 1 Chapter II. A Selective Review of the Work of Others ...... 17 Chapter III. The Data Definition Facility ........... 25 1. Chapter Summary .............. 25 2. General Description .............. 25 3. Component Descriptions ........... 30 4. Elementary Descriptors ........... 34 5. Modified Descriptors ............ 40 6. Descriptor Formulae ............ 48 7. Declaring Descriptor Variables. and Descriptor Procedures ......... 51 8. Predicates, Selectors, Constructors and Declarations ............. 53 9. Constructors ............... 53 10. Selectors ................. 58 11. Predicates ................ 60 12. Declarations ............... 64 13. Reference Variables, Pointer Expressions and the Contents Operation ......... 65 14. Overlay Assignments, Sharing of Structures and Copying of Structures .......... 68 - iii- Table of Contents, Continued 15. Paths, Path Variables and Path Concatenation .......... 70 16. Other Operations on Descriptors ........ 71 17. Parallel Assignments and Block Expressions. 72 Chapter IV. Examples and Applications .......... 73 1. Formula Manipulation ............ 73 2. List Processing .............. 95 3. Mapping Algol Text into Flow Charts ...... 104 4. Electronic Circuits ............. 121 5. Complex Variables ............. 128 6. Files .................. 129 7. Matrices ................. 134 8. Recognizers for Graphical Objects ....... 137 9. Organic Chemistry Molecules ......... 182 Chapter V. A Small Formal Study of the Equivalence Of Evaluators and Their Data Structures ..... 195 Chapter VI. Some Reduction Algorithms and Background Machines ............. 239 Chapter VII.Future Directions and Conclusions. ..... 254 Appendix I. Additions to the Revised Algol Report Defining the Syntax of the Data Definition Facility ..... 267 Appendix II. Summary of the Semantics of the Data Definition Facility ............. 2 76 Appendix III. Data Structure Definitions .......... 280 References ..................... 28 7 -iv- A cknowledgements These early days of the science of computing, even if somewhat muddled, are filled with excitement and at Carnegie Tech especially the environment has been stimulating. This is due mainly, I feel, to the presense and leadership of a gifted, dynamic and personable triumvirate who have marshalled people, resources and, most of all, inspiring ideas in the construction of the computing enterprise at Carnegie. It has been both a unique privilege and an enormous pleasure to have had the opportunity to participate in this enterprise for the past four years. I am particularly grateful to several individuals who have been helpful in the preparation of this dissertation. First and foremost is Professor Alan J. Perlis. His outstanding lectures and teachings have provided many of the ideas that I find are now keystones in my thinking, and he has given generously of his valuable time and advice in helping me to prepare this dissertation. My colleagues in the Formula Algol group : Renato Iturriaga, Rudy Krutar and Jay Earley, with whom I have shared the rewards and frustrations of sustained, constructive toil, are also deserving of mention for hours of interesting conversation and for their creative suggestions. I am also grateful to Professor Allen Newell whose remarkable originality has been a broadening influence and -V - a stimulus in getting me to look at different approaches to the work of this dissertation. As a recipient of a National Science Foundation fellowship during my graduate studies it is a pleasure gratefully to acknowledge my indebtedness to the National Science Foundation for financial support. Finally, computer time and facilities were provided in part by the Advanced Research Projects Agency of the Office of the Secretary of Defense under contract SD-146 to the Carnegie Institute of Technology. - vi - Chapter I Introduction This dissertation presents a method for defining and manipulating several varieties of data structures. This method consists of embedding a descriptive notation for data structures within a programming language in such a way that the resulting language behaves as a synthetic tool for describing and constructing data and programs in a variety of application areas. A series of examples are presented which explore the use of this tool and a small formal presentation is given dealing with the equivalence of evaluators and their data structures. One hope for the dissertation is that the data structure notation it presents will serve both a descriptive and an integrative role. Enough examples have accumulated in our programming experience of different kinds of useful and durable data structures that it becomes worthwhile to study them deliberately and to search for a notation which, to some extent, summarizes the variations in structure that they represent. What is desired is a notation whose permissible variations allow us to describe a wide range of different data structures including, as subsets, the useful structures known to us and new ones as well. A good descriptive notation should not only -2- be a summary of what is known, it should lead along natural lines of generalization suggested by its combining laws and rules of growth to the description of new structures. With regard to its use as part of a programming technique for describing and manipulating data, the notation should permit descriptions of data structures to be concise, clear and direct. In our view, the significant problems that we face in dealing initially with new areas of research in computer science are "problems of discovery, formulation, representation and immediate generalization [45]" and that with regard to practical application "we are not [during the initial stages of exploration] at the place of building very elaborate or formal mathematical structures that are significant [45]". The study of data structures has perhaps advanced beyond this initial stage. At present, we have many results of the processes of discovery and formulation (e. g. lists, arrays, strings, rings, formulae, trees and directed graphs ). These discoveries make possible a process of immediate generalization. The data structure notation presented in this dissertation exhibits one immediate generalization of known data structures. Thus the notation summarizes, integrates and provides descriptive power. It also points in new directions. -3- Giving a notation of broad descriptive power enhances our opportunities for creating meaningful formal mathematical structures. A small formal treatment of the equivalence of evaluators and their data structures, given in Chapter V, although not of broad practical significance, is intended as a harbinger of what becomes available to us in the realm of mathematical formalization. Ultimately, of course, we hope that significant mathematical structures can be formulated which will summarize the significant discoveries about data structures with precision and generality. At this point the study of data structures will approach maturity. Another objective of the dissertation is to provide a method for improving programming languages. One of the constant concerns of computer science is to design good programming languages, and, once they are implemented, to enrich them and improve them, for programming languages are a principal means whereby we specify and control the behavior of computers and whereby we can organize our transactions with computers to achieve multiplication of effect without multiplication of effort. For a given programming task, the greater the ease with which a programmer can describe in a given language the data of -4- interest and the greater the ease in that language with which he can manipulate the data he has described, the greater the usefulness of that language for that task. Conversely, a programming language is relatively less useful for a given task to the degree that it becomes awkward, indirect and complex to formulate and manipulate representations of the data of interest to the task in terms of the primitive data and primitive operations supplied in that language. Indirectness of data representation and data manipulation may cause a loss both of clarity of structure and also of efficiency since operations on the representations which could be expressed or performed once prior to writing an algorithm may be distributed through it and since the primitive data structures used
Recommended publications
  • A Politico-Social History of Algolt (With a Chronology in the Form of a Log Book)
    A Politico-Social History of Algolt (With a Chronology in the Form of a Log Book) R. w. BEMER Introduction This is an admittedly fragmentary chronicle of events in the develop­ ment of the algorithmic language ALGOL. Nevertheless, it seems perti­ nent, while we await the advent of a technical and conceptual history, to outline the matrix of forces which shaped that history in a political and social sense. Perhaps the author's role is only that of recorder of visible events, rather than the complex interplay of ideas which have made ALGOL the force it is in the computational world. It is true, as Professor Ershov stated in his review of a draft of the present work, that "the reading of this history, rich in curious details, nevertheless does not enable the beginner to understand why ALGOL, with a history that would seem more disappointing than triumphant, changed the face of current programming". I can only state that the time scale and my own lesser competence do not allow the tracing of conceptual development in requisite detail. Books are sure to follow in this area, particularly one by Knuth. A further defect in the present work is the relatively lesser availability of European input to the log, although I could claim better access than many in the U.S.A. This is regrettable in view of the relatively stronger support given to ALGOL in Europe. Perhaps this calmer acceptance had the effect of reducing the number of significant entries for a log such as this. Following a brief view of the pattern of events come the entries of the chronology, or log, numbered for reference in the text.
    [Show full text]
  • Editors/Translators Foreword
    J Comput Virol (2009) 5:1–3 DOI 10.1007/s11416-008-0116-y EDITORIAL Editors/translators Foreword Daniel Bilar · Eric Filiol © Springer-Verlag France 2009 Bereishit In the beginning, there was bureaucracy. I had tried a feeling of nostalgia (and gratitude for Donald Knuth). I set to get major AV companies to give me malware samples to it aside till Christmas break. study in an academic setting, but to no avail: Liability rea- As I worked my way through the thesis over Christmas sons, and their suggestion—trekking back and forth to their break 2006, my cursory curiosity gave way to wonderment, corporate ‘clean’ room—was unpalatable to me. I like flat then awe, then electricity. I felt as if I had stumbled upon hierarchies, so I turned to herm1t. Herm1t runs (singlehand- a 10th century manuscript in an Scottish convent, delineat- edly, with minimal equipment and funds) the labour of love ing the calculus seven hundred years before Leibnitz and known as vxheavens (http://vx.netlux.org), a full-spectrum Newton. Aspects of the history of computer virology had to site dedicated to computer viruses. As quid pro quo, I sent be rewritten and proper due given- what a fortuitous find! him historical papers he sought for his collection. One title, I sent a printed snail mail copy off to herm1t in the Ukraine though, seemed out of reach: A German 1980 MSc thesis by and pondered my next steps. some fellow named Juergen Kraus. In early February, Eric Filiol, after having discovered an A hefty Dortmund package arrived late October 2006.
    [Show full text]
  • Stan-(X-249-71 December 1971
    S U326 P23-17 AN ANNOTATED BIBLIOGRAPHY ON THE CONSTRUCTION OF COMPILERS . BY BARY W. POLLACK STAN-(X-249-71 DECEMBER 1971 - COMPUTER SCIENCE DEPARTMENT School of Humanities and Sciences STANFORD UNIVERS II-Y An Annotated Bibliography on the Construction of Compilers* 1971 Bary W. Pollack Computer Science Department Stanford University This bibliography is divided into 9 sections: 1. General Information on Compiling Techniques 2. Syntax- and Base-Directed Parsing c 30 Brsing in General 4. Resource Allocation 59 Errors - Detection and Correction 6. Compiler Implementation in General - 79 Details of Compiler Construction 8. Additional Topics 9* Miscellaneous Related References Within each section the entries are alphabetical by author. Keywords describing the entry will be found for each entry set off by pound signs (*#). Some amount of cross-referencing has been done; e.g., entries which fall into Section 3 as well as Section 7 will generally be found in both sections. However, entries will be found listed only under the principle or first author's name. Computing Review citations are given following the annotation when available. "this research was supported by the Atomic Energy Commission, Project ~~-326~23. Available from the Clearinghouse for Federal Scientific and Technical Information, Springfield, Virginia 22151. 0 l/03/72 16:44:58 COMPILER CONSTRUCTION TECHNIQUES PACFl 1, 1 ANNOTATED RTBLIOGRAPHY GENERAL INFORMATION ON COMP?LING TECHNIQOES Abrahams, P, W. Symbol manipulation languages. Advances in Computers, Vol 9 (196R), Sl-111, Academic Press, N. Y. ? languages Ic Anonymous. Philosophies for efficient processor construction. ICC Dull, I, 2 (July W62), 85-89. t processors t CR 4536.
    [Show full text]
  • Compiler Construction
    Compiler construction PDF generated using the open source mwlib toolkit. See http://code.pediapress.com/ for more information. PDF generated at: Sat, 10 Dec 2011 02:23:02 UTC Contents Articles Introduction 1 Compiler construction 1 Compiler 2 Interpreter 10 History of compiler writing 14 Lexical analysis 22 Lexical analysis 22 Regular expression 26 Regular expression examples 37 Finite-state machine 41 Preprocessor 51 Syntactic analysis 54 Parsing 54 Lookahead 58 Symbol table 61 Abstract syntax 63 Abstract syntax tree 64 Context-free grammar 65 Terminal and nonterminal symbols 77 Left recursion 79 Backus–Naur Form 83 Extended Backus–Naur Form 86 TBNF 91 Top-down parsing 91 Recursive descent parser 93 Tail recursive parser 98 Parsing expression grammar 100 LL parser 106 LR parser 114 Parsing table 123 Simple LR parser 125 Canonical LR parser 127 GLR parser 129 LALR parser 130 Recursive ascent parser 133 Parser combinator 140 Bottom-up parsing 143 Chomsky normal form 148 CYK algorithm 150 Simple precedence grammar 153 Simple precedence parser 154 Operator-precedence grammar 156 Operator-precedence parser 159 Shunting-yard algorithm 163 Chart parser 173 Earley parser 174 The lexer hack 178 Scannerless parsing 180 Semantic analysis 182 Attribute grammar 182 L-attributed grammar 184 LR-attributed grammar 185 S-attributed grammar 185 ECLR-attributed grammar 186 Intermediate language 186 Control flow graph 188 Basic block 190 Call graph 192 Data-flow analysis 195 Use-define chain 201 Live variable analysis 204 Reaching definition 206 Three address
    [Show full text]
  • CWI Scanprofile/PDF/300
    STICHTING MATHEMATISCH CENTRUM ,,n 2e BOERHAAVESTRAAT 49 AMSTERDAM REKENAFDELING MR 100 FINAL DRAFT REPORT ON THE ALGORITHMIC LANGUAGE ALGOL 68 A. van Wijngaarden ·(editor), B • J. Mailloux, J. E. L. Peck I , and C. H.A.Koster · Commissioned by Worldng Group 2 .1 on ALGOL of the International Federation .for Information Processing December 1968 MATHEMATISCH Contents P. Prologue P.1. History of the Report . P. 2. Membership of the Working Group::· · P.3. Maintenance P.4. References o. Introduction 0.1. Aims and principles of design 0.1.1. Completeness and clarity of description. 0.1.2. Orthogonal design.- 0.1.3. Security. 0.1.4. Efficiency. 0.1.4.1. Static mode checking. 0.1.4.2. Static scope checking. 0.1.4.3. Mode independent parsing. 0 • 1 • 4. 4. Independent compila·tion. 0 • 1 • 4. 5 • Loop optimization. 0. 1 • 4. 6. Representations 0.2. Comparison with ALGOL 60 0.2.1. Values in ALGOL 68. 0.2.2. Declarations in ALGOL 68. 0.2.3. Dy­ namic storage allocation in ALGOL 68. 0.2.4. Collateral elaboration in ALGOL 68. 0.2.5. Standard declarations in ALGOL 68. 0.2.6. Some particu­ lar constructions in ALGOL 68 1 • Language and metalanguage ":· ,,.. 1.1. The method of description . 1 • 1 • 1 • 'I'he strict, extended and representation languages. 1 • 1 • 2. The syntax of the strict language. 1.1.3. The·syntax of the metalanguage. 1.1.4. The production rules of the metalanguage. 1.1.5. The production rules of the strict language. 1.1.6.
    [Show full text]
  • Wirth Transcript Final
    A. M. Turing Award Oral History Interview with Niklaus Wirth by Elena Trichina ETH, Zürich, Switzerland March 13, 2018 Trichina: My name is Elena Trichina. It is my honor to interview Professor Niklaus Wirth for the Turing Award Winners Project of the Association for Computing Machinery, the ACM. The Turing Award, sometimes referred to as “the Nobel Prize of computing,” is given annually for major contributions of lasting importance in computing. Professor Wirth received his award in 1984 in recognition of his outstanding work in developing a sequence of programming languages – Euler, Algol-W, Pascal, Modula. The hallmarks of Wirth’s languages are their simplicity, economy of design, and high-level engineering. We will talk about it and many other things later today in the interview that takes place on the 13th of March, 2018, in the Swiss Federal Institute of Technology. So we start. Ready? Guten Tag, Niklaus. Gruetzi. Wirth: Добрый ден, Елена Василевна Здравствуи [Good morning, Elena. Hello. – ed.] Trichina: Well, although your command of Russian is sufficient, my command of Swiss German is a little bit rudimentary. Shall we continue in one of the languages where we both feel comfortable? What would it be? French? English? Wirth: Oh, I think English is better for me. Yes, yes. Trichina: Okay. It’s probably better for the audience. [laughs] Wirth: Okay. True. Trichina: Okay. We continue in English. Here in front of me there is a list of the most important days in your life. You were born in February 1934 in Winterthur, which is a sort of middle-size industrial town in Switzerland.
    [Show full text]
  • I Vestiti Vecchi Dell'imperatore Di Tony C.A.R
    Tony C.A.R. Hoare ACM Turing Award per "fondamentali contributi alla definizione ed alla progettazione di linguaggi di programmazione". Il premio gli è stato consegnato alla Conferenza Annuale dell' ACM in Nashville, Tennessee, il 27 Ottobre 1980, da Walter Carlson, CPresidente del comitato per i Premi. Una trascrizione della conferenza di Hoare[12] è stata pubblicata nelle Communications of the ACM.[2] I Vestiti Vecchi dell'Imperatore di Tony C.A.R. Hoare Communications of the ACM, 1981 (in occasione del conferimento del Turing Award) Il mio primo e più piacevole obbligo da assolvere con questa conferenza, è quello di esprimere la mia profonda gratitudine alla Association for Computing Machinery per il grande onore che ha voluto attribuirmi, e per la presente opportunità di rivolgermi a voi con un argomento di mia scelta. In realtà si tratta di una scelta davvero difficile! I risultati scientifici da me ottenuti, così largamente riconosciuti da questo premio, sono già stati ampiamente descritti nella letteratura scientifica. Anzichè riproporre gli astrusi dettagli tecnici del mio mestiere, vorrei parlarvi in modo informale di me, delle mie esperienze personali, delle mie speranze e dei miei timori, dei miei modesti successi, e anche dei miei meno modesti insuccessi. Ho imparato di più dai miei errori di quello che possano rivelare le fredde parole stampate di un articolo scientifico, ed ora mi piacerebbe che anche voi possiate ricavare da essi un insegnamento. Inoltre, dei fallimenti è molto più piacevole sentir parlare dopo qualche tempo; essi sul momento non risultano così divertenti. Faccio partire il mio racconto nell'Agosto del 1960, quando divenni un programmatore per un relativamente piccolo fabbricante di computer, una divisione della Elliott Brothers (London) Ltd., dove nei successivi otto anni avrei ricevuto la mia educazione di base in computer science.
    [Show full text]
  • The History of the ALGOL Effort
    Technische Universiteit Eindhoven Department of Mathematics and Computer Science The History of the ALGOL Effort by HT de Beer supervisors: C. Hemerik L.M.M. Royakkers Eindhoven, August 2006 Abstract This report studies the importancy of the ALGOL effort for computer science. Therefore the history of the ALGOL effort is told, starting with the compu- tational context of the 1950s when the ALGOL effort was initiated. Second, the development from IAL to ALGOL 60 and the role the BNF played in this development are discussed. Third, the translation of ALGOL 60 and the establishment of the scientific field of translator writing are treated. Finally, the period of ALGOL 60 maintenance and the subsequent period of creating a successor to ALGOL 60 are described. ii Preface This history on the ALGOL effort was written as a Master thesis in Com- puter Science and Engineering (Technische Informatica) at the Eindhoven University of Technology, the Netherlands. iii Contents Abstract ii Preface iii Contents iv 0 Introduction 1 0.0 On the sources used ........................ 2 0.1 My own perspective ........................ 3 0.2 The ALGOL effort: a definition .................. 4 0.3 Notes ................................ 4 1 Creation 5 1.0 The start of the ALGOL effort ................... 5 1.1 The need for a universal algorithmic language ........... 7 1.1.0 The American field of computing ............. 7 1.1.1 The European field of computing ............. 9 1.1.2 The difference between Europe and the USA and the need for universalism ...................... 11 1.2 Why was IAL chosen over other algorithmic languages? ..... 11 1.2.0 IT ............................
    [Show full text]
  • Ab26.2. Coilrfesponde~Ice
    AB26 p J AB26.2. COILRFESPONDE~ICE AB26.2. t . Retained data-objects 18 Ebury Street, London 8 If 1. May 12th 1967 To: Members of WG2.1 and Editor, AB. An essential feature of ALGOL60 was the transience of all data to the scope - extent in time - of the block in which it was declared. Thus the notion of data whose scope is more extensive than the program that created or referred to it is outside the universe in which an ALGOL program lives and dies. The purpose of the letter is to bring to the attention of ~2.1 the need to be able to manqe such data in universes in which we can hope to be sble to code in ALGOL67. I think specifically of parallel processes cooperating and competing through a core of retained data-objects. The followlr~ are the facilities I see required. I) The ability to create reta/ned objects. 2) The ability to control the later access of £orelsn processes to the ret aimed object s. a~ To read b) To alter c) To execute d) To destroy 3) The ability of foreign processes to acquire access rights to retained object s. 4) The ability of processes to assume temporary constancy or exclusive access to retained objects and the sequencing of processes msklns conflicting demands. I do not believe that the semantics of uhat is required is yet sufficiently well-understood for WG2.1 to lay dmm the syntax in which these abilities should be expressed; however I believe it to be timely to admit to ALGOL67 retained objects, leaving open for Future work specification of the commands thht enable them to be managed.
    [Show full text]
  • Introduction of Computer Languages Pdf
    Introduction of computer languages pdf Continue Source code for simple computer programs written in the language C programming language for passing instructions to the computer. If you compile and run, i will give you an output hello, world!. A programming language is a type language that contains a set of instructions that generate different kinds of output. Programming languages are used in computer programming to implement algorithms. Most programming languages consist of instructions for computers. There are programmable computers that use a specific set of instructions rather than a regular programming language. The early computers preceded the invention of digital computers, probably being auto flute players described in the 9th century by Baghdad's brother Musa during the Islamic Golden Age. [1] Since the early 1800s, programs have been used to direct machine movements such as jacquard looms, music boxes, and player pianos. [2] The program for these machines (e.g. a scroll of player piano) did not generate any other behavior in response to different inputs or conditions. Thousands of different programming languages have been created, and more languages are being created each year. Many programming languages are written in required types (i.e., written in sequences of actions that need to be performed), and other languages use declarative forms (i.e., the desired results are specified and not the method is achieved). Descriptions of programming languages are typically divided into two components: syntax (form) and semantics (meaning). Some languages are defined by specification documents (such as C programming languages specified by ISO standards), while others (such as Perl) have a dominant implementation that is treated as a reference.
    [Show full text]
  • Wildland Classification with Multivariate Analysis
    DISSERTATION WILDLAND CLASSIFICATION WITH MULTIVARIATE ANALYSIS AND REMOTE SENSING TECHNIQUES Submitted by David L. Radloff Forest and Wood Sciences In partial fulfillment of the requirements for the Degree of Doctor of Philosophy Colorado State University Fort Collins, Colorado Spring, 1983 C.D{V l tCR. ;\, . 1 \.~t.,)r-('1"'·::l Y ROCKY Ml . F O'~C:, T & R.\ NGEJ £)("''-;: . 'L:','I ST:HfON COLORADO STATE UNIVERSITY December, 1982 WE HEREBY RECOMMEND THAT THE DISSERTATION PREPARED UNDER OUR SUPERVISION BY DAVID L. RADLOFF ENTITLED WILDLAND CLASSIFICATION WITH MULTIVARIATE ANALYSIS AND REMOTE SENSING TECHNIQUES BE ACCEPTED AS FULFILLING, IN PART, REQUIREMENTS FOR THE DEGREE OF DOCTOR OF PHILOSOPHY. Committee on Graduate Work iff;Zf 'cZ~~/ .--/ Department Head / ii ABSTRACT OF DISSERTATION WILDLAND CLASSIFICATION WITH MULTIVARIATE ANALYSIS AND REMOTE SENSING TECHNIQUES Wildland classification is a prerequisite to many tasks in the land management planning process. Although a variety of general wildland classification frameworks have been proposed for the United States, much work remains to develop detailed-level classification. This study was conducted in three parts to examine three related aspects of wildland classification at the detailed level. The first part of the study was designed to examine the utili ty of multivariate analysis techniques in developing an ecologic land classification for a specific area. The second part of the study was designed to assess the similarity between two independently developed classifications for the same area. The third part of the study was designed to evaluate the use of remote sensing data for identifying detailed land classification units on the ground. Vegetation dominance data were collected in 102 sample stands in the Manitou Experimental Forest, Colorado.
    [Show full text]
  • Program Structure and Object Oriented Programming
    Programming Languages Sessions 7 & 8 – Main Theme Program Structure and Object-Oriented Programming Dr. Jean-Claude Franchitti New York University Computer Science Department Courant Institute of Mathematical Sciences Adapted from course textbook resources Programming Language Pragmatics (3rd Edition) Michael L. Scott, Copyright © 2009 Elsevier 1 Agenda 11 SessionSession OverviewOverview 22 ProgramProgram StructureStructure 33 Object-OrientedObject-Oriented ProgrammingProgramming 44 ConclusionConclusion 2 What is the course about? Course description and syllabus: » http://www.nyu.edu/classes/jcf/g22.2110-001 » http://www.cs.nyu.edu/courses/fall10/G22.2110-001/index.html Textbook: » Programming Language Pragmatics (3rd Edition) Michael L. Scott Morgan Kaufmann ISBN-10: 0-12374-514-4, ISBN-13: 978-0-12374-514-4, (04/06/09) Additional References: » Osinski, Lecture notes, Summer 2010 » Grimm, Lecture notes, Spring 2010 » Gottlieb, Lecture notes, Fall 2009 » Barrett, Lecture notes, Fall 2008 3 Session Agenda Session Overview Program Structure Object-Oriented Programming Conclusion 4 Icons / Metaphors Information Common Realization Knowledge/Competency Pattern Governance Alignment Solution Approach 55 Session 6 Review Data Types » Strong vs. Weak Typing » Static vs. Dynamic Typing Type Systems » Type Declarations Type Checking » Type Equivalence » Type Inference » Subtypes and Derived Types Scalar and Composite Types » Records, Variant Records, Arrays, Strings, Sets Pointers and References » Pointers and Recursive Types Function
    [Show full text]