- •1496 Corba - Object-Oriented Technology)
- •1432 Five Object Oriented Development Methods, Research report, hp Laboratories,
- •1866 Corba Implementation Descriptions: Object-Oriented Technologies dome
- •135 Based approaches (e.G. Smalltalk handles) allow powerful dynamic typing, as
- •83 There are many definitions of an object, such as found in [Booch 91, p77]:
- •83 There are many definitions of an object, such as found in [Booch 91, p77]:
- •48 Languages that are historically procedural languages, but have been extended with some oo features. Examples: Visual Basic (derived from basic), Fortran 2003, Perl, cobol 2002, php, abap.
- •121 Interface - e.G. Gui
- •197 Sharing and often instances will simply delegate to parents to access methods
- •670 Polymorphic languages can be statically typed to provide strong type checking,
- •Inclusion
- •209 Usage is atypical] See [Booch 94, pp 154-155] for a brief discussion of
- •203 Parents (as any other member) can be added or changed dynamically, providing
- •23 Subtype polymorphism
- •18 A survey by Deborah j. Armstrong of nearly 40 years of computing literature identified a number of "quarks", or fundamental concepts, found in the strong majority of definitions of oop.
- •24 Object inheritance (or delegation)
- •295 1.4) What Is a Meta-Class? (Object-Oriented Technology)
- •228 [Booch 91, p. 45] defines: "Encapsulation is the process of hiding all of the
- •912 Polymorphism is the ability of an object (or reference) to assume (be replaced
- •702 See also section 3.7, the Annotated Bibliography, and appendix d. The
- •120 Application Objects - In the Object Model
- •210 Prototype theory in the context of ooa and ood.
- •180 Derived class, parent class
- •400 Specify required attributes of a matching object (see sections 2.1, 2.7 and
- •2282 Garbage collection (gc) is a facility in the run-time system associated with a
- •1540 From a joint proposal (named "corba") of Hewlett-Packard, ncr Corp.,
- •170 Inheritance. This is an example of dynamic binding, which replaces a
- •1519 1) The Object Request Broker, or key communications element, for
- •714 Of externally observable behavior; a complete, consistent, and feasible
- •749 (User-)environment). The product, or resultant model,
- •302 The Meta-Class can also provide services to application programs, such as
- •1511 In late 1990 the omg published its Object Management Architecture
- •621 Term "multi-method") consider the functional and receiver based forms
- •1617 Between applications on different machines in heterogeneous
- •192 Objects contain fields, methods and delegates (pseudo parents), whereas
- •159 Function taking an object of the record type, called the receiver, as the
- •1346 Information, updates to Release 1.1 of The Object Database Standard:
- •458 Or change parents from objects (or classes) at run-time. Actors, clos, and
- •774 Should be made into a public standard, perhaps to be adopted by the omg. The
- •140 Objects [Kim 89, ch 19 and Yaoqing 93]. Simple static approaches are found in
- •18 A survey by Deborah j. Armstrong of nearly 40 years of computing literature identified a number of "quarks", or fundamental concepts, found in the strong majority of definitions of oop.
- •18 A survey by Deborah j. Armstrong of nearly 40 years of computing literature identified a number of "quarks", or fundamental concepts, found in the strong majority of definitions of oop.
- •168 [Stroustrup 90] covers the implementation details of virtual member functions
- •220 Parents when certain predicates are true. This can support a types
- •148 In more conventional languages to fully emulate this style of dynamically typed
- •2052 - Naming - network implementation of X.500 directory
- •2082 2 V1.X. Development
- •2182 Functionality than specified by the X.500 standard. Because dome goes
- •2191 - True messaging for workflow management and edi
- •1166 Used for assignment compatibility forcing an assigned object to inherit
- •2065 Registering services and entities in a distributed
- •1541 HyperDesk Corp., Digital Equipment Corp., Sun Microsystems and Object
- •2038 Toolkits (others are planned for future release) --
- •2434 Testing of Object-Oriented Programming (toop) faq
- •863 See also [Yourdon 92], [Wilkie 93], and [Booch 94] for discussions on this
- •1465 [Wilkie 93] summarizes, compares, and provides examples of Booch, Wirfs-Brock,
- •2311 Length, include file nesting and macro stack depth. This causes
- •2257 Optical or magnetic media containing all files required to load and
- •2489 Bezier, Boris, "Software Testing Techniques", 2nd edition, Van Nostrand
- •602 Notations for invoking a method, and this invocation can be called a message
- •1776 Object-communication mechanism across heterogeneous networks by using the
- •1391 It covers extensible objected-oriented programming from hardware up.
- •1317 Structured subobjects, each object has its own identity, or object-id (as
- •434 1.9) Does Multiple Inheritance Pose Any Additional Difficulties? (Object-Oriented Technology)
- •1751 Hp believes it is best positioned to help customers take advantage of
- •2709 One. This is a beta release and _should_ compile on any posix.1 system.
- •660 Dominate and double dispatch can be suffered, or an embedded dynamic typing
2489 Bezier, Boris, "Software Testing Techniques", 2nd edition, Van Nostrand
notable
2438 Last revised on 93.10.27. The most notable change is in the additions
notations
602 Notations for invoking a method, and this invocation can be called a message
notions
9 An object-oriented program may thus be viewed as a collection of interacting objects, as opposed to the conventional model, in which a program is seen as a list of tasks (subroutines) to perform. In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects. Each object can be viewed as an independent "machine" with a distinct role or responsibility. The actions (or "methods") on these objects. The terms "objects" and "oriented" in something like the modern sense of object- oriented programming seem to make their first appearance at MIT in the late 1950s and early 1960s. In the environment of the artificial intelligence group, as early as 1960, "object" could refer to identified items (LISP atoms) with properties (attributes); Alan Kay was later to cite a detailed understanding of LISP internals as a strong influence on his thinking in 1966.[3] Another early MIT example was Sketchpad created by Ivan Sutherland in 1960-61; in the glossary of the 1963 technical report based on his dissertation about Sketchpad, Sutherland defined notions of "object" and "instance" (with the class concept covered by "master" or "definition"), albeit specialized to graphical interaction. Also, an MIT ALGOL version, AED-0, linked data structures ("plexes", in that dialect) directly with procedures, prefiguring what were later termed "messages", "methods" and "member functions".
november
2011 November 19, 1993
nygaard
10 Objects as a formal concept in programming were introduced in the 1960s in Simula 67, a major revision of Simula I, a programming language designed for discrete event simulation, created by Ole-Johan Dahl and Kristen Nygaard of the Norwegian Computing Center in Oslo. Simula 67 was influenced by SIMSCRIPT and Hoare's proposed "record classes". Simula introduced the notion of classes and instances or objects (as well as subclasses, virtual methods, coroutines, and discrete event simulation) as part of an explicit programming paradigm. The language also used automatic garbage collection that had been invented earlier for the functional programming language Lisp. Simula was used for physical modeling, such as models to study and improve the movement of ships and their content through cargo ports. The ideas of Simula 67 influenced many later languages, including Smalltalk, derivatives of LISP (CLOS), Object Pascal, and C++.
nyo
1648 comas@nyo.dec.com (212) 856-2507
objc
1310 objc.html)
object-communication
1776 Object-communication mechanism across heterogeneous networks by using the
objected-oriented
1391 It covers extensible objected-oriented programming from hardware up.
object-groups
1714 in C++. It supports object-groups, virtual synchrony, multithreading
object-id
1317 Structured subobjects, each object has its own identity, or object-id (as
'objects'
2 In the domain of object-oriented programming an object is usually taken to mean an ephemeral compilation of attributes (object elements) and behaviors (methods or subroutines) encapsulating an entity. In this way, while primitive or simple data types are still just single pieces of information, object-oriented objects are complex types that have multiple pieces of information and specific properties (or attributes). Instead of merely being assigned a value, (like int =10), objects have to be "constructed". In the real world, if a Ford Focus is an "object" - an instance of the car class, its physical properties and its function to drive would have been individually specified. Once the properties of the Ford Focus "object" had been specified into the form of the car class, it can be endlessly copied to create identical objects that look and function in just the same way. As an alternative example, animal is a superclass of primate and primate is a superclass of human. Individuals such as Joe Bloggs or John Doe would be particular examples or 'objects' of the human class, and consequently possess all the characteristics of the human class (and of the primate and animal superclasses as well).
object-service
1824 their own, HP has supplied several object-service interfaces for developers
objectworks
2649 used to validate the Tree classes. For ParcPlace Smalltalk (ObjectWorks
observable
714 of externally observable behavior; a complete, consistent, and feasible
observer
61 Behavioral patterns : Chain-of-responsibility pattern, Command pattern, Interpreter pattern, Iterator pattern, Mediator pattern, Memento pattern, Observer pattern, State pattern, Strategy pattern, Template method pattern, Visitor pattern.
obtain
2255 DOME Software System and obtain quick resolutions to problems.
obtainable
2556 Foundations, Champaign, Illinois, 1992. Copies may be obtainable
obtaining
1488 If you are interested in obtaining this book you can send an e-mail to
occurrences
472 allowing both shared and non-shared occurrences of a parent to coexist. All
odbms
1345 addresses and contact information for ODBMS vendors, ODMG membership
odbmss
1348 adding more links to related sites, bibliographies, and a FAQ for ODBMSs.
odell's
760 work. Many other methodologies including Rumbaugh's OMT, Martin and Odell's
odl
1347 ODMG-93 along with ODL lex and yacc files. In the future, we will be
officer
1792 executive officer of Information Advantage, Inc. "Our object-based
offset
169 in C++, which also involve an offset for the receiver to handle multiple-
ole
2174 - OLE Microsoft
ole-johan
10 Objects as a formal concept in programming were introduced in the 1960s in Simula 67, a major revision of Simula I, a programming language designed for discrete event simulation, created by Ole-Johan Dahl and Kristen Nygaard of the Norwegian Computing Center in Oslo. Simula 67 was influenced by SIMSCRIPT and Hoare's proposed "record classes". Simula introduced the notion of classes and instances or objects (as well as subclasses, virtual methods, coroutines, and discrete event simulation) as part of an explicit programming paradigm. The language also used automatic garbage collection that had been invented earlier for the functional programming language Lisp. Simula was used for physical modeling, such as models to study and improve the movement of ships and their content through cargo ports. The ideas of Simula 67 influenced many later languages, including Smalltalk, derivatives of LISP (CLOS), Object Pascal, and C++.
omg-conforming
1523 communicating with OMG-conforming object-oriented systems;
omg-specific
1821 repository. In addition to these OMG-specific features, most developers
omg-specified
1670 generate OMG compliant code for OMG-specified languages).
ommissions
1910 ommissions:
omt
760 work. Many other methodologies including Rumbaugh's OMT, Martin and Odell's
on-line
2130 on-line data, information technology (IT) managers are turning to
ooas
820 A problem domain has many realizations, or differing OOAs. An OOA has many
ooda
739 Object-oriented domain analysis (OODA) seeks to identify reusable items
oodb
1330 lifetime and objects stored indefinitely in an OODB (which are persistent)
oodbms
1332 interactive user interface facilities, as found in a fully supported OODBMS.
oodms
1900 RDBMSs, OODMS, or a combination of these.
oods
821 realizations, or differing OODs, but a similar notation is often used for
oopls
1176 (subclass polymorphism), as is typical in most OOPLs. Dropping this
oops
822 the two. An OOD also has many realizations, or differing OOPs, but allows a
oop's
65 OOP can be used to associate real-world objects and processes with digital counterparts. However, not everyone agrees that OOP facilitates direct real-world mapping (see Negative Criticism section) or that real-world mapping is even a worthy goal; Bertrand Meyer argues in Object-Oriented Software Construction that a program is not a model of the world but a model of some part of the world; "Reality is a cousin twice removed". At the same time, some principal limitations of OOP had been noted. For example, the Circle-ellipse problem is difficult to handle using OOP's concept of inheritance.
oora
741 objects, and kits [frameworks]. OORA analysts and OOD designers will
oorass
1414 Reenskaug (OOram, was OORASS) [Reenskaug 91]
oosd
1444 Yourdon-Constantine SD, Martin information engineering design, Wasserman OOSD,
oose
1398 Here is a list of OOSE Methodologies:
oot
1868 Company: Enquiries: info@oot.co.uk
openodb
1802 databases (currently OpenODB from HP and Gemstone from Servio) as their
operate
2665 specifically designed to operate in both host and target
operational
716 operational characteristics (e.g. reliability, availability, performance)".
opponents
2321 Opponents of GC reply that it introduces an overhead which is
optical
2257 Optical or magnetic media containing all files required to load and
optimize
2680 *Automatic memory leak detection on executables to optimize memory use
option
1 Object-oriented programming (OOP) is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction, encapsulation, messaging, modularity, polymorphism, and inheritance. Many modern programming languages now support OOP, at least as an option. In computer science, an object is any entity that can be manipulated by the commands of a programming language, such as a value, variable, function, or data structure. (With the later introduction of object-oriented programming the same word, "object", refers to a particular instance of a class)
optional
240 and Ada have packages for encapsulation, CLOS's are optional while Ada's
orbix-ft
1970 just entered beta testing. Work is underway on Orbix-FT, integration with
orbix-tp
1969 In addition Orbix-TP, integration with Tuxedo for transaction processing, has
orderly
786 * It assumes a relatively uniform and orderly sequence of development steps
order-of-magnitude
488 also allow reuse between applications, potentially allowing order-of-magnitude
oregon
2532 Portland, Oregon, October 21, 1993. Abstract:
organizational
873 efforts places information systems within an organizational perspective by
organized
2445 Software. It is kind of like an FAQ, though it isn't organized
organizing
735 "The process of identifying, collecting, organizing, and representing the
originators
1425 the originators themselves).
osi
2036 OSI protocols, X.25
oslo
10 Objects as a formal concept in programming were introduced in the 1960s in Simula 67, a major revision of Simula I, a programming language designed for discrete event simulation, created by Ole-Johan Dahl and Kristen Nygaard of the Norwegian Computing Center in Oslo. Simula 67 was influenced by SIMSCRIPT and Hoare's proposed "record classes". Simula introduced the notion of classes and instances or objects (as well as subclasses, virtual methods, coroutines, and discrete event simulation) as part of an explicit programming paradigm. The language also used automatic garbage collection that had been invented earlier for the functional programming language Lisp. Simula was used for physical modeling, such as models to study and improve the movement of ships and their content through cargo ports. The ideas of Simula 67 influenced many later languages, including Smalltalk, derivatives of LISP (CLOS), Object Pascal, and C++.
osmosys
1419 Winter Partners (OSMOSYS) [Winter Partners]
ot
1598 case histories, OT training information and the latest object-
outlive
1327 OODBs) that outlive the programs that create them. Object lifetimes can be
output
2683 *Programmatic interface to output files and cumulative code coverage
ouverture
1371 Ouverture Project (ESPRIT funded OMG IDL defines inter-module interfaces)
overcome
1127 (see section 1.19), both of which are overcome with dynamic typing.
overcoming
2142 overcoming system incompatibilities, and middleware such as
override
1067 function at run-time because a derived class may override the function, in
overrode
1057 overrode the virtual method from its base class, providing specialized behavior
owners
2247 respective owners.
owns
1663 API only), NetWare (planned, Novell owns part of HyperDesk).
oxford
234 about its inner workings. [Oxford, 1986]"
oz
2520 are dhoffman@csr.uvic.ca and pstropp@cs.uq.oz.au. Describes an
packaging
1098 linearly but exponentially with lines of code, so that packaging code into
paepcke
350 Meta-Classes accessible to users [Kiczales 92, Paepcke 93]. In CLOS
-page
1592 First Class is OMG's non-commercial bi-monthly 28-page
pages
1452 State University, Atlanta, USA, 1992, 163 pages.
paj
2281 From: Paul Johnson (paj@gec-mrc.co.uk)
palo
1741 PALO ALTO, Calif.--(BUSINESS WIRE) via First! -- Hewlett-Packard Company
panix
130 Wildavsky, send requests to adamw@panix.com.
paradigms
1258 3.3) Are There Any Other Object-Oriented Paradigms?
parallel-recursive
795 "parallel-recursive design" with analyze-design-implement-test iterations.
parameterize
1210 Generics (or Templates in C++) refer to the ability to parameterize types
parametrically
1230 parametrically polymorphic implementation. Generics can also be viewed as a
parametrically-polymorphic
1232 Functions are typically generic in statically-typed parametrically-polymorphic
particularily
2634 particularily incremental testing.
pascal-based
386 Objective-C, etc.), lisp-based (CLOS, Flavors, Scheme, etc.), and Pascal-based
pass
1081 multiple-polymorphism, a cut operation in an Edit submenu may pass the cut
passage
1533 particular parts of the reference model architecture. After passage
pass-by-value
2374 often use "copy on write" to efficiently implement pass-by-value semantics.
path
474 shared must be renamed "along an inheritance path", else they are shared by
paths
2380 3. Message Passing Leads to Dynamic Execution Paths
patterns-request
131 **There is a patterns mailing list, email: patterns-request@cs.uiuc.edu,
peace
1372 Peace (OO family-based parallel OS, See Appendix E, General)
pedestal
80 Steve Yegge, making a roundabout comparison with Functional programming, writes, "Object Oriented Programming puts the Nouns first and foremost. Why would you go to such lengths to put one part of speech on a pedestal? Why should one kind of concept take precedence over another? It's not as if OOP has suddenly made verbs less important in the way we actually think. It's a strangely skewed perspective."
peer-to-peer
1881 As a fully peer-to-peer product DOME can be used to build systems
penelope
1434 de Champeaux, Dennis and Faure, Penelope. A comparative study of object-
penpoint
1375 PenPoint OS (Go, written in C++)
perceived
13 Object-oriented programming developed as the dominant programming methodology in the early and mid 1990s when programming languages supporting the techniques became widely available. These included Visual FoxPro 3.0, C++[citation needed], and Delphi[citation needed]. Its dominance was further enhanced by the rising popularity of graphical user interfaces, which rely heavily upon object-oriented programming techniques. An example of a closely related dynamic GUI library and OOP language can be found in the Cocoa frameworks on Mac OS X, written in Objective-C, an object-oriented, dynamic messaging extension to C based on Smalltalk. OOP toolkits also enhanced the popularity of event-driven programming (although this concept is not limited to OOP). Some[who?] feel that association with GUIs (real or perceived) was what propelled OOP into the programming mainstream.
percent
1812 -- up to 400 percent increased performance, through quicker
periodicals
1625 ftp! These are from the list of literature and periodicals listed in
permissions
272 above, classes can also specify access permissions for clients and derived
permit
235 Some languages permit arbitrary access to objects and allow methods to be
permits
2535 dependencies. This in-turn permits incremental,
perry
2566 Perry, D.E. and G.E. Kaiser, "Adequate Testing and Object-Oriented
persists
8 Object-oriented programming has roots that can be traced to the 1960s. As hardware and software became increasingly complex, manageability often became a concern. Researchers studied ways to maintain software quality and developed object-oriented programming in part to address common problems by strongly emphasizing discrete, reusable units of programming logic[citation needed]. The technology focuses on data rather than processes, with programs composed of self-sufficient modules ("classes"), each instance of which ("objects") contains all the information needed to manipulate its own data structure ("members"). This is in contrast to the existing modular programming that had been dominant for many years that focused on the function of a module, rather than specifically the data, but equally provided for code reuse, and self-sufficient reusable units of programming logic, enabling collaboration through the use of linked modules (subroutines). This more conventional approach, which still persists, tends to consider data and behavior separately.
pervades
79 Richard Mansfield, author and former editor of COMPUTE! magazine, states that "like countless other intellectual fads over the years ("relevance", communism, "modernism", and so on—history is littered with them), OOP will be with us until eventually reality asserts itself. But considering how OOP currently pervades both universities and workplaces, OOP may well prove to be a durable delusion. Entire generations of indoctrinated programmers continue to march out of the academy, committed to OOP and nothing but OOP for the rest of their lives."[38] He also is quoted as saying "OOP is to writing a program, what going through airport security is to flying".
pervasive
11 The Smalltalk language, which was developed at Xerox PARC (by Alan Kay and others) in the 1970s, introduced the term object-oriented programming to represent the pervasive use of objects and messages as the basis for computation. Smalltalk creators were influenced by the ideas introduced in Simula 67, but Smalltalk was designed to be a fully dynamic system in which classes could be created and modified dynamically rather than statically as in Simula 67.[9] Smalltalk and with it OOP were introduced to a wider audience by the August 1981 issue of Byte Magazine.
pfrankl
2508 One author can be reached at pfrankl@polyof.poly.edu.
pg
97 definition appears on pg 54). Booch goes on to describe these definitions
phd
1503 and coincidentally, MIT '82, SM '85, PhD '89 (EECS)
pierce
20 Benjamin C. Pierce and some other researchers view as futile any attempt to distill OOP to a minimal set of features. He nonetheless identifies fundamental features that support the OOP programming style in most object-oriented languages:
pillar
2371 Implementation hiding is a pillar of object-oriented programming,
pitfalls
57 Design Patterns: Elements of Reusable Object-Oriented Software is an influential book published in 1995 by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, sometimes casually called the "Gang of Four". Along with exploring the capabilities and pitfalls of object-oriented programming, it describes 23 common programming problems and patterns for solving them. As of April 2007, the book was in its 36th printing.
placement
1141 85] for a proper placement of ML's type system). ML doesn't use inheritance
placing
2396 delete, placing the memory management burden on the client, who must call
plan
1794 We plan to use HP ORB Plus to develop new object-based products that
platt
2101 3245 Platt Springs Road
player
6 An object-oriented program will usually contain different types of objects, each type corresponding to a particular kind of complex data to be managed or perhaps to a real-world object or concept such as a bank account, a hockey player, or a bulldozer. A program might well contain multiple copies of each type of object, one for each of the real-world objects the program is dealing with. For instance, there could be one bank account object for each real-world account at a particular bank. Each copy of the bank account object would be alike in the methods it offers for manipulating or reading its data, but the data inside each object would differ reflecting the different history of each account.
plexes
9 An object-oriented program may thus be viewed as a collection of interacting objects, as opposed to the conventional model, in which a program is seen as a list of tasks (subroutines) to perform. In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects. Each object can be viewed as an independent "machine" with a distinct role or responsibility. The actions (or "methods") on these objects. The terms "objects" and "oriented" in something like the modern sense of object- oriented programming seem to make their first appearance at MIT in the late 1950s and early 1960s. In the environment of the artificial intelligence group, as early as 1960, "object" could refer to identified items (LISP atoms) with properties (attributes); Alan Kay was later to cite a detailed understanding of LISP internals as a strong influence on his thinking in 1966.[3] Another early MIT example was Sketchpad created by Ivan Sutherland in 1960-61; in the glossary of the 1963 technical report based on his dissertation about Sketchpad, Sutherland defined notions of "object" and "instance" (with the class concept covered by "master" or "definition"), albeit specialized to graphical interaction. Also, an MIT ALGOL version, AED-0, linked data structures ("plexes", in that dialect) directly with procedures, prefiguring what were later termed "messages", "methods" and "member functions".
pliant
50 Languages with abstract data type support, but not all features of object-orientation, sometimes called object-based languages. Examples: Modula-2 (with excellent encapsulation and information hiding), Pliant, CLU.
plug-and-play
1786 "plug-and-play" object-oriented environment. This will give developers,
pm-cmm
838 personnel management CMM (PM-CMM).
points
789 Modern OO methodologies directly address these points and emphasize the
polyof
2508 One author can be reached at pfrankl@polyof.poly.edu.
pomoco
1686 www.pomoco.com
pop
247 Pop methods will be public. Private members are only accessible from within
popkin
2242 ERwin,, Popkin,, and Knowledgeware,.
popularized
66 However, Niklaus Wirth (who popularized the adage now known as Wirth's law: "Software is getting slower more rapidly than hardware becomes faster") said of OOP in his paper, "Good Ideas through the Looking Glass", "This paradigm closely reflects the structure of systems 'in the real world', and it is therefore well suited to model complex systems with complex behaviours" (contrast KISS principle).
populated
1950 populated with all objects or services available at runtime keeping programmers
portable
2037 NCR Cooperative Frameworks currently has two portable ORB
portion
1539 Request Broker portion of the reference model. This technology, adopted
portland
2532 Portland, Oregon, October 21, 1993. Abstract:
ports
10 Objects as a formal concept in programming were introduced in the 1960s in Simula 67, a major revision of Simula I, a programming language designed for discrete event simulation, created by Ole-Johan Dahl and Kristen Nygaard of the Norwegian Computing Center in Oslo. Simula 67 was influenced by SIMSCRIPT and Hoare's proposed "record classes". Simula introduced the notion of classes and instances or objects (as well as subclasses, virtual methods, coroutines, and discrete event simulation) as part of an explicit programming paradigm. The language also used automatic garbage collection that had been invented earlier for the functional programming language Lisp. Simula was used for physical modeling, such as models to study and improve the movement of ships and their content through cargo ports. The ideas of Simula 67 influenced many later languages, including Smalltalk, derivatives of LISP (CLOS), Object Pascal, and C++.
pose