Object-Oriented Programming: Regaining the Excitement

Total Page:16

File Type:pdf, Size:1020Kb

Object-Oriented Programming: Regaining the Excitement Ob ject-Oriented Programming: Regaining the Excitement Andrew P. Black Oregon Graduate Institute of Science & Technology Portland, Oregon, USA [email protected] Abstract. This pap er is based on a sp eech delivered at the ECOOP'98 Conference Banquet. It is not a literal transcription of my talk, since no recording was made, but has b een reconstructed ex post facto based up on my sp eaker's notes and my memory.Ihavealsotaken the opp ortunity to add some headings and references. Distinguished Chairmen, Memb ers of the Conference Committee, Represen- tatives of the sp onsoring organizations, distinguished Professors, conference par- ticipants, and friends: Go o d evening. It's customary to start this kind of talk with a joke, at least in part to give the audience a chance to b ecome accustomed to my strange accent b efore I start to sayanything interesting, but I'm going to skip that tonight b ecause I think that wehave already heard quite enough jokes for one evening. To set the record straight from the very rst, I should make it clear that I do not work for IBM, nor haveIworked for IBM in the past. Although I did once sp end a very enjoyable year at IBM's Yorktown Heights Research Lab oratory, IBM was very clear that I didn't work for them, even though I did turn up every day and they did pay me: I b elieve that the distinction had something to do with so cial security tax or health insurance. I should also p oint out, particularly for the b ene t of those of you around the corner who cannot see me, that yes, I am wearing a tie, but no, I don't use a mainframe. I used to use a mainframe, but one day the mainframebrokeand all of the little b eads came o . [At this p oint the reader will have to imagine a large broken abacus frame with b ent wires and missing b eads.] 1 Inventing the Future of Ob ject Technology The right thing to do in a talk of this nature is to predict the future of ob ject technology, but prediction is hard, and predicting the future is esp ecially hard! Alan Kay once said: \The b est way to predict the future is to inventit".And he was remarkably accurate. Let me read you a quote from over 20 years ago. In the 1990's there will b e millions of p ersonal computers. They will b e the size of noteb o oks of to day,have high resolution at screen re- ective displays, weigh less than 10 p ounds, have 10 to 20 times the computing and storage capacity of an Alto. Let's call them Dynab o oks. The purchase price will b e ab out that of a color television set of the era... Though the Dynab o ok will have considerable lo cal storage and do most computing lo cally, it will sp end a large p ercentage of its time ho oked to various large, global information utilities which will p ermit communication with others of ideas, data, working mo dels as wellasthe daily chit-chat that organizations need in order to function. This is from Alan's pap er \The Early History of Smalltalk"[5], in which Alan quotes an internal XeroxPARC memo from around 1976. I recommend that pap er most highly: if you nd any wisdom in my remarks this evening, please attribute it to Alan Kay and not to me. My goal tonightistochallenge you to put the excitementbackinto ob ject- orientation, and to recapture some of the dynamism of those early Smalltalk days. Is this p ossible? Or has ob ject-orientation b ecome like structured program- ming: the right idea, but no longer the fo cus of innovation, exactly b ecause everyone is already doing it. For example, wedon'thave a Europ ean Conference on Structured Programming every year. I don't think that ob ject-orientation is yet at that p oint. There are still many hard problems to solve: scale and encapsulation are two that I will mention brie y tonight. 2 Programming Language Contributions Relevantto Ob ject-orientation The programming language researchcommunity has historically b een a great source of innovation. I b elievethatwe should challenge ourselves to recapture that atmosphere of innovation; to help us on our way, I will takeabrieflookat some of the ideas that have b een \brought to market" byin uential programming languages over the last fortyyears. I'm not claiming that the listed languages invented the concepts in every case, but rather that these languages were among the rst to p opularize them. 2.1 Lisp (late 1950s) Lisp was a startling language for its time: I b elieve that Lisp is one of Alan Kay's \almost new things". It contributed: { heap allo cation and garbage collection, { interpreted execution, and { conditional expressions. 2.2 Algol 60 Another \almost new thing", in contrast to the \b etter old things" of COBOL and FORTRAN. Its contributions include: { a semi-formal, concise de nition, { grammars as a descriptivetechnique, { blo ck structure, { recursion|but not the word \recursion"; - recursion intro duced the distinction b etween program text (or \static instance") and its execution (or \dynamic instance"). This distinction is the kernel of the idea that b ecame Simula Ob jects [7]. Algol 60 also intro duced { declarations, { call-by-name, { \own" variables, { the extension of the concept of expression to non-numeric values, - Bo olean expressions, and - \designational expressions", and { the idea of \Security", whichwewould probably to day call semantic in- tegrity. Security is the principle that a program must either b e rejected as incorrect by compile-time or run-time checks, or its behavior must be understandable by reasoning basedentirely on the language semantics, indep endent of the imple- mentation [2, 7]. However, no language is p erfect. Two \non-contributions" of Algol 60 were: { that the non-numeric expressions that Algol 60 chose to include were lab els, not pro cedures; and that { input/output was relegated to a library. 2.3 Algol W, Pascal and Simula 67 Contributions: { quasi-parallel execution (previously intro duced in Knuth's SOL); { user-de nable typ es; { static inheritance (Simula's pre x classes); { use of pre x classes to provide \language dialects" { Sum typ es, also known as varianttyp es, or discriminated unions; { the combination of data and op erations in a single language construct; and { the idea that binding of a value to a name requires only typ e compatibility, not typ e identity. Non-contributions: { Explicit reference variables, and { Pascal's sacri ce of the security of Algol 60 bythevariant record construct. This last innovation is p erhaps one of the reasons that Tony Hoare said of Al- gol 60: \here is a language so far ahead of its time, that it was not only an improvement on its predecessors , but also on nearly all its successors"[2]. 2.4 Algol 68 Contributions: { uni cation of statement and expression, that is, making the distinction b e- tween them one of typ e, rather than one of context-free syntax; { the void typ e; { co ercion; { environment enquiries; { conceptual minimality, for example, - the use of references to eliminate the notion of variable, and - the use of pro cedures to eliminate call-by-name; and { obtaining an extensible syntax|then an imp ortant goal|by means of the de nition of new op erators, and by that means alone. Non-contributions: { 2-level grammars as a descriptive technique, and { once again, breaching security,thistimeby requiring that the programmer not exp ort a stack-allo cated variable outside of its scop e, which is not some- thing for which implementations can easily check. 2.5 CLU, Alphard, Mo dula (1974-78) Contributions: { encapsulation, { named scop es (i.e., the mo dule concept), { parametric p olymorphism, and { F-b ounded p olymorphism (CLU's where clauses) - but it's not clear that the CLU designers realized at the time what they had invented. 2.6 Emerald (1984-6) Contributions: { safe, static subtyping, { F-b ounded p olymorphism (in the interpretation of conformity in where clauses)[4] - but we also did not yet knowthatitwould b e given this name, { mobile ob jects, { lo cation-indep endentinvo cation, { ob ject constructors (which I b elieve are relevant to Ole Lehrmann Madsen's quest to integrate prototyp e and class-based programming styles), { separation of typ e from implementation, and { the \op en world" assumption This last is the idea that new ob jects and new classes (sup erclasses as well as sub classes) can b e added to a system at any time, so that we don't havetoshut down and recompile the internet. 2.7 Later Developments What has happ ened since then? { multi-paradigm languages (LIFE, Leda, etc.) { higher-order functional languages with ob ject-oriented concepts (Ob jective CAML, Haskel with its typ e classes, etc.) These are interesting, but not earth-shaking. And then, of course, wehaveJava. What are Java's advances over Emerald? The ma jor one is of course replacing word pair brackets (like do ... end)with curly braces fg, but we should not overlo ok typ ed byte-co de and byte-co de veri cation. The latter means that one can obtain a class that someone else has compiled and b e sure that it is typ e-safe. This is a real advance, although pro of-carrying co de [6] maywell b e a more elegant and more widely applicable wayofachieving the same e ect.
Recommended publications
  • QATAR ASW ONLINE SCRIPT V.8.0 Pages
    “DEXIGN THE FUTURE: Innovation for Exponential Times” ARNOLD WASSERMAN COMMENCEMENT ADDRESS VIRGINIA COMMONWEALTH UNIVERSITY IN QATAR 2 MAY 2016 مساء الخير .Good afternoon It is an honor to be invited to address you on this important day. Today you artists and designers graduate into the future. Do you think about the future? Of course you do. But how do you think about the future? Is the future tangible - or is it intangible ? Is it a subject for rational deliberation? Or is it an imagined fantasy that forever recedes before us? Is the future simply whatever happens to us next? Or is it something we deliberately create? Can we Dexign the Future? What I would like us to think about for the next few moments is how creative professionals like yourselves might think about the future. What I have to say applies as much to art as it does to design. Both are technologies of creative innovation. I will take the liberty here of calling it all design. My speech is also available online. There you can follow a number of links to what I will talk about here. The future you are graduating into is an exponential future. What that means is that everything is happening faster and at an accelerating rate. For example, human knowledge is doubling every 12 months. And that curve is accelerating. An IBM researcher foresees that within a few years knowledge will be doubling every 12 hours as we build out the internet of things globally. This acceleration of human knowledge implies that the primary skill of a knowledge worker like yourself is research, analysis and synthesis of the not-yet-known.
    [Show full text]
  • Edsger Dijkstra: the Man Who Carried Computer Science on His Shoulders
    INFERENCE / Vol. 5, No. 3 Edsger Dijkstra The Man Who Carried Computer Science on His Shoulders Krzysztof Apt s it turned out, the train I had taken from dsger dijkstra was born in Rotterdam in 1930. Nijmegen to Eindhoven arrived late. To make He described his father, at one time the president matters worse, I was then unable to find the right of the Dutch Chemical Society, as “an excellent Aoffice in the university building. When I eventually arrived Echemist,” and his mother as “a brilliant mathematician for my appointment, I was more than half an hour behind who had no job.”1 In 1948, Dijkstra achieved remarkable schedule. The professor completely ignored my profuse results when he completed secondary school at the famous apologies and proceeded to take a full hour for the meet- Erasmiaans Gymnasium in Rotterdam. His school diploma ing. It was the first time I met Edsger Wybe Dijkstra. shows that he earned the highest possible grade in no less At the time of our meeting in 1975, Dijkstra was 45 than six out of thirteen subjects. He then enrolled at the years old. The most prestigious award in computer sci- University of Leiden to study physics. ence, the ACM Turing Award, had been conferred on In September 1951, Dijkstra’s father suggested he attend him three years earlier. Almost twenty years his junior, I a three-week course on programming in Cambridge. It knew very little about the field—I had only learned what turned out to be an idea with far-reaching consequences. a flowchart was a couple of weeks earlier.
    [Show full text]
  • Simula Mother Tongue for a Generation of Nordic Programmers
    Simula! Mother Tongue! for a Generation of! Nordic Programmers! Yngve Sundblad HCI, CSC, KTH! ! KTH - CSC (School of Computer Science and Communication) Yngve Sundblad – Simula OctoberYngve 2010Sundblad! Inspired by Ole-Johan Dahl, 1931-2002, and Kristen Nygaard, 1926-2002" “From the cold waters of Norway comes Object-Oriented Programming” " (first line in Bertrand Meyer#s widely used text book Object Oriented Software Construction) ! ! KTH - CSC (School of Computer Science and Communication) Yngve Sundblad – Simula OctoberYngve 2010Sundblad! Simula concepts 1967" •# Class of similar Objects (in Simula declaration of CLASS with data and actions)! •# Objects created as Instances of a Class (in Simula NEW object of class)! •# Data attributes of a class (in Simula type declared as parameters or internal)! •# Method attributes are patterns of action (PROCEDURE)! •# Message passing, calls of methods (in Simula dot-notation)! •# Subclasses that inherit from superclasses! •# Polymorphism with several subclasses to a superclass! •# Co-routines (in Simula Detach – Resume)! •# Encapsulation of data supporting abstractions! ! KTH - CSC (School of Computer Science and Communication) Yngve Sundblad – Simula OctoberYngve 2010Sundblad! Simula example BEGIN! REF(taxi) t;" CLASS taxi(n); INTEGER n;! BEGIN ! INTEGER pax;" PROCEDURE book;" IF pax<n THEN pax:=pax+1;! pax:=n;" END of taxi;! t:-NEW taxi(5);" t.book; t.book;" print(t.pax)" END! Output: 7 ! ! KTH - CSC (School of Computer Science and Communication) Yngve Sundblad – Simula OctoberYngve 2010Sundblad!
    [Show full text]
  • Submission Data for 2020-2021 CORE Conference Ranking Process International Symposium on Formal Methods (Was Formal Methods Europe FME)
    Submission Data for 2020-2021 CORE conference Ranking process International Symposium on Formal Methods (was Formal Methods Europe FME) Ana Cavalcanti, Stefania Gnesi, Lars-Henrik Eriksson, Nico Plat, Einar Broch Johnsen, Maurice ter Beek Conference Details Conference Title: International Symposium on Formal Methods (was Formal Methods Europe FME) Acronym : FM Rank: A Data and Metrics Google Scholar Metrics sub-category url: https://scholar.google.com.au/citations?view_op=top_venues&hl=en&vq=eng_theoreticalcomputerscienceposition in sub-category: 20+Image of top 20: ACM Metrics Not Sponsored by ACM Aminer Rank 1 Aminer Rank: 28Name in Aminer: World Congress on Formal MethodsAcronym or Shorthand: FMh-5 Index: 17CCF: BTHU: âĂŞ Top Aminer Cites: http://portal.core.edu.au/core/media/conf_submissions_citations/extra_info1804_aminer_top_cite.png Other Rankings Not aware of any other Rankings Conferences in area: 1. Formal Methods Symposium (FM) 2. Software Engineering and Formal Methods (SEFM), Integrated Formal Methods (IFM) 3. Fundamental Approaches to Software Engineering (FASE), NASA Formal Methods (NFM), Runtime Verification (RV) 4. Formal Aspects of Component Software (FACS), Automated Technology for Verification and Analysis (ATVA) 5. International Conference on Formal Engineering Methods (ICFEM), FormaliSE, Formal Methods in Computer-Aided Design (FMCAD), Formal Methods for Industrial Critical Systems (FMICS) 6. Brazilian Symposium on Formal Methods (SBMF), Theoretical Aspects of Software Engineering (TASE) 7. International Symposium On Leveraging Applications of Formal Methods, Verification and Validation (ISoLA) Top People Publishing Here name: Frank de Boer justification: h-index: 42 ( https://www.cwi.nl/people/frank-de-boer) Frank S. de Boer is senior researcher at the CWI, where he leads the research group on Formal Methods, and Professor of Software Correctness at Leiden University, The Netherlands.
    [Show full text]
  • Design and Implementation of an Optionally-Typed Functional Programming Language
    Design and Implementation of an Optionally-Typed Functional Programming Language Shaobai Li Electrical Engineering and Computer Sciences University of California at Berkeley Technical Report No. UCB/EECS-2017-215 http://www2.eecs.berkeley.edu/Pubs/TechRpts/2017/EECS-2017-215.html December 14, 2017 Copyright © 2017, by the author(s). All rights reserved. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission. Design and Implementation of an Optionally-Typed Functional Programming Language by Patrick S. Li A dissertation submitted in partial satisfaction of the requirements for the degree of Doctor of Philosophy in Engineering { Electrical Engineering and Computer Sciences in the Graduate Division of the University of California, Berkeley Committee in charge: Professor Koushik Sen, Chair Adjunct Professor Jonathan Bachrach Professor George Necula Professor Sara McMains Fall 2017 Design and Implementation of an Optionally-Typed Functional Programming Language Copyright 2017 by Patrick S. Li 1 Abstract Design and Implementation of an Optionally-Typed Functional Programming Language by Patrick S. Li Doctor of Philosophy in Engineering { Electrical Engineering and Computer Sciences University of California, Berkeley Professor Koushik Sen, Chair This thesis describes the motivation, design, and implementation of L.B. Stanza, an optionally- typed functional programming language aimed at helping programmers tackle the complexity of architecting large programs and increasing their productivity across the entire software development life cycle.
    [Show full text]
  • The Standard Model for Programming Languages: the Birth of A
    The Standard Model for Programming Languages: The Birth of a Mathematical Theory of Computation Simone Martini Department of Computer Science and Engineering, University of Bologna, Italy INRIA, Sophia-Antipolis, Valbonne, France http://www.cs.unibo.it/~martini [email protected] Abstract Despite the insight of some of the pioneers (Turing, von Neumann, Curry, Böhm), programming the early computers was a matter of fiddling with small architecture-dependent details. Only in the sixties some form of “mathematical program development” will be in the agenda of some of the most influential players of that time. A “Mathematical Theory of Computation” is the name chosen by John McCarthy for his approach, which uses a class of recursively computable functions as an (extensional) model of a class of programs. It is the beginning of that grand endeavour to present programming as a mathematical activity, and reasoning on programs as a form of mathematical logic. An important part of this process is the standard model of programming languages – the informal assumption that the meaning of programs should be understood on an abstract machine with unbounded resources, and with true arithmetic. We present some crucial moments of this story, concluding with the emergence, in the seventies, of the need of more “intensional” semantics, like the sequential algorithms on concrete data structures. The paper is a small step of a larger project – reflecting and tracing the interaction between mathematical logic and programming (languages), identifying some
    [Show full text]
  • A Model of Inheritance for Declarative Visual Programming Languages
    An Abstract Of The Dissertation Of Rebecca Djang for the degree of Doctor of Philosophy in Computer Science presented on December 17, 1998. Title: Similarity Inheritance: A Model of Inheritance for Declarative Visual Programming Languages. Abstract approved: Margaret M. Burnett Declarative visual programming languages (VPLs), including spreadsheets, make up a large portion of both research and commercial VPLs. Spreadsheets in particular enjoy a wide audience, including end users. Unfortunately, spreadsheets and most other declarative VPLs still suffer from some of the problems that have been solved in other languages, such as ad-hoc (cut-and-paste) reuse of code which has been remedied in object-oriented languages, for example, through the code-reuse mechanism of inheritance. We believe spreadsheets and other declarative VPLs can benefit from the addition of an inheritance-like mechanism for fine-grained code reuse. This dissertation first examines the opportunities for supporting reuse inherent in declarative VPLs, and then introduces similarity inheritance and describes a prototype of this model in the research spreadsheet language Forms/3. Similarity inheritance is very flexible, allowing multiple granularities of code sharing and even mutual inheritance; it includes explicit representations of inherited code and all sharing relationships, and it subsumes the current spreadsheet mechanisms for formula propagation, providing a gradual migration from simple formula reuse to more sophisticated uses of inheritance among objects. Since the inheritance model separates inheritance from types, we investigate what notion of types is appropriate to support reuse of functions on different types (operation polymorphism). Because it is important to us that immediate feedback, which is characteristic of many VPLs, be preserved, including feedback with respect to type errors, we introduce a model of types suitable for static type inference in the presence of operation polymorphism with similarity inheritance.
    [Show full text]
  • Reading List
    EECS 101 Introduction to Computer Science Dinda, Spring, 2009 An Introduction to Computer Science For Everyone Reading List Note: You do not need to read or buy all of these. The syllabus and/or class web page describes the required readings and what books to buy. For readings that are not in the required books, I will either provide pointers to web documents or hand out copies in class. Books David Harel, Computers Ltd: What They Really Can’t Do, Oxford University Press, 2003. Fred Brooks, The Mythical Man-month: Essays on Software Engineering, 20th Anniversary Edition, Addison-Wesley, 1995. Joel Spolsky, Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity, APress, 2004. Most content is available for free from Spolsky’s Blog (see http://www.joelonsoftware.com) Paul Graham, Hackers and Painters, O’Reilly, 2004. See also Graham’s site: http://www.paulgraham.com/ Martin Davis, The Universal Computer: The Road from Leibniz to Turing, W.W. Norton and Company, 2000. Ted Nelson, Computer Lib/Dream Machines, 1974. This book is now very rare and very expensive, which is sad given how visionary it was. Simon Singh, The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography, Anchor, 2000. Douglas Hofstadter, Goedel, Escher, Bach: The Eternal Golden Braid, 20th Anniversary Edition, Basic Books, 1999. Stuart Russell and Peter Norvig, Artificial Intelligence: A Modern Approach, 2nd Edition, Prentice Hall, 2003.
    [Show full text]
  • Compsci 6 Programming Design and Analysis
    CompSci 6 Programming Design and Analysis Robert C. Duvall http://www.cs.duke.edu/courses/cps006/fall04 http://www.cs.duke.edu/~rcd CompSci 6 : Spring 2005 1.1 What is Computer Science? Computer science is no more about computers than astronomy is about telescopes. Edsger Dijkstra Computer science is not as old as physics; it lags by a couple of hundred years. However, this does not mean that there is significantly less on the computer scientist's plate than on the physicist's: younger it may be, but it has had a far more intense upbringing! Richard Feynman http://www.wordiq.com CompSci 6 : Spring 2005 1.2 Scientists and Engineers Scientists build to learn, engineers learn to build – Fred Brooks CompSci 6 : Spring 2005 1.3 Computer Science and Programming Computer Science is more than programming The discipline is called informatics in many countries Elements of both science and engineering Elements of mathematics, physics, cognitive science, music, art, and many other fields Computer Science is a young discipline Fiftieth anniversary in 1997, but closer to forty years of research and development First graduate program at CMU (then Carnegie Tech) in 1965 To some programming is an art, to others a science, to others an engineering discipline CompSci 6 : Spring 2005 1.4 What is Computer Science? What is it that distinguishes it from the separate subjects with which it is related? What is the linking thread which gathers these disparate branches into a single discipline? My answer to these questions is simple --- it is the art of programming a computer.
    [Show full text]
  • STEPS Toward Expressive Programming Systems, 2010 Progress Report Submitted to the National Science Foundation (NSF) October 2010
    STEPS Toward Expressive Programming Systems, 2010 Progress Report Submitted to the National Science Foundation (NSF) October 2010 Viewpoints Research Institute, 1209 Grand Central Avenue, Glendale, CA 91201 t: (818) 332-3001 f: (818) 244-9761 VPRI Technical Report TR-2010-004 NSF Award: 0639876 Year 4 Annual Report: October 2010 STEPS Toward Expressive Programming Systems Viewpoints Research Institute, Glendale CA Important Note For Viewing The PDF Of This Report We have noticed that Adobe Reader and Acrobat do not do the best rendering of scaled pictures. Try different magnifications (e.g. 118%) to find the best scale. Apple Preview does a better job. Table Of Contents STEPS For The General Public 2 STEPS Project Introduction 3 STEPS In 2010 5 The “Frank” Personal Computing System 5 The Parts Of Frank 7 1. DBjr 7 a. User Interface Approach 9 b. Some of the Document Styles We’ve Made 11 2. LWorld 17 3. Gezira/Nile 18 4. NotSqueak 20 5. Networking 20 6. OMeta 22 7. Nothing 22 2010 STEPS Experiments And Papers 23 Training and Development 26 Outreach Activities 26 References 27 Appendix 1: Nothing Grammar in OMeta 28 Appendix 2: A Copying Garbage Collector in Nothing 30 VPRI Technical Report TR-2010-004 A new requirement for NSF reports is to include a few jargon‑free paragraphs to help the general public un‑ derstand the nature of the research. This seems like a very good idea. Here is our first attempt. STEPS For The General Public If computing is important—for daily life, learning, business, national defense, jobs, and more—then qualitatively advancing computing is extremely important.
    [Show full text]
  • Principles of Computer Science I
    Computer Science and Programming Principles of Computer Science is more than programming – The discipline is called informatics in many countries Computer Science I – Elements of both science and engineering • Scientists build to learn, engineers learn to build – Fred Brooks – Elements of mathematics, physics, cognitive science, music, art, and many other fields Computer Science is a young discipline – Fiftieth anniversary in 1997, but closer to forty years of Prof. Nadeem Abdul Hamid research and development CSC 120A - Fall 2004 – First graduate program at CMU (then Carnegie Tech) in Lecture Unit 1 1965 To some programming is an art, to others a science CSC 120A - Berry College - Fall 2004 2 What is Computer Science? CSC 120 - Course Mechanics Syllabus on Viking Web (Handouts section) What is it that distinguishes it from the Class Meetings separate subjects with which it is related? – Lectures: Mon/Wed/Fri, 10–10:50AM, SCI 107 What is the linking thread which gathers these – Labs: Thu, 2:45–4:45 PM, SCI 228 disparate branches into a single discipline? Contact My answer to these questions is simple --- it is – Office phone: (706) 368-5632 – Home phone: (706) 234-7211 the art of programming a computer. It is the art – Email: [email protected] of designing efficient and elegant methods of Office Hours: SCI 354B getting a computer to solve problems, – Mon 11-12:30, 2:30-4 theoretical or practical, small or large, simple – Tue 9-11, 2:30-4 or complex. – Wed 11-12:30 – Thu 9-11 C.A.R. (Tony) Hoare – (or by appt) CSC 120A - Berry College - Fall 2004 3 CSC 120A - Berry College - Fall 2004 4 CSC 120 – Keys to Success CSC 120 – Materials & Resources Start early; work steadily; don’t fall behind.
    [Show full text]
  • Insight, Inspiration and Collaboration
    Chapter 1 Insight, inspiration and collaboration C. B. Jones, A. W. Roscoe Abstract Tony Hoare's many contributions to computing science are marked by insight that was grounded in practical programming. Many of his papers have had a profound impact on the evolution of our field; they have moreover provided a source of inspiration to several generations of researchers. We examine the development of his work through a review of the development of some of his most influential pieces of work such as Hoare logic, CSP and Unifying Theories. 1.1 Introduction To many who know Tony Hoare only through his publications, they must often look like polished gems that come from a mind that rarely makes false steps, nor even perhaps has to work at their creation. As so often, this impres- sion is a further compliment to someone who actually adds to very hard work and many discarded attempts the final polish that makes complex ideas rel- atively easy for the reader to comprehend. As indicated on page xi of [HJ89], his ideas typically go through many revisions. The two authors of the current paper each had the honour of Tony Hoare supervising their doctoral studies in Oxford. They know at first hand his kind and generous style and will count it as an achievement if this paper can convey something of the working style of someone big enough to eschew competition and point scoring. Indeed it will be apparent from the following sections how often, having started some new way of thinking or exciting ideas, he happily leaves their exploration and development to others.
    [Show full text]