Object-oriented and generic programming are both supported in C++. OOP provides high expressiveness whereas GP leads to more efficient programs by avoiding dynamic typing. This paper presents SCOOP, a new paradigm which enables both classical OO design and high performance in C++ by mixing OOP and GP. We show how classical and advanced OO features such as virtual methods, multiple inheritance, argument covariance, virtual types and multimethods can be implemented in a fully statically typed model, hence without run-time overhead.
|
3878
|
Design Patterns: Elements of Reusable ObjectOriented Software
– Gamma, Helm, et al.
- 1995
|
|
719
|
On understanding types, data abstraction, and polymorphism
– Cardelli, Wegner
- 1985
|
|
651
|
Eiffel. The language
– MEYER
- 1992
|
|
286
|
Making the Future Safe for the Past: Adding Genericity to the Java Programming Language
– Bracha, Odersky, et al.
- 1998
|
|
233
|
Inheritance is not subtyping
– Cook, Hill, et al.
- 1990
|
|
203
|
Fast Static Analysis of C++ Virtual Function Calls
– Bacon, Sweeney
- 1996
|
|
202
|
The Standard Template Library
– Stepanov, Lee
- 1994
|
|
191
|
The Design and Evolution of C
– Stroustrup
- 1999
|
|
157
|
Parameterized Types and Java
– Bank, Liskov, et al.
- 1996
|
|
129
|
Polytoil: A type-safe polymorphic objectoriented language
– Bruce, Schuett, et al.
- 2003
|
|
114
|
Abstraction mechanisms in CLU
– Liskov, Snyder, et al.
- 1977
|
|
111
|
F-Bounded Polymorphism for Object-Oriented Programming
– Canning, Cook, et al.
- 1989
|
|
101
|
U.: Generative Programming: Methods, Tools, and Applications
– Czarnecki, Eisenecker
- 2000
|
|
101
|
Expression templates
– Veldhuizen
- 1995
|
|
61
|
A statical safe alternative to virtual types
– Bruce, Odersky, et al.
- 1998
|
|
56
|
CLU Reference Manual
– Liskov
- 1979
|
|
55
|
Genericity versus Inheritance
– Meyer
- 1986
|
|
54
|
Traits: a New and Useful Template Technique
– Myers
- 1995
|
|
51
|
Eliminating virtual function calls in c++ programs
– Aigner, Hölzle
- 1996
|
|
50
|
The direct cost of virtual function calls in c
– Driesen, Holzle
- 1996
|
|
41
|
Genericity in Java with Virtual Types
– Thorup
|
|
34
|
Subtyping is not a good “match” for objectoriented languages
– Bruce, Fiech, et al.
- 1997
|
|
31
|
Whole Program Optimization of Object-Oriented Languages
– Dean
- 1996
|
|
27
|
Efficient Dynamic Dispatch without Virtual Function Tables. The SmallEiffel Compiler
– Zendra, Colnet, et al.
- 1997
|
|
26
|
Concept checking: Binding parametric polymorphism in C
– Siek, Lumsdaine
- 2000
|
|
25
|
Scientific and Engineering C
– Barton, Nackman
- 1994
|
|
23
|
C++ Templates: The Complete Guide
– Vandevoorde, Josuttis
- 2002
|
|
22
|
Techniques for scientific C
– VELDHUIZEN
- 2000
|
|
19
|
Implementing signatures for C
– Baumgartner, Russo
- 1995
|
|
17
|
Curiously Recurring Template Patterns
– Coplien
- 1995
|
|
16
|
Partial evaluation for class-based object-oriented languages
– SCHULTZ
- 2001
|
|
15
|
Mixin-Based Programming in C
– Smaragdakis, Batory
- 2000
|
|
13
|
Unifying genericity: Combining the benefits of virtual types and parameterized classes
– Thorup, Torgersen
- 1999
|
|
11
|
Static interfaces in C
– McNamara, Smaragdakis
- 2000
|
|
10
|
An expression template aware lambda function
– Striegnitz, Smith
- 2000
|
|
8
|
Design patterns for generic programming
– Duret-Lutz, Géraud, et al.
- 2001
|
|
7
|
Disambiguated glommable expression templates
– Furnish
- 1997
|
|
7
|
The lambda library: Lambda abstraction in C
– Järvi, Powell
- 2001
|
|
4
|
Guaranteed optimization: Proving nullspace properties of compilers
– Veldhuizen, Lumsdaine
- 2002
|
|
3
|
Program templates: Expression templates applied to program evaluation
– Maes
- 2003
|
|
3
|
On orthogonal specialization in C++: Dealing with efficiency and algebraic abstraction in Vaucanson
– Régis-Gianas, Poss
- 2003
|
|
3
|
Type-safe covariance
– Surazhsky, Gil
- 2004
|
|
2
|
How non-member functions improve encapsulation
– Meyers
- 2000
|
|
1
|
Expression templates in Ada
– Duret-Lutz
- 2001
|
|
1
|
Applying generic programming to image processing
– Géraud, Fabre, et al.
- 2001
|
|
1
|
Implementing design patterns using C++ templates. Tutorial at the
– Langer
- 2000
|
|
1
|
Olena image processing library
– Olena
- 2003
|
|
1
|
Scientific computing in object-oriented languages
– oonumerics
- 2003
|
|
1
|
On the (un)reality of virtual types. URL http: //pauillac.inria.fr/~remy/work/virtual
– Rémy, Vouillon
- 2000
|
|
1
|
FC++: Functional tools for objectoriented tasks
– Smaragdakis, McNamara
- 2002
|