Object-oriented programming: challenges for the next fifty years. Prof. Andrew P. Black Portland State University, Portland, Oregon, USA.

Size: px
Start display at page:

Download "Object-oriented programming: challenges for the next fifty years. Prof. Andrew P. Black Portland State University, Portland, Oregon, USA."

Transcription

1 Object-oriented programming: challenges for the next fifty years Prof. Andrew P. Black Portland State University, Portland, Oregon, USA.

2 2 Just suppose

3 Just suppose You have been drafted 2

4 Just suppose You have been drafted Your assignment: 2

5 Just suppose You have been drafted Your assignment: design your country s first nuclear reactor 2

6 Just suppose You have been drafted Your assignment: design your country s first nuclear reactor What would you do? 2

7 Just suppose You have been drafted Your assignment: design your country s first nuclear reactor What would you do? What did Kristen Nygaard do? 2

8 A Little History 1948: Nygaard conscripted into the Norwegian Defense Research Establishment : Resonance absorption calculations related to the construction of Norway s first nuclear reactor. Introduced Monte Carlo simulation methods : Head of the computing office 1960: Moved to the Norwegian Computing Centre. Many of the civilian tasks turned out to present the same kind of methodological problems: the necessity of using simulation, the need of concepts and a language for system description, lack of tools for generating simulation programs. [Nygaar1981] 1961: Started designing a simulation language 3 [Nygaar1981] K. Nygaard and O.-J. Dahl. The development of the SIMULA languages. In R. L. Wexelblat, editor, History of programming languages I, chapter IX, pages ACM, New York, NY, USA, 1981.

9 Nygaard s Famous Letter: 5 th January 1962 The status of the Simulation Language (Monte Carlo Compiler) is that I have rather clear ideas on how to describe queueing systems, and have developed concepts which I feel allow a reasonably easy description of large classes of situations. I believe that these results have some interest even isolated from the compiler, since the presently used ways of describing such systems are not very satisfactory. The work on the compiler could not start before the language was fairly well developed, but this stage seems now to have been reached. The expert programmer who is interested in this part of the job will meet me tomorrow. He has been rather optimistic during our previous meetings. [Nygaar1981] 4

10 Ole-Johan Dahl The Expert Programmer 5

11 Ole-Johan Dahl Norway s foremost computer scientist With Kristen Nygaard, produced initial ideas for Object-oriented programming 6

12 Ole-Johan Dahl Honours: Royal Norwegian Order of St. Olav (2000) ACM Turing Award (2001) IEEE von Neumann Medal (2002) 7

13 ACM Turing Award Citation to Ole-Johan Dahl and Kristen Nygaard of Norway for their role in the invention of object-oriented programming, the most widely used programming model today. the core concepts embodied in their objectoriented methods were designed for both system description and programming 8

14 Today s Talk: What are those core concepts? How they have evolved over the last 50 years. How they might adapt to the future. 9

15 M.I.T.'s Centennial Celebration ~J~UN~E~1-96-1: President Stl'aUon's Address at the Convocation, Page 33 I 10

16 Celebration the 11 Convocation, Page 33 I

17 history is that no lesson is learned from history-but a look at the 60 elapsed years of this century shows three profound discoveries: special and general relativity theories and quantum mechanics. But it is unwarranted pessimism to say now that there is no single, final door which opens to light. Only if the fundamental laws of physics change with absolute time-and he suggested that this was also a pos- Feynman s speech: what the next few strides along that road might be. "The. rapid widening of knowledge will continue," Dr. Yang predicted. In nuclear. physics, he expects (Concluded on page 66) Richard Feynman, '39, speaking with (from left) Sir John Cockcroft, Chen Ning Yang, Francis Low, and R. E. Peierls THE TECHNOLOGY REVIEW [Feynman1962] Transcript of Speech from the Feynman Archives at CalTech

18 Feynman s speech: I do not think that you can read history without wondering what is the future of your own field, in a wider sense. I do not think that you can predict the future of physics alone [without] the context of the political and social world in which it lies. Richard Feynman, '39, speaking with (from left) Sir John Cockcroft, Chen Ning Yang, Francis Low, and R. E. Peierls. 12 [Feynman1962] Transcript of Speech from the Feynman Archives at CalTech

19 Feynman s speech: I do not think that you can read history without wondering what is the future of your own field, in a wider sense. I do not think that you can predict the future of physics alone [without] the context of the political and social world in which it lies. The other speakers want to be safe in their predictions, so they predict for 10, perhaps 25 years ahead. They are not so safe because you will catch up with them and see that they were wrong. So, I m going to be really safe by Richard Feynman, '39, speaking with (from left) Sir John Cockcroft, Chen Ning Yang, Francis Low, and R. E. Peierls. predicting 1000 years ahead. [Feynman1962] 12 [Feynman1962] Transcript of Speech from the Feynman Archives at CalTech

20 13 Political and Social Context

21 Political and Social Context 1. Simula was designed as process description language as well as a programming language. 13

22 Political and Social Context 1. Simula was designed as process description language as well as a programming language. When SIMULA I was put to practical work it turned out that to a large extent it was used as a system description language. A common attitude among its simulation users seemed to be: sometimes actual simulation runs on the computer provided useful information. The writing of the SIMULA program was almost always useful, since it resulted in a better understanding of the system. [Nygaar1981] 13

23 Political and Social Context 14 [Ungar2011] David Ungar, Personal Communication

24 Political and Social Context 2. Nygaard had been using simulations to design Nuclear reactors. 14 [Ungar2011] David Ungar, Personal Communication

25 Political and Social Context 2. Nygaard had been using simulations to design Nuclear reactors. He did not want to be responsible for the first nuclear accident on the continent of Europe. [Ungar2011] 14 [Ungar2011] David Ungar, Personal Communication

26 Core Ideas of SIMULA According to Nygaard: 1. Modelling The actions and interactions of the objects created by the program model the actions and interactions of the real-world objects that they are designed to simulate. 2. Security The behavior of a program can be understood and explained entirely in terms of the semantics of the programming language in which it is written. 15

27 Core Ideas of SIMULA According to Dahl: all came from the Algol 60 block [Dahl1981] 1. Record structures (block with variable declarations but no statements) 2. Procedural data abstraction (block with variable and procedure declarations) 3. Processes (detached blocks) 4. Prefixing (inheritance) (prefix blocks) 5. Modules (nested blocks) 16 [Dahl1981] O.-J. Dahl. Transcript of discussantʼs remarks. In R. L. Wexelblat, editor, History of programming languages I, chapter IX, pages ACM, New York, NY, USA, 1981.

28 Core Ideas of SIMULA According to Dahl: all came from the Algol 60 block [Dahl1981] 1. Record structures (block with variable declarations but no statements) 2. Procedural data abstraction (block with variable and procedure declarations) 3. Processes (detached blocks) 4. Prefixing (inheritance) (prefix blocks) 5. Modules (nested blocks) 17

29 The SIMULA class construct All these ideas were realized as special cases of a single general construct: the class. But object-oriented programming is not classoriented programming! Dahl wrote: I know that SIMULA has been criticized for perhaps having put too many things into that single basket of class. Maybe that is correct; I m not sure myself. But it was certainly great fun during the development of the language to see how the block concept could be remodeled in all these ways [Dahl1981] 18

30 The Origin of the Core Ideas [Nygaar1981a] 19 [Nygaar1981a] K. Nygaard. Transcript of presentation. In R. L. Wexelblat, editor, History of Programming Languages I, chapter IX, pages ACM, New York, NY, USA, 1981.

31 The Origin of the Core Ideas Dahl was inspired by visualizing the runtime representation of an Algol 60 program. [Nygaar1981a] 19 [Nygaar1981a] K. Nygaard. Transcript of presentation. In R. L. Wexelblat, editor, History of Programming Languages I, chapter IX, pages ACM, New York, NY, USA, 1981.

32 SIMULA 67, two main and interrelated features were prefixing and virtual proc The prefixing with block concatenation made it possible for us to use Tony Hoare of reference qualification, and still keep the flexibility we wanted. It also provided t sibility of building up hierarchies of concepts [Frame 8]. As you know, using prefi Class A, an object of Class B contains an A, and its prefix and main parts are gl gether as one integrated block instance. The Origin of the Core Ideas Dahl was inspired by visualizing the runtime representation of an Algol 60 program. Program text BEGIN REAL X; PROCEDURE P;... statement 1 ; Program execution X REAL 2.12 block instance P SL statement 2; BEGIN INTEGER Y! DL L- END; statement 3; P; statement 4 Y INTEGER 6 1 / block instance END; statement 5! P DL J block instance DL... : dynamic link SL ~ : static link Frame 5 [Nygaar1981a] 484 P 19 [Nygaar1981a] K. Nygaard. Transcript of presentation. In R. L. Wexelblat, editor, History of Programming Languages I, chapter IX, pages ACM, New York, NY, USA, 1981.

33 SIMULA 67, two main and interrelated features were prefixing and virtual proc The prefixing with block concatenation made it possible for us to use Tony Hoare of reference qualification, and still keep the flexibility we wanted. It also provided t sibility of building up hierarchies of concepts [Frame 8]. As you know, using prefi Class A, an object of Class B contains an A, and its prefix and main parts are gl gether as one integrated block instance. The Origin of the Core Ideas Dahl was inspired by visualizing the runtime representation of an Algol 60 program. Program text BEGIN REAL X; PROCEDURE P;... statement 1 ; Program execution X REAL 2.12 block instance P SL Objects were already in existence inside every executing Algol program they just needed to be freed from the stack discipline statement 2; BEGIN INTEGER Y statement 3; P; statement 4 END; statement 5 END;! DL L- Y INTEGER 6 1 / block instance! P DL block instance J DL... : dynamic link SL ~ : static link Frame 5 [Nygaar1981a] 484 P 19 [Nygaar1981a] K. Nygaard. Transcript of presentation. In R. L. Wexelblat, editor, History of Programming Languages I, chapter IX, pages ACM, New York, NY, USA, 1981.

34 Algol 60 s Stack discipline 20 [Dahl1972] O.-J. Dahl and C. Hoare. Hierarchical program structures. In Structured Programming, pages Academic Press, 1972.

35 Algol 60 s Stack discipline In ALGOL 60, the rules of the language have been carefully designed to ensure that the lifetimes of block instances are nested, in the sense that those instances that are latest activated are the first to go out of existence. It is this feature that permits an ALGOL 60 implementation to take advantage of a stack as a method of dynamic storage allocation and relinquishment. But it has the disadvantage that a program which creates a new block instance can never interact with it as an object which exists and has attributes, since it has disappeared by the time the calling program regains control. Thus the calling program can observe only the results of the actions of the procedures it calls. Consequently, the operational aspects of a block are overemphasised; and algorithms (for example, matrix multiplication) are the only concepts that can be modelled. [Dahl1972] 20 [Dahl1972] O.-J. Dahl and C. Hoare. Hierarchical program structures. In Structured Programming, pages Academic Press, 1972.

36 Two simple changes: In SIMULA 67, a block instance is permitted to outlive its calling statement, and to remain in existence for as long as the program needs to refer to it. [Dahl1972] A way of referring to it : object references as data 21

37 Simula Class Prefixing prefixing CLASS A;... REF (A) X; I block ] t A instance X: -NEW A A CLASS B;... REF (B) Y; book I AtB instance Y: -NEW B Frame 8 [Nygaar1981a] orks of human beings, production equipment and computi 22 stems I'm convinced that SIMULA's multistack framework

38 Modern Class Prefixing diagrams from IBM developerworks 23

39 Modern Class Prefixing Inheritance diagrams from IBM developerworks 23

40 The Importance of Inheritance Since 1989, thanks to William Cook, we have known that inheritance can be translated into fixpoints of generators of self-referential functions. [Cook1989a] So much for the theory. Are functions parameterized by functions as good as inheritance? In theory: yes. In practice: no. 24 [Cook1989a] W. Cook and J. Palsberg. A denotational semantics of inheritance and its correctness. In Conference on Object-oriented programming systems, languages and applications, pages , New Orleans, LA USA, ACM Press.

41 The Importance of Inheritance Since 1989, thanks to William Cook, we have known that inheritance can be translated into fixpoints of generators of self-referential functions. [Cook1989a] So much for the theory. Are functions parameterized by functions as good as inheritance? In theory: yes. In practice: no. 24 [Cook1989a] W. Cook and J. Palsberg. A denotational semantics of inheritance and its correctness. In Conference on Object-oriented programming systems, languages and applications, pages , New Orleans, LA USA, ACM Press.

42 25 Parameterized functions instead of Inheritance?

43 Parameterized functions instead of Inheritance? When you parameterize a function, you have to plan ahead and make parameters out of every part that could possibly change. functional programmers call this abstraction 25

44 Parameterized functions instead of Inheritance? When you parameterize a function, you have to plan ahead and make parameters out of every part that could possibly change. functional programmers call this abstraction Two problems: 1. Life is uncertain 2. Most people think better about the concrete than the abstract 25

45 The value of Inheritance When you inherit from a class or an object, you still have to plan ahead and make methods out of every part that could possibly change. o-o programmers call this writing short methods Two benefits: 1. You don t have to get it right 2. The short methods are concretions, not abstractions 26

46 Inheritance Example Rectangle extends Object def bounds my bounding box def inset space around me Rectangle» drawon(acanvas) self drawframeon(acanvas) self fillregionof(acanvas) Rectangle» drawframeon(acanvas) acanvas strokerectangle(bounds+inset) Rectangle» fillregionof(acanvas) acanvas fillrectangle(bounds) 27

47 Inheritance Example Circle extends Rectangle def radius my radius Circle» fillregionof(acanvas) acanvas fillcirclewithcenterandradius (bounds center, radius) 28

48 People Learn from Examples Inheritance provides a concrete example,and then generalizes from it. For example: 1. Solve the problem for n = 4 2. Then make the changes necessary for 4 to approach infinity 29

49 30 Object-oriented Frameworks

50 Object-oriented Frameworks In my view, one of the most significant contributions of SIMULA 67: 30

51 Object-oriented Frameworks In my view, one of the most significant contributions of SIMULA 67: Allowing SIMULA to be expressed as a framework within SIMULA 67 30

52 Object-oriented Frameworks In my view, one of the most significant contributions of SIMULA 67: Allowing SIMULA to be expressed as a framework within SIMULA 67 SIMULA begin end 30

53 Object-oriented Frameworks In my view, one of the most significant contributions of SIMULA 67: Allowing SIMULA to be expressed as a framework within SIMULA 67 SIMULA begin end SIMULATION begin end 30

54 Object-oriented Frameworks In my view, one of the most significant contributions of SIMULA 67: Allowing SIMULA to be expressed as a framework within SIMULA 67 SIMULA begin end SIMULATION begin end class SIMSET, and SIMSET class SIMULATION 30

55 What is an O-O Framework? Generalization of a subroutine library: client calls subroutines in a library, which always return to the caller in a Framework: client method calls methods in the framework framework methods call methods in the client e.g., a simulation framework might tell objects representing reactor control rods or industrial saws to perform perform methods might ask the framework about environmental conditions 31

56 Smalltalk Smalltalk-72 was clearly inspired by Simula It took: Classes, Objects, Inheritance, Object References It refined and explored: Objects as little computers: a recursion on the notion of computer itself [Kay1993] Objects combining data and the operations on that data It dropped: Objects as processes, classes as packages 32 [Kay1993] A. C. Kay. The early history of Smalltalk. In The second ACM SIGPLAN conference on History of programming languages, HOPL-II, chapter XI, pages ACM, New York, NY, USA, 1993.

57 From Snyder: The Essence of Objects [Snyder1991] Warning: Unlike Simula and Smalltalk, this is a descriptive work, not a prescriptive one 33 [Synder1991] A. Snyder. The essence of objects: Common concepts and terminology. Technical Report HPL-91-50, June 1991.

58 This section defines the essential concepts of an object system. An object system con- From Snyder: The Essence of Objects [Snyder1991] The essential concepts An object embodies an abstraction characterized by services. Clients request services from objects. Clients Issue requests. Objects are encapsulated. Requests Identify operations. Requests can Identify objects. New objects can be created. Operations can be generic. Objects can be classified In terms of their services (interface hierarchy). Objects can share Implementations. Objects can share a common Implementation (multiple Instances). Objects can share partial Implementations (implementation Inheritance or delegation) The Essential Concepts

59 US & Scandinavian Objects Feature Simula 67 Smalltalk 80 Snyder (1991) Abstraction "Modelling": attributes exposed attributes encapsulated Objects characterized by offered services Active Objects Yes No "Associated Concept" Dynamic Objects Yes Yes Yes Classes Yes Yes "Shared implementations" Subclassing Yes Yes "shared partial implementations" Overriding Classes as packages under control of superclass under control of subclass Yes No No optional; delegation permitted 35

60 US & Scandinavian Objects Feature Simula 67 Smalltalk 80 Snyder (1991) Abstraction "Modelling": attributes exposed attributes encapsulated Objects characterized by offered services Active Objects Yes No "Associated Concept" Dynamic Objects Yes Yes Yes Classes Yes Yes "Shared implementations" Subclassing Yes Yes "shared partial implementations" Overriding Classes as packages under control of superclass under control of subclass Yes No No optional; delegation permitted 35

61 US & Scandinavian Objects Feature Simula 67 Smalltalk 80 Snyder (1991) Abstraction "Modelling": attributes exposed attributes encapsulated Objects characterized by offered services Active Objects Yes No "Associated Concept" Dynamic Objects Yes Yes Yes Classes Yes Yes "Shared implementations" Subclassing Yes Yes "shared partial implementations" Overriding Classes as packages under control of superclass under control of subclass Yes No No optional; delegation permitted 35

62 US & Scandinavian Objects Feature Simula 67 Smalltalk 80 Snyder (1991) Abstraction "Modelling": attributes exposed attributes encapsulated Objects characterized by offered services Active Objects Yes No "Associated Concept" Dynamic Objects Yes Yes Yes Classes Yes Yes "Shared implementations" Subclassing Yes Yes "shared partial implementations" Overriding Classes as packages under control of superclass under control of subclass Yes No No optional; delegation permitted 35

63 US & Scandinavian Objects Feature Simula 67 Smalltalk 80 Snyder (1991) Abstraction "Modelling": attributes exposed attributes encapsulated Objects characterized by offered services Active Objects Yes No "Associated Concept" Dynamic Objects Yes Yes Yes Classes Yes Yes "Shared implementations" Subclassing Yes Yes "shared partial implementations" Overriding Classes as packages under control of superclass under control of subclass Yes No No optional; delegation permitted 35

64 US & Scandinavian Objects Feature Simula 67 Smalltalk 80 Snyder (1991) Abstraction "Modelling": attributes exposed attributes encapsulated Objects characterized by offered services Active Objects Yes No "Associated Concept" Dynamic Objects Yes Yes Yes Classes Yes Yes "Shared implementations" Subclassing Yes Yes "shared partial implementations" Overriding Classes as packages under control of superclass under control of subclass Yes No No optional; delegation permitted 35

65 US & Scandinavian Objects Feature Simula 67 Smalltalk 80 Snyder (1991) Abstraction "Modelling": attributes exposed attributes encapsulated Objects characterized by offered services Active Objects Yes No "Associated Concept" Dynamic Objects Yes Yes Yes Classes Yes Yes "Shared implementations" Subclassing Yes Yes "shared partial implementations" Overriding Classes as packages under control of superclass under control of subclass Yes No No optional; delegation permitted 35

66 US & Scandinavian Objects Feature Simula 67 Smalltalk 80 Snyder (1991) Abstraction "Modelling": attributes exposed attributes encapsulated Objects characterized by offered services Active Objects Yes No "Associated Concept" Dynamic Objects Yes Yes Yes Classes Yes Yes "Shared implementations" Subclassing Yes Yes "shared partial implementations" Overriding Classes as packages under control of superclass under control of subclass Yes No No optional; delegation permitted 35

67 US & Scandinavian Objects Feature Simula 67 Smalltalk 80 Snyder (1991) Abstraction "Modelling": attributes exposed attributes encapsulated Objects characterized by offered services Active Objects Yes No "Associated Concept" Dynamic Objects Yes Yes Yes Classes Yes Yes "Shared implementations" Subclassing Yes Yes "shared partial implementations" Overriding Classes as packages under control of superclass under control of subclass Yes No No optional; delegation permitted 35

68 36 Abstraction

69 Abstraction: key idea of O-O Simula doesn't mention abstraction specifically. It speaks of modelling a model: an abstraction with a mission The idea of separating the internal (concrete) and external (abstract) views of data was yet to mature. Hoare 1972 Proof of Correctness of Data Representations Parnas 1972 Decomposing Systems into Modules CLU rep, up, down and cvt 37

70 Type Abstraction Procedural Abstraction Data Abstraction Type Abstraction Procedural Abstraction 38 [Reynol1975] J. C. Reynolds. User-defined types and procedural data structures as complementary approaches to data abstraction. In Conference on New Directions in Algorithmic Languages, Munich, Germany, August IFIP Working Group 2.1.

71 Type Abstraction Procedural Abstraction Data Abstraction Type Abstraction Procedural Abstraction Don t need types multiple implementations can co-exist Autognostic 38 [Reynol1975] J. C. Reynolds. User-defined types and procedural data structures as complementary approaches to data abstraction. In Conference on New Directions in Algorithmic Languages, Munich, Germany, August IFIP Working Group 2.1.

72 Type Abstraction Procedural Abstraction Data Abstraction Type Abstraction Procedural Abstraction Types are essential exactly one implementation Pasignostic Don t need types multiple implementations can co-exist Autognostic 38 [Reynol1975] J. C. Reynolds. User-defined types and procedural data structures as complementary approaches to data abstraction. In Conference on New Directions in Algorithmic Languages, Munich, Germany, August IFIP Working Group 2.1.

73 Type Abstraction Procedural Abstraction Data Abstraction Type Abstraction Procedural Abstraction Types are essential exactly one implementation Objects Don t need types multiple implementations can co-exist Pasignostic Autognostic 38 [Reynol1975] J. C. Reynolds. User-defined types and procedural data structures as complementary approaches to data abstraction. In Conference on New Directions in Algorithmic Languages, Munich, Germany, August IFIP Working Group 2.1.

74 Type Abstraction Procedural Abstraction Data Abstraction Type Abstraction Procedural Abstraction Types are essential exactly one implementation Algebraic Data Types Objects Don t need types multiple implementations can co-exist Pasignostic Autognostic 38 [Reynol1975] J. C. Reynolds. User-defined types and procedural data structures as complementary approaches to data abstraction. In Conference on New Directions in Algorithmic Languages, Munich, Germany, August IFIP Working Group 2.1.

75 Type Abstraction Procedural Abstraction Data Abstraction Type Abstraction Types are essential exactly one implementation Pasignostic Algebraic Data Types Co-algebraic data types Procedural Abstraction Don t need types multiple implementations can co-exist Autognostic 38 [Reynol1975] J. C. Reynolds. User-defined types and procedural data structures as complementary approaches to data abstraction. In Conference on New Directions in Algorithmic Languages, Munich, Germany, August IFIP Working Group 2.1.

76 Type Abstraction Procedural Abstraction Data Abstraction Type Abstraction Types are essential exactly one implementation Pasignostic Algebraic Data Types duality Co-algebraic data types Procedural Abstraction Don t need types multiple implementations can co-exist Autognostic 38 [Reynol1975] J. C. Reynolds. User-defined types and procedural data structures as complementary approaches to data abstraction. In Conference on New Directions in Algorithmic Languages, Munich, Germany, August IFIP Working Group 2.1.

77 Type Abstraction Procedural Abstraction CLU provides ADTs: fundamentally different from objects! Did Liskov and the CLU team realize this? Simula s class construct can be used to generate both records (unprotected, or protected by type abstraction) and objects (protected by procedural abstraction) C++ can also be used to program data abstractions as well as objects 39

78 40 Active Objects

79 Active Objects Active objects is an idea that has become lost to the object-oriented community. Activity was an important part of Simula quasi-parallelism was a sweet-spot in 1961 Hewitt s Actor model [1973] built on this idea Emerald used it [Black1986] But activity has gone from mainstream O-O 41 [Hewitt1973] C. Hewitt, P. Bishop, and R. Steiger. A universal modular actor formalism for artificial intelligence. In IJCAI, pages , August [Black1986] A. P. Black, N. Hutchinson, E. Jul, and H. M. Levy. Object structure in the Emerald system. In OOPSLA, pages 78 86, 1986.

80 Why are Smalltalk Objects passive? I don t know Or Or Perhaps: Kay and Ingalls had a philosophical objection to combining what they saw as separate ideas Perhaps: The realities of programming on the Alto set limits as to what was possible Perhaps: They wanted real processes, not co-routines 42

81 Joe Armstrong Challenge 1 Erlang Process Challenge COP Put N processes in a ring: Send a simple message round the ring M times. Increase N until the system crashes. How long did it take to start the ring? How long did it take to send a message? When did it crash? 43 Can you create more processes in your language than the OS allows?

82 44 Process-creation Times

83 Process-creation Times Pharo on Cog 44

84 45 Message-passing times

85 Message-passing times Pharo on Cog 45

86 46 Classes & Objects

87 Does Object-O mean Class-O? Historically, most of the ideas in o-o came from the class concept But it s the dynamic objects, not the classes, that form the system model Classes are interesting only as a way of creating the dynamic system model of interacting objects They are a great tool if you want hundreds of similar objects But what if you want just one object? 47

88 Classes are Meta Classes are meta, and meta isn t always betta! if you need one or two objects, it s simpler and more direct to describe them in the program directly rather than to describe a factory (class) to make them, and then use it once or twice. This is the idea behind Self, Emerald, NewtonScript and JavaScript Classes (object factories) can in any case be defined as objects 48

89 49 Types

90 Type Abstraction Procedural Abstraction Abstraction Type Abstraction Procedural Abstraction Types are essential exactly one implementation Algebraic Data Types Objects Don t need types multiple implementations can co-exist species-knowing Autognostic 50

91 Types for Objects are Optional Algebraic data types need types to get encapsulation Objects don t: they enjoy procedural encapsulation. Object-oriented abstraction can exist without types. 51

92 Types are Optional Why would one want to add type annotations to an object-oriented program? To add redundancy Type annotations are assertions just like assert s.notempty Redundancy is a good thing : It provides more information for readers It means that more errors can be detected sooner 52

93 53 Claim: types can be harmful!

94 Claim: types can be harmful! Question: If types add redundancy, and redundancy is good, how can types be harmful? 53

95 Claim: types can be harmful! Question: If types add redundancy, and redundancy is good, how can types be harmful? Answer: Because types are too much of an invitation to mess up your language design! 53

96 Two approaches to type-checking The laissez faire, or George W. Bush interpretation: Do what you want, we won t try to stop you. If you mess up, the PDIC will bail you out. The nanny state or Harold Wilson interpretation. We will look after you. If it is even remotely possible that something may go wrong, we won t let you try. 54

97 Two approaches to type-checking The laissez faire, or George W. Bush interpretation: Do what you want, we won t try to stop you. If you mess up, the PDIC will bail you out. The nanny state or Harold Wilson interpretation. We will look after you. If it is even remotely possible that something may go wrong, we won t let you try. Program debugger and interactive checker 54

Concepts and terminology in the Simula Programming Language

Concepts and terminology in the Simula Programming Language Concepts and terminology in the Simula Programming Language An introduction for new readers of Simula literature Stein Krogdahl Department of Informatics University of Oslo, Norway April 2010 Introduction

More information

Data Abstraction and Hierarchy

Data Abstraction and Hierarchy Data Abstraction and Hierarchy * This research was supported by the NEC Professorship of Software Science and Engineering. Barbara Liskov Affiliation: MIT Laboratory for Computer Science Cambridge, MA,

More information

Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111

Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111 Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages Corky Cartwright Swarat Chaudhuri November 30, 20111 Overview I In OO languages, data values (except for designated non-oo

More information

Glossary of Object Oriented Terms

Glossary of Object Oriented Terms Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction

More information

Programming Languages

Programming Languages Programming Languages Qing Yi Course web site: www.cs.utsa.edu/~qingyi/cs3723 cs3723 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science Office:

More information

Computing Concepts with Java Essentials

Computing Concepts with Java Essentials 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Computing Concepts with Java Essentials 3rd Edition Cay Horstmann

More information

Introduction to Software Paradigms & Procedural Programming Paradigm

Introduction to Software Paradigms & Procedural Programming Paradigm Introduction & Procedural Programming Sample Courseware Introduction to Software Paradigms & Procedural Programming Paradigm This Lesson introduces main terminology to be used in the whole course. Thus,

More information

Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective

Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective Orit Hazzan's Column Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective This column is coauthored with Jeff Kramer, Department of Computing, Imperial College, London ABSTRACT

More information

02-201: Programming for Scientists

02-201: Programming for Scientists 1. Course Information 1.1 Course description 02-201: Programming for Scientists Carl Kingsford Fall 2015 Provides a practical introduction to programming for students with little or no prior programming

More information

Pluggable Type Systems. Gilad Bracha

Pluggable Type Systems. Gilad Bracha Pluggable Type Systems Gilad Bracha The Paradox of Type Systems Type systems help reliability and security by mechanically proving program properties Type systems hurt reliability and security by making

More information

The Impact of Software Engineering Research on Modern Progamming Languages

The Impact of Software Engineering Research on Modern Progamming Languages The Impact of Software Engineering Research on Modern Progamming Languages BARBARA G. RYDER Rutgers University MARY LOU SOFFA University of Virginia and MARGARET BURNETT Oregon State University Software

More information

Java Application Developer Certificate Program Competencies

Java Application Developer Certificate Program Competencies Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle

More information

Review questions for Chapter 9

Review questions for Chapter 9 Answer first, then check at the end. Review questions for Chapter 9 True/False 1. A compiler translates a high-level language program into the corresponding program in machine code. 2. An interpreter is

More information

Reusable Knowledge-based Components for Building Software. Applications: A Knowledge Modelling Approach

Reusable Knowledge-based Components for Building Software. Applications: A Knowledge Modelling Approach Reusable Knowledge-based Components for Building Software Applications: A Knowledge Modelling Approach Martin Molina, Jose L. Sierra, Jose Cuena Department of Artificial Intelligence, Technical University

More information

History OOP languages Year Language 1967 Simula-67 1983 Smalltalk

History OOP languages Year Language 1967 Simula-67 1983 Smalltalk History OOP languages Intro 1 Year Language reported dates vary for some languages... design Vs delievered 1957 Fortran High level programming language 1958 Lisp 1959 Cobol 1960 Algol Structured Programming

More information

Principles of Programming Languages Topic: Introduction Professor Louis Steinberg

Principles of Programming Languages Topic: Introduction Professor Louis Steinberg Principles of Programming Languages Topic: Introduction Professor Louis Steinberg CS 314, LS,LTM: L1: Introduction 1 Contacts Prof. Louis Steinberg lou @ cs.rutgers.edu x5-3581 401 Hill TA: to be announced

More information

Introducing Variance into the Java Programming Language DRAFT

Introducing Variance into the Java Programming Language DRAFT Introducing Variance into the Java Programming Language A Quick Tutorial DRAFT Christian Plesner Hansen Peter von der Ahé Erik Ernst Mads Torgersen Gilad Bracha June 3, 2003 1 Introduction Notice: This

More information

Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition

Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition Java 6 'th edition Concepts INTERNATIONAL STUDENT VERSION CONTENTS PREFACE vii SPECIAL FEATURES xxviii chapter i INTRODUCTION 1 1.1 What Is Programming? 2 J.2 The Anatomy of a Computer 3 1.3 Translating

More information

The Smalltalk Programming Language. Beatrice Åkerblom beatrice@dsv.su.se

The Smalltalk Programming Language. Beatrice Åkerblom beatrice@dsv.su.se The Smalltalk Programming Language Beatrice Åkerblom beatrice@dsv.su.se 'The best way to predict the future is to invent it' - Alan Kay. History of Smalltalk Influenced by Lisp and Simula Object-oriented

More information

Lecture 1: Introduction

Lecture 1: Introduction Programming Languages Lecture 1: Introduction Benjamin J. Keller Department of Computer Science, Virginia Tech Programming Languages Lecture 1 Introduction 2 Lecture Outline Preview History of Programming

More information

[Refer Slide Time: 05:10]

[Refer Slide Time: 05:10] Principles of Programming Languages Prof: S. Arun Kumar Department of Computer Science and Engineering Indian Institute of Technology Delhi Lecture no 7 Lecture Title: Syntactic Classes Welcome to lecture

More information

Compiling Object Oriented Languages. What is an Object-Oriented Programming Language? Implementation: Dynamic Binding

Compiling Object Oriented Languages. What is an Object-Oriented Programming Language? Implementation: Dynamic Binding Compiling Object Oriented Languages What is an Object-Oriented Programming Language? Last time Dynamic compilation Today Introduction to compiling object oriented languages What are the issues? Objects

More information

CS Standards Crosswalk: CSTA K-12 Computer Science Standards and Oracle Java Programming (2014)

CS Standards Crosswalk: CSTA K-12 Computer Science Standards and Oracle Java Programming (2014) CS Standards Crosswalk: CSTA K-12 Computer Science Standards and Oracle Java Programming (2014) CSTA Website Oracle Website Oracle Contact http://csta.acm.org/curriculum/sub/k12standards.html https://academy.oracle.com/oa-web-introcs-curriculum.html

More information

Extending Objects to Support Multiple Interfaces and Access Control

Extending Objects to Support Multiple Interfaces and Access Control IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 16, NO. 11, NOVEMBER IYYO 1247 Extending Objects to Support Multiple Interfaces and Access Control Brent Hailpern, Senior Member, IEEE and Harold Ossher,

More information

On the (un)suitability of Java to be the first programming language

On the (un)suitability of Java to be the first programming language On the (un)suitability of Java to be the first programming language Mirjana Ivanovic Faculty of Science, Department of Mathematics and Informatics Trg Dositeja Obradovica 4, Novi Sad mira @im.ns.ac.yu

More information

Overview. Elements of Programming Languages. Advanced constructs. Motivating inner class example

Overview. Elements of Programming Languages. Advanced constructs. Motivating inner class example Overview Elements of Programming Languages Lecture 12: Object-oriented functional programming James Cheney University of Edinburgh November 6, 2015 We ve now covered: basics of functional and imperative

More information

Language Based Virtual Machines... or why speed matters. by Lars Bak, Google Inc

Language Based Virtual Machines... or why speed matters. by Lars Bak, Google Inc Language Based Virtual Machines... or why speed matters by Lars Bak, Google Inc Agenda Motivation for virtual machines HotSpot V8 Dart What I ve learned Background 25+ years optimizing implementations

More information

Software Paradigms (Lesson 1) Introduction & Procedural Programming Paradigm

Software Paradigms (Lesson 1) Introduction & Procedural Programming Paradigm Software Paradigms (Lesson 1) Introduction & Procedural Programming Paradigm Table of Contents 1 Introduction... 2 1.1 Programming Paradigm... 2 1.2 Software Design Paradigm... 3 1.2.1 Design Patterns...

More information

Categories and Subject Descriptors. General Terms Algorithms, Design, Languages. Keywords Polymorphism, Object-Oriented Programming, Learning

Categories and Subject Descriptors. General Terms Algorithms, Design, Languages. Keywords Polymorphism, Object-Oriented Programming, Learning Variations on a Polymorphic Theme: An Etude for Computer Programming Joseph Bergin Pace University Computer Science New York, NY USA 1 (212) 346 1499 b erginf@p ace.edu ABSTRACT This paper describes a

More information

Java (12 Weeks) Introduction to Java Programming Language

Java (12 Weeks) Introduction to Java Programming Language Java (12 Weeks) Topic Lecture No. Introduction to Java Programming Language 1 An Introduction to Java o Java as a Programming Platform, The Java "White Paper" Buzzwords, Java and the Internet, A Short

More information

Functional Decomposition Top-Down Development

Functional Decomposition Top-Down Development Functional Decomposition Top-Down Development The top-down approach builds a system by stepwise refinement, starting with a definition of its abstract function. You start the process by expressing a topmost

More information

Object-Oriented Software Specification in Programming Language Design and Implementation

Object-Oriented Software Specification in Programming Language Design and Implementation Object-Oriented Software Specification in Programming Language Design and Implementation Barrett R. Bryant and Viswanathan Vaidyanathan Department of Computer and Information Sciences University of Alabama

More information

What is a programming language?

What is a programming language? Overview Introduction Motivation Why study programming languages? Some key concepts What is a programming language? Artificial language" Computers" Programs" Syntax" Semantics" What is a programming language?...there

More information

AP Computer Science A - Syllabus Overview of AP Computer Science A Computer Facilities

AP Computer Science A - Syllabus Overview of AP Computer Science A Computer Facilities AP Computer Science A - Syllabus Overview of AP Computer Science A Computer Facilities The classroom is set up like a traditional classroom on the left side of the room. This is where I will conduct my

More information

Static Typing for Object-Oriented Programming

Static Typing for Object-Oriented Programming Science of Computer Programming 23(1):19 53, 1994. Static Typing for Object-Oriented Programming Jens Palsberg palsberg@daimi.aau.dk Michael I. Schwartzbach mis@daimi.aau.dk Computer Science Department

More information

Object Oriented System Development with VB.NET

Object Oriented System Development with VB.NET Chapter 1 Object Oriented System Development with Objectives In this chapter, you will: Learn about OO development and Understand object-oriented concepts Recognize the benefits of OO development Preview

More information

Storage Allocation in Typed Languages

Storage Allocation in Typed Languages Storage Allocation in Typed Languages Butler W. Lampson Xerox Corporation Palo Alto Research Center Appeared in Proc. 5th Ann. III Conf: Implementation and Design of Algorithmic Languages, Guidel, France,

More information

The Phases of an Object-Oriented Application

The Phases of an Object-Oriented Application The Phases of an Object-Oriented Application Reprinted from the Feb 1992 issue of The Smalltalk Report Vol. 1, No. 5 By: Rebecca J. Wirfs-Brock There is never enough time to get it absolutely, perfectly

More information

Concepts of Programming Languages. Robert W. Sebesta

Concepts of Programming Languages. Robert W. Sebesta Concepts of Programming Languages Robert W. Sebesta Chapter 1 Preliminaries Reasons for studying the underlying concepts of programming languages The Study of Programming Languages Increases our ability

More information

Building highly available systems in Erlang. Joe Armstrong

Building highly available systems in Erlang. Joe Armstrong Building highly available systems in Erlang Joe Armstrong How can we get 10 nines reliability? Why Erlang? Erlang was designed to program fault-tolerant systems Overview n Types of HA systems n Architecture/Algorithms

More information

Domains and Competencies

Domains and Competencies Domains and Competencies DOMAIN I TECHNOLOGY APPLICATIONS CORE Standards Assessed: Computer Science 8 12 I VII Competency 001: The computer science teacher knows technology terminology and concepts; the

More information

Programming Languages in a Liberal Arts Education

Programming Languages in a Liberal Arts Education Programming Languages in a Liberal Arts Education Kim Bruce Computer Science Department Pomona College Claremont, CA 91711 Stephen N. Freund Computer Science Department Williams College Williamstown, MA

More information

Organization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.

Organization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio. Organization of Programming Languages CS320/520N Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.edu Names, Bindings, and Scopes A name is a symbolic identifier used

More information

#820 Computer Programming 1A

#820 Computer Programming 1A Computer Programming I Levels: 10-12 Units of Credit: 1.0 CIP Code: 11.0201 Core Code: 35-02-00-00-030 Prerequisites: Secondary Math I, Keyboarding Proficiency, Computer Literacy requirement Semester 1

More information

Chapter 1. 1.1Reasons for Studying Concepts of Programming Languages

Chapter 1. 1.1Reasons for Studying Concepts of Programming Languages Chapter 1 1.1Reasons for Studying Concepts of Programming Languages a) Increased ability to express ideas. It is widely believed that the depth at which we think is influenced by the expressive power of

More information

Object-based vs. Class-based Languages

Object-based vs. Class-based Languages Abstract Object-based vs. Class-based Languages Luca Cardelli Digital Equipment Corporation Systems Research Center PLDIÕ96 Tutorial Class-based object-oriented programming languages take object generators

More information

Course 10550A: Programming in Visual Basic with Microsoft Visual Studio 2010 OVERVIEW

Course 10550A: Programming in Visual Basic with Microsoft Visual Studio 2010 OVERVIEW Course 10550A: Programming in Visual Basic with Microsoft Visual Studio 2010 OVERVIEW About this Course This course teaches you Visual Basic language syntax, program structure, and implementation by using

More information

1 Uncertainty and Preferences

1 Uncertainty and Preferences In this chapter, we present the theory of consumer preferences on risky outcomes. The theory is then applied to study the demand for insurance. Consider the following story. John wants to mail a package

More information

Charles Dierbach. Wiley

Charles Dierbach. Wiley Charles Dierbach Wiley Contents Preface Acknowledgments About the Author XXI xxv xxvii Introduction 1 MOTIVATION 2 FUNDAMENTALS 2 1.1 What Is Computer Science? 2 1.1.1 The Essence of Computational Problem

More information

A Framework for the Semantics of Behavioral Contracts

A Framework for the Semantics of Behavioral Contracts A Framework for the Semantics of Behavioral Contracts Ashley McNeile Metamaxim Ltd, 48 Brunswick Gardens, London W8 4AN, UK ashley.mcneile@metamaxim.com Abstract. Contracts have proved a powerful concept

More information

Primary Key Associates Limited

Primary Key Associates Limited is at the core of Primary Key Associates work Our approach to analytics In this paper Andrew Lea, our Technical Director in charge of, describes some of the paradigms, models, and techniques we have developed

More information

Checking Access to Protected Members in the Java Virtual Machine

Checking Access to Protected Members in the Java Virtual Machine Checking Access to Protected Members in the Java Virtual Machine Alessandro Coglio Kestrel Institute 3260 Hillview Avenue, Palo Alto, CA 94304, USA Ph. +1-650-493-6871 Fax +1-650-424-1807 http://www.kestrel.edu/

More information

Johannes Sametinger. C. Doppler Laboratory for Software Engineering Johannes Kepler University of Linz A-4040 Linz, Austria

Johannes Sametinger. C. Doppler Laboratory for Software Engineering Johannes Kepler University of Linz A-4040 Linz, Austria OBJECT-ORIENTED DOCUMENTATION C. Doppler Laboratory for Software Engineering Johannes Kepler University of Linz A-4040 Linz, Austria Abstract Object-oriented programming improves the reusability of software

More information

THE WINDOWS AZURE PROGRAMMING MODEL

THE WINDOWS AZURE PROGRAMMING MODEL THE WINDOWS AZURE PROGRAMMING MODEL DAVID CHAPPELL OCTOBER 2010 SPONSORED BY MICROSOFT CORPORATION CONTENTS Why Create a New Programming Model?... 3 The Three Rules of the Windows Azure Programming Model...

More information

SL-110: Fundamentals of Java Revision 15 October Sun Educational Services Instructor-Led Course Description

SL-110: Fundamentals of Java Revision 15 October Sun Educational Services Instructor-Led Course Description Sun Educational Services Instructor-Led Course Description Fundamentals of Java SL-110 The Fundamentals of the Java course provides students, with little or no programming experience, with the basics of

More information

PROGRAM LOGICS FOR CERTIFIED COMPILERS

PROGRAM LOGICS FOR CERTIFIED COMPILERS PROGRAM LOGICS FOR CERTIFIED COMPILERS Separation logic is the twenty-first-century variant of Hoare logic that permits verification of pointer-manipulating programs. This book covers practical and theoretical

More information

Component visualization methods for large legacy software in C/C++

Component visualization methods for large legacy software in C/C++ Annales Mathematicae et Informaticae 44 (2015) pp. 23 33 http://ami.ektf.hu Component visualization methods for large legacy software in C/C++ Máté Cserép a, Dániel Krupp b a Eötvös Loránd University mcserep@caesar.elte.hu

More information

THE IMPACT OF INHERITANCE ON SECURITY IN OBJECT-ORIENTED DATABASE SYSTEMS

THE IMPACT OF INHERITANCE ON SECURITY IN OBJECT-ORIENTED DATABASE SYSTEMS THE IMPACT OF INHERITANCE ON SECURITY IN OBJECT-ORIENTED DATABASE SYSTEMS David L. Spooner Computer Science Department Rensselaer Polytechnic Institute Troy, New York 12180 The object-oriented programming

More information

Tutorial on Writing Modular Programs in Scala

Tutorial on Writing Modular Programs in Scala Tutorial on Writing Modular Programs in Scala Martin Odersky and Gilles Dubochet 13 September 2006 Tutorial on Writing Modular Programs in Scala Martin Odersky and Gilles Dubochet 1 of 45 Welcome to the

More information

LAYERED NETWORKS AS A TOOL FOR SOFTWARE DEVELOPMENT. Ira P. Goldstein and Daniel G. Bobrow

LAYERED NETWORKS AS A TOOL FOR SOFTWARE DEVELOPMENT. Ira P. Goldstein and Daniel G. Bobrow LAYERED NETWORKS AS A TOOL FOR SOFTWARE DEVELOPMENT Ira P. Goldstein and Daniel G. Bobrow Xerox Palo Alto Research Center Palo Alto, California 94304, U.S.A Abstract: Most software systems use simple text

More information

N o w f o r S o m e t h i n g. C o m p l e t e l y C o m p u t a t i o n a l. C. J. Date. July 17th, 2006

N o w f o r S o m e t h i n g. C o m p l e t e l y C o m p u t a t i o n a l. C. J. Date. July 17th, 2006 A n d N o w f o r S o m e t h i n g C o m p l e t e l y C o m p u t a t i o n a l by C. J. Date July 17th, 2006 Myself when young did eagerly frequent Doctor and Saint, and heard great Argument About it

More information

Object-Oriented Type Inference

Object-Oriented Type Inference Object-Oriented Type Inference Jens Palsberg and Michael I Schwartzbach palsberg@daimiaaudk and mis@daimiaaudk Computer Science Department, Aarhus University Ny Munkegade, DK-8000 Århus C, Denmark Abstract

More information

COMPUTER SCIENCE TRIPOS

COMPUTER SCIENCE TRIPOS CST.98.5.1 COMPUTER SCIENCE TRIPOS Part IB Wednesday 3 June 1998 1.30 to 4.30 Paper 5 Answer five questions. No more than two questions from any one section are to be answered. Submit the answers in five

More information

On Understanding Types, Data Abstraction, and Polymorphism

On Understanding Types, Data Abstraction, and Polymorphism On Understanding Types, Data Abstraction, and Polymorphism LUCA CARDELLI AT&T Bell Laboratories, Murray Hill, N. J. 07974 PETER WEGNER Department of Computer Science, Brown University, Providence, R. I.

More information

Some Experiences in Teaching Teamwork Programming Janusz Jablonowski

Some Experiences in Teaching Teamwork Programming Janusz Jablonowski Some Experiences in Teaching Teamwork Programming Janusz Jablonowski Abstract: The paper describes experiences gained during last six years of teaching teamwork programming at the Warsaw University. We

More information

Software Component Technologies and Space Applications

Software Component Technologies and Space Applications Software Component Technologies and Space Applications Don Batory Department of Computer Sciences The University of Texas Austin, Texas 78712 Abstract In the near future, software systems will be more

More information

Module 6: How to Write the Book

Module 6: How to Write the Book Module 6: How to Write the Book Okay, guys. Katrina Starzhynskaya here, and lesson 6, how to actually write the book: time frame, where to get your ideas from, and how to get inspired. Let s begin. Time

More information

Real Time Programming: Concepts

Real Time Programming: Concepts Real Time Programming: Concepts Radek Pelánek Plan at first we will study basic concepts related to real time programming then we will have a look at specific programming languages and study how they realize

More information

OOP? What is OOP? Why? OOP in a nutshell. Stéphane Ducasse 2.1

OOP? What is OOP? Why? OOP in a nutshell. Stéphane Ducasse 2.1 OOP? What is OOP? Why? OOP in a nutshell Stéphane Ducasse 2.1 Reality on Software Development Analyze Maintain Design Construct Test What is important? maintainability extensibility understandability Stéphane

More information

Stack Allocation. Run-Time Data Structures. Static Structures

Stack Allocation. Run-Time Data Structures. Static Structures Run-Time Data Structures Stack Allocation Static Structures For static structures, a fixed address is used throughout execution. This is the oldest and simplest memory organization. In current compilers,

More information

(Refer Slide Time: 01:52)

(Refer Slide Time: 01:52) Software Engineering Prof. N. L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture - 2 Introduction to Software Engineering Challenges, Process Models etc (Part 2) This

More information

Programming and Software Development CTAG Alignments

Programming and Software Development CTAG Alignments Programming and Software Development CTAG Alignments This document contains information about four Career-Technical Articulation Numbers (CTANs) for Programming and Software Development Career-Technical

More information

Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering

Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 2 GoF Design Patterns Creational 1 GoF Design Patterns Principles Emphasis on flexibility and reuse through decoupling of classes. The underlying

More information

MEng, BSc Applied Computer Science

MEng, BSc Applied Computer Science School of Computing FACULTY OF ENGINEERING MEng, BSc Applied Computer Science Year 1 COMP1212 Computer Processor Effective programming depends on understanding not only how to give a machine instructions

More information

Verifying Semantic of System Composition for an Aspect-Oriented Approach

Verifying Semantic of System Composition for an Aspect-Oriented Approach 2012 International Conference on System Engineering and Modeling (ICSEM 2012) IPCSIT vol. 34 (2012) (2012) IACSIT Press, Singapore Verifying Semantic of System Composition for an Aspect-Oriented Approach

More information

PRODUCING AN EDUCATIONALLY EFFECTIVE AND USABLE TOOL FOR LEARNING, THE CASE OF JELIOT FAMILY

PRODUCING AN EDUCATIONALLY EFFECTIVE AND USABLE TOOL FOR LEARNING, THE CASE OF JELIOT FAMILY PRODUCING AN EDUCATIONALLY EFFECTIVE AND USABLE TOOL FOR LEARNING, THE CASE OF JELIOT FAMILY Andrés Moreno and Niko Myller, University of Joensuu Introduction Jeliot Family is a group of program visualization

More information

Software Engineering for Spreadsheets

Software Engineering for Spreadsheets Software Engineering for Spreadsheets Martin Erwig Oregon State University Abstract Spreadsheets are widely used end-user programming tools. Since many critical decisions are made based on values computed

More information

Object Mining: A Practical Application of Data Mining for the Construction and Maintenance of Software Components

Object Mining: A Practical Application of Data Mining for the Construction and Maintenance of Software Components Object Mining: A Practical Application of Data Mining for the Construction and Maintenance of Software Components Anders Torvill Bjorvand Department of Informatics, University of Oslo. P.O. Box 1080 Blindern,

More information

ALLEN WIRFS-BROCK. Research Fellow

ALLEN WIRFS-BROCK. Research Fellow ALLEN WIRFS-BROCK Summary As a software architect and entrepreneur Allen Wirfs-Brock has made numerous contributions to the industrialization and commercialization of object-oriented technology. He is

More information

Course MS10975A Introduction to Programming. Length: 5 Days

Course MS10975A Introduction to Programming. Length: 5 Days 3 Riverchase Office Plaza Hoover, Alabama 35244 Phone: 205.989.4944 Fax: 855.317.2187 E-Mail: rwhitney@discoveritt.com Web: www.discoveritt.com Course MS10975A Introduction to Programming Length: 5 Days

More information

On Understanding Types, Data Abstraction, and Polymorphism

On Understanding Types, Data Abstraction, and Polymorphism 1 Computing Surveys, Vol 17 n. 4, pp 471-522, December 1985 On Understanding Types, Data Abstraction, and Polymorphism Luca Cardelli AT&T Bell Laboratories, Murray Hill, NJ 07974 (current address: DEC

More information

Software Architecture

Software Architecture Software Architecture Lecture 3 Call-Return Systems João Pedro Sousa George Mason University last class data flow styles batch sequential data flow pipe & filter process control Unix pipes process control

More information

Announcements FORTRAN ALGOL COBOL. Simula & Smalltalk. Programming Languages

Announcements FORTRAN ALGOL COBOL. Simula & Smalltalk. Programming Languages Announcements Programming Languages! Monday evening GBA section has been shut down " If you were assigned to this section, please find a different section " If you cannot attend a different section, please

More information

Chapter 1: Introduction

Chapter 1: Introduction Chapter 1: Introduction Database System Concepts, 5th Ed. See www.db book.com for conditions on re use Chapter 1: Introduction Purpose of Database Systems View of Data Database Languages Relational Databases

More information

Component Based Software Engineering: A Broad Based Model is Needed

Component Based Software Engineering: A Broad Based Model is Needed Component Based Software Engineering: A Broad Based Model is Needed Allen Parrish (parrish@cs.ua.edu) Brandon Dixon (dixon@cs.ua.edu) David Hale (dhale@alston.cba.ua.edu) Department of Computer Science

More information

Engineering Process Software Qualities Software Architectural Design

Engineering Process Software Qualities Software Architectural Design Engineering Process We need to understand the steps that take us from an idea to a product. What do we do? In what order do we do it? How do we know when we re finished each step? Production process Typical

More information

Managing Software Evolution through Reuse Contracts

Managing Software Evolution through Reuse Contracts VRIJE UNIVERSITEIT BRUSSEL Vrije Universiteit Brussel Faculteit Wetenschappen SCI EN T I A V INCERE T ENE BRA S Managing Software Evolution through Reuse Contracts Carine Lucas, Patrick Steyaert, Kim Mens

More information

Software Engineering Prof. N.L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture-4 Overview of Phases (Part - II)

Software Engineering Prof. N.L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture-4 Overview of Phases (Part - II) Software Engineering Prof. N.L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture-4 Overview of Phases (Part - II) We studied the problem definition phase, with which

More information

BUSINESS RULES CONCEPTS... 2 BUSINESS RULE ENGINE ARCHITECTURE... 4. By using the RETE Algorithm... 5. Benefits of RETE Algorithm...

BUSINESS RULES CONCEPTS... 2 BUSINESS RULE ENGINE ARCHITECTURE... 4. By using the RETE Algorithm... 5. Benefits of RETE Algorithm... 1 Table of Contents BUSINESS RULES CONCEPTS... 2 BUSINESS RULES... 2 RULE INFERENCE CONCEPT... 2 BASIC BUSINESS RULES CONCEPT... 3 BUSINESS RULE ENGINE ARCHITECTURE... 4 BUSINESS RULE ENGINE ARCHITECTURE...

More information

Programming Language Concepts for Software Developers

Programming Language Concepts for Software Developers Programming Language Concepts for Software Developers Peter Sestoft IT University of Copenhagen, Denmark sestoft@itu.dk Abstract This note describes and motivates our current plans for an undergraduate

More information

CSCI 3136 Principles of Programming Languages

CSCI 3136 Principles of Programming Languages CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2013 CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University

More information

Software Development. Topic 1 The Software Development Process

Software Development. Topic 1 The Software Development Process Software Development Topic 1 The Software Development Process 1 The Software Development Process Analysis Design Implementation Testing Documentation Evaluation Maintenance 2 Analysis Stage An Iterative

More information

Course 10266A: Programming in C# with Microsoft Visual Studio 2010

Course 10266A: Programming in C# with Microsoft Visual Studio 2010 Length Five days About this Course The course focuses on C# program structure, language syntax, and implementation detailswith.net Framework 4.0. This course describes the new enhancements in the C# 4.0

More information

Chapter 5 Names, Bindings, Type Checking, and Scopes

Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named

More information

CompuScholar, Inc. Alignment to Utah's Computer Programming II Standards

CompuScholar, Inc. Alignment to Utah's Computer Programming II Standards CompuScholar, Inc. Alignment to Utah's Computer Programming II Standards Course Title: TeenCoder: Java Programming Course ISBN: 978 0 9887070 2 3 Course Year: 2015 Note: Citation(s) listed may represent

More information

The Birth of Object Orientation: the Simula Languages

The Birth of Object Orientation: the Simula Languages The Birth of Object Orientation: the Simula Languages Ole-Johan Dahl June 2001 Abstract The development of the programming languages Simula I and Simula 67 is briefly described. An attempt is made also

More information

MEng, BSc Computer Science with Artificial Intelligence

MEng, BSc Computer Science with Artificial Intelligence School of Computing FACULTY OF ENGINEERING MEng, BSc Computer Science with Artificial Intelligence Year 1 COMP1212 Computer Processor Effective programming depends on understanding not only how to give

More information

Database Resources. Subject: Information Technology for Managers. Level: Formation 2. Author: Seamus Rispin, current examiner

Database Resources. Subject: Information Technology for Managers. Level: Formation 2. Author: Seamus Rispin, current examiner Database Resources Subject: Information Technology for Managers Level: Formation 2 Author: Seamus Rispin, current examiner The Institute of Certified Public Accountants in Ireland This report examines

More information

Task-Model Driven Design of Adaptable Educational Hypermedia

Task-Model Driven Design of Adaptable Educational Hypermedia Task-Model Driven Design of Adaptable Educational Hypermedia Huberta Kritzenberger, Michael Herczeg Institute for Multimedia and Interactive Systems University of Luebeck Seelandstr. 1a, D-23569 Luebeck,

More information

Fundamentals of Java Programming

Fundamentals of Java Programming Fundamentals of Java Programming This document is exclusive property of Cisco Systems, Inc. Permission is granted to print and copy this document for non-commercial distribution and exclusive use by instructors

More information