Object-oriented programming: challenges for the next fifty years. Prof. Andrew P. Black Portland State University, Portland, Oregon, USA.
|
|
|
- Eileen Webster
- 10 years ago
- Views:
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
98 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
99 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
100 A third interpretation is useful: The laissez faire, or George W. Bush interpretation The nanny state, or Harold Wilson interpretation 55
101 A third interpretation is useful: The laissez faire, or George W. Bush interpretation The nanny state, or Harold Wilson interpretation The Proceed with caution, or Edward R. Murrow, interpretation The checker has been unable to prove that there are no type errors in your program. It may work; it may give you a run-time error. Good night, and good luck. 56
102 Three interpretations Under all three interpretations, an error-free program has the same meaning. Under Wilson: conventional static typing An erroneous program will result in a static error, and won t be permitted to run. Some error-free programs won t be permitted to run 57
103 Three interpretations Under all three interpretations, an error-free program has the same meaning. Under Bush: conventional dynamic typing all checks will be performed at runtime Even those that are guaranteed to fail a counter-example is more useful than a type-error message 58
104 Three interpretations Under all three interpretations, an error-free program has the same meaning Under Wilson, you are not permitted to run a program that might have a type-error Under Bush, any program can be run, but you will get no static warnings. Under Murrow interpretation, you will get a mix of compile-time warnings and run-time checks. 59
105 I m for Murrow! I believe that the Murrow interpretation of types is the most useful for programmers Wilson s Nanny Statism is an invitation to mess up your language design! language designers don t want to include any construct that can t be statically checked 60
106 61 SIMULA was for Murrow too!
107 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. 62
108 SIMULA was for Murrow too! Modelling came first! SIMULA did not compromise its modelling ability to achieve security It compromised its run-time performance incorporating explicit checks where necessary when a construct necessary for modelling was not statically provable as safe 63
109 The Wilson obsession Results in: type systems of overwhelming complexity languages that are larger less regular less expressive 64
110 Example: parametric superclasses class Dictionary extends Hashtable { method findindex (predicate) overrides { } method at (key) put (value) adds { } This is fine so long as Hashtable is a globally known class But suppose that I want to let the client choose the actual class that I m extending? 65
111 Example: parametric superclasses class Dictionary (ht) extends ht { method findindex (predicate) overrides { } method at (key) put (value) adds { } This is not so fine: we need a new notion of heir types so we can statically check that arguments to Dictionary have the right properties 66
112 Example: parametric superclasses This is not so fine: Or: Or: Or: we need a new notion of heir types so we can statically check that arguments to Dictionary have the right properties we need a new function & parameter mechanism for classes we ban parametric superclasses, add global variables, add open classes, and still decrease usability 67
113 Virtual Classes Virtual classes, as found in BETA, are another approach to this problem They feature co-variant methods methods whose arguments are specialized along with their results Not statically guaranteed to be safe Nevertheless, useful for modelling real systems 68
114 Example: type parameters Types need parameters, e.g., Set.of (Informatician) where Informatician is another type Obvious solution: Represent types as Objects, and use the normal method & parameter mechanism. Bad news: type checking is no longer decidable 69
115 Type-checking is not decidable! Murrow Reaction: So what? Interesting programs will need some run-time checking anyway. Wilson Reaction: Shock! Horror! We can t do that! Invent a new parameter passing mechanism for types, with new syntax, and new semantics, and a bunch of restrictions to ensure decidability Some programs will still be untypeable (Gödel) Result: language becomes larger, expressiveness is reduced. 70
116 Type-checking is not decidable! Murrow Reaction: So what? Interesting programs will need some run-time checking anyway. Wilson Reaction: Shock! Horror! We can t do that! Invent a new parameter passing mechanism for types, with new syntax, and new semantics, and a bunch of restrictions to ensure decidability Some programs will still be untypeable (Gödel) Result: language becomes larger, expressiveness is reduced. 70
117 The Future of Objects ( according to Black ) 71
118 Current Trends in Computing Multicore Manycore Energy-Efficiency Mobility and the cloud Reliability Distributed development teams 72
119 Multicore and Manycore What do objects have to offer us in the era of manycore? Processes interacting through messages! 73
120 A Cost Model for Manycore Most computing models treat computation as the expensive resource it was so when those models were developed! e.g. moving an operation out of a loop is an optimization Today: computation is free it happens in the cracks between data fetch and data store Data movement is expensive both in time and energy 74
121 A Problem: Today s computing models can t even express the thing that needs to be carefully controlled on a manycore chip: Data movement 75
122 O-O A Cost Model for Manycore Spatial arrangement of Small Objects small method suite as well as small data local operations are free optimization means reducing the size of the object, not the number of computations message-passing is costly cost of message = (amount of data) x (distance) the message.byte.nm model 76
123 Mobility and the Cloud Fundamentally relies on replication and caching for performance and availability Do Objects help? Best model for distributed access seems to be (distributed) version control svn, Hg, git Can we adapt objects to live in a versioned world? Object identity is problematic 77
124 Object references in a Versioned world Learn from Erlang: Erlang messages can be sent to a prodessid, or to a processname ( controllerforarea503 ) Perhaps: we should be able to reference or objects either by a descriptor e.g. Most recent version of the Oslo talk by an Object id? Object16x45d023f 78
125 Reliability Failures are always partial What s the unit of failure in the object model? Is it the object, or is there some other unit? Whatever it is must leak failure How to mask failure: replication in space replication in time 79
126 Distributed Development Teams What s this to do with objects? Packaging! Collaborating in loosely-knot teams demands better tools for packaging code All modules are parameterized by other modules No global namespace? URLs as the global namespace? Versioned objects as the basis of a shared programming environment? 80
127 Algol 60 and Simula: Dahl recognized that the runtime structures of Algol 60 already contained the mechanisms that were necessary for simulation. It is the runtime behavior of a simulation system that models the real world, not the program text. 81
128 Agile Design: Agile software development is a methodology in which a program is developed in small increments, in close consultation with the customer. The code runs at the end of the first week, and new functions are added every week. How could this possibly work! Isn t it important to design the program? Yes! Design is important. It s so important, we don t do it only when we know nothing about the program. We design every day. The program is continuously redesigned as the programmers learn from the behavior of the running system. 82
129 Insight: The program s run-time behavior is what matters! This is obvious if programs exist to control computers; less so, if programs are system descriptions Program behavior, not programs, model realworld systems The program-text is a meta-description of the program behavior. It s not always easy to infer the behavior from the meta-description 83
130 Observation: I know that I have succeeded as a teacher when students anthropomorphize their objects This happens more often and more quickly when I teach with Smalltalk than when I teach with Java Smalltalk programmers talk about objects, Java programmers talk about classes Why is this? 84
131 The Value of Dynamism: Smalltalk is a Dynamic Language Many features of the language and the programing environment help the programmer to interact with objects, rather than with code Proposed definition: a Dynamic Programming Language is one designed to facilitate the programmer learning from the run-time behavior of the program. 85
132 Summary What are the major concepts of objectorientation? it depends on the social and political context! After 50 years, there are still ideas in SIMULA to be mined to solve 21 st century problems years from now, there may not be any programming, but I m willing to wager that Dahl s ideas will still, in some form, be familiar to programmers in
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
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,
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
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
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:
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
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,
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
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
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
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
[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
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
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
The Smalltalk Programming Language. Beatrice Åkerblom [email protected]
The Smalltalk Programming Language Beatrice Åkerblom [email protected] 'The best way to predict the future is to invent it' - Alan Kay. History of Smalltalk Influenced by Lisp and Simula Object-oriented
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
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
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
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
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
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
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
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
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...
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
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
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
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
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
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
#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
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
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 [email protected] Names, Bindings, and Scopes A name is a symbolic identifier used
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
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 [email protected] Abstract. Contracts have proved a powerful concept
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
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
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
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
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...
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
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
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
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
T Tutorial D - A Short Summary
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
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
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/
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
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.
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
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 [email protected]
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
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
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
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
Programming Language Concepts for Software Developers
Programming Language Concepts for Software Developers Peter Sestoft IT University of Copenhagen, Denmark [email protected] Abstract This note describes and motivates our current plans for an undergraduate
Component Based Software Engineering: A Broad Based Model is Needed
Component Based Software Engineering: A Broad Based Model is Needed Allen Parrish ([email protected]) Brandon Dixon ([email protected]) David Hale ([email protected]) Department of Computer Science
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
CSE 307: Principles of Programming Languages
Course Organization Introduction CSE 307: Principles of Programming Languages Spring 2015 R. Sekar Course Organization Introduction 1 / 34 Topics 1. Course Organization Info and Support Course Description
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
How To Develop Software
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
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
WINDOWS AZURE AND WINDOWS HPC SERVER
David Chappell March 2012 WINDOWS AZURE AND WINDOWS HPC SERVER HIGH-PERFORMANCE COMPUTING IN THE CLOUD Sponsored by Microsoft Corporation Copyright 2012 Chappell & Associates Contents High-Performance
Monday January 19th 2015 Title: "Transmathematics - a survey of recent results on division by zero" Facilitator: TheNumberNullity / James Anderson, UK
Monday January 19th 2015 Title: "Transmathematics - a survey of recent results on division by zero" Facilitator: TheNumberNullity / James Anderson, UK It has been my pleasure to give two presentations
A Social Network perspective of Conway s Law
A Social Network perspective of Conway s Law Chintan Amrit, Jos Hillegersberg, Kuldeep Kumar Dept of Decision Sciences Erasmus University Rotterdam {camrit, jhillegersberg, kkumar}@fbk.eur.nl 1. Introduction
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
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
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,
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
(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
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
COMPARISON OF OBJECT-ORIENTED AND PROCEDURE-BASED COMPUTER LANGUAGES: CASE STUDY OF C++ PROGRAMMING
COMPARISON OF OBJECT-ORIENTED AND PROCEDURE-BASED COMPUTER LANGUAGES: CASE STUDY OF C++ PROGRAMMING Kuan C. Chen, Ph.D. Assistant Professor Management Information Systems School of Management Purdue University
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: [email protected] Web: www.discoveritt.com Course MS10975A Introduction to Programming Length: 5 Days
Formal Engineering for Industrial Software Development
Shaoying Liu Formal Engineering for Industrial Software Development Using the SOFL Method With 90 Figures and 30 Tables Springer Contents Introduction 1 1.1 Software Life Cycle... 2 1.2 The Problem 4 1.3
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
The Rules 1. One level of indentation per method 2. Don t use the ELSE keyword 3. Wrap all primitives and Strings
Object Calisthenics 9 steps to better software design today, by Jeff Bay http://www.xpteam.com/jeff/writings/objectcalisthenics.rtf http://www.pragprog.com/titles/twa/thoughtworks-anthology We ve all seen
Theorem (informal statement): There are no extendible methods in David Chalmers s sense unless P = NP.
Theorem (informal statement): There are no extendible methods in David Chalmers s sense unless P = NP. Explication: In his paper, The Singularity: A philosophical analysis, David Chalmers defines an extendible
