User:Randykahle/draft - Resource Oriented Computing
Resource Oriented Computing (ROC) is an abstract computing model.
There are no known studies to date that prove that OOP is objectively better than other approaches. Most existing evidence is anecdotal in nature.
Fundamental concepts
The fundamental principles of ROC include:
- Resource
- A resource is a platonic notion about information.
- Address
- A resource is identified by an address within and address space.
ROC based programming
In ROC software development follows three steps - Construct, Compose, and Constrain.
History
ROC has a history...
OOP in scripting
In recent years, object-oriented programming has become especially popular in scripting programming languages. Python and Ruby are scripting languages built on OOP principles, while Perl and PHP have been adding object oriented features since Perl 5 and PHP 4.
The Document Object Model of HTML, XHTML, and XML documents on the Internet have bindings to the popular JavaScript/ECMAScript language. JavaScript is perhaps the best known prototype-based programming language.
Problems and patterns
There are a number of programming challenges which a developer encounters regularly in object-oriented design. There are also widely accepted solutions to these problems. The best known are the design patterns codified by Gamma et al, but in a broader sense the term "design patterns" can be used to refer to any general, repeatable solution to a commonly occurring problem in software design. Some of these commonly occurring problems have implications and solutions particular to object-oriented development.
Matching real world
OOP can be used to translate from real-world phenomena to program elements (and vice versa). OOP was even invented for the purpose of physical modelling in the Simula-67 programming language. However, not everyone agrees that direct real-world mapping is facilitated by OOP, or is even a worthy goal; Bertrand Meyer argues in Object-Oriented Software Construction[1] that a program is not a model of the world but a model of a model of some part of the world; "Reality is a cousin twice removed".
Formal definition
There have been several attempts at formalizing the concepts used in object-oriented programming. The following concepts and constructs have been used as interpretations of OOP concepts:
|
Attempts to find a consensus definition or theory behind objects have not proven very successful, and often diverge widely. For example, some definitions focus on mental activities, and some on mere program structuring. One of the simpler definitions is that OOP is the act of using "map" data structures or arrays that can contain functions and pointers to other maps, all with some syntactic and scoping sugar on top. Inheritance can be performed by cloning the maps (sometimes called "prototyping").
Criticism
- One study by Potok et al. [1] has showed no significant difference in productivity between OOP and procedural approaches.
- Christopher J. Date has stated that critical comparison of OOP to other technologies, relational in particular, is difficult because of lack of an agreed-upon and rigorous definition of OOP.[2]
- Alexander Stepanov has suggested that OOP provides a mathematically-limited viewpoint and called it, "almost as much of a hoax as Artificial Intelligence" (possibly referring to the Artificial Intelligence projects and marketing of the 1980s that are sometimes viewed as overzealous in retrospect) [2].
- Dijkstra "... what society overwhelmingly asks for is snake oil. Of course, the snake oil has the most impressive names —otherwise you would be selling nothing— like "Structured Analysis and Design", "Software Engineering", "Maturity Models", "Management Information Systems", "Integrated Project Support Environments" "Object Orientation" and "Business Process Re-engineering" (the latter three being known as IPSE, OO and BPR, respectively)." EWD 1175 The strengths of the academic enterprise
See also
- Object-oriented programming language
- Aspect-oriented programming
- Procedural programming
- Object-oriented analysis and design
- Circle-ellipse problem
- Software componentry
- Interface description language
- List of object-oriented programming terms
- Refactoring
- CORBA
- DCOM
- Object-relational mapping
- Object-Relational impedance mismatch
- Object database
- Object-oriented image classification
- Constructor overloading
Further reading
- {{cite book
|first=Martin |last=Abadi |authorlink=Martin Abadi |coauthors=Luca Cardelli |year= |title=A Theory of Objects |publisher=Springer-Verlag |id=ISBN 0-387-94775-2
Notes
References
- Armstrong, Deborah J. (2006). "The Quarks of Object-Oriented Development". Communications of the ACM. 49 (2): 123–128. ISSN 0001-0782. Retrieved 2006-08-08.
{{cite journal}}
: Unknown parameter|month=
ignored (help) - Meyer, Bertrand (1997). Object-Oriented Software Construction. Prentice Hall. ISBN 0-13-629155-4.