A proposal for making Eiffel type-safe
The Computer Journal - Special issue on object-oriented programming
Eiffel: the language
The design and evolution of C++
The design and evolution of C++
Addendum to the proceedings of the 10th annual conference on Object-oriented programming systems, languages, and applications (Addendum)
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Pattern languages of program design 3
Making the future safe for the past: adding genericity to the Java programming language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Compatible genericity with run-time types for the Java programming language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The C++ standard library: a tutorial and reference
The C++ standard library: a tutorial and reference
The generic graph component library
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Design and implementation of generics for the .NET Common language runtime
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
The boost graph library: user guide and reference manual
The boost graph library: user guide and reference manual
The Definition of Standard ML
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Advanced Functional Programming, Second International School-Tutorial Text
Generics in Java and C++: a comparative model
ACM SIGPLAN Notices
OOPSLA '04 Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Beyond templates: a study of clones in the STL and some general implications
Proceedings of the 27th international conference on Software engineering
Essential language support for generic programming
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Associated types and constraint propagation for mainstream object-oriented generics
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Algorithm specialization in generic programming: challenges of constrained generics in C++
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Generic programming and high-performance libraries
International Journal of Parallel Programming - Special issue: The next generation software program
Design patterns as higher-order datatype-generic programs
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
Gaussian elimination: a case study in efficient genericity with MetaOCaml
Science of Computer Programming - Special issue on the first MetaOCaml workshop 2004
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Concepts: linguistic support for generic programming in C++
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Software extension and integration with type classes
Proceedings of the 5th international conference on Generative programming and component engineering
Debugging C++ template metaprograms
Proceedings of the 5th international conference on Generative programming and component engineering
An extended comparative study of language support for generic programming
Journal of Functional Programming
Evolving a language in and for the real world: C++ 1991-2006
Proceedings of the third ACM SIGPLAN conference on History of programming languages
ATEC '04 Proceedings of the annual conference on USENIX Annual Technical Conference
Parsimony principles for software components and metalanguages
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Proceedings of the 22nd annual international conference on Supercomputing
The Java 5 generics compromise orthogonality to keep compatibility
Journal of Systems and Software
Software Reuse beyond Components with XVCL (Tutorial)
Generative and Transformational Techniques in Software Engineering II
EClean - An Embedded Functional Language
Electronic Notes in Theoretical Computer Science (ENTCS)
The function concept in C++: an empirical study
Proceedings of the 2009 ACM SIGPLAN workshop on Generic programming
Increasing Reuse in Component Models through Genericity
ICSR '09 Proceedings of the 11th International Conference on Software Reuse: Formal Foundations of Reuse and Domain Engineering
Milena: Write Generic Morphological Algorithms Once, Run on Many Kinds of Images
ISMM '09 Proceedings of the 9th International Symposium on Mathematical Morphology and Its Application to Signal and Image Processing
JavaGI in the battlefield: practical experience with generalized interfaces
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
Minimizing dependencies within generic classes for faster and smaller programs
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Comparing approaches to generic programming in Haskell
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Generic meta-modelling with concepts, templates and mixin layers
MODELS'10 Proceedings of the 13th international conference on Model driven engineering languages and systems: Part I
Extending type systems in a library: Type-safe XML processing in C++
Science of Computer Programming
Functional programming with C++ template metaprograms
CEFP'09 Proceedings of the Third summer school conference on Central European functional programming school
A language for generic programming in the large
Science of Computer Programming
JavaGI: The Interaction of Type Classes with Interfaces and Inheritance
ACM Transactions on Programming Languages and Systems (TOPLAS)
Generic model transformations: write once, reuse everywhere
ICMT'11 Proceedings of the 4th international conference on Theory and practice of model transformations
Applying a generative technique for enhanced genericity and maintainability on the J2EE platform
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Language requirements for large-scale generic libraries
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
A comparison of generic template support: ada, C++, C#, and javaTM
Ada-Europe'10 Proceedings of the 15th Ada-Europe international conference on Reliable Software Technologies
A feature composition problem and a solution based on c++ template metaprogramming
GTTSE'05 Proceedings of the 2005 international conference on Generative and Transformational Techniques in Software Engineering
Software engineering techniques for the development of systems of systems
Monterey'08 Proceedings of the 15th Monterey conference on Foundations of Computer Software: future Trends and Techniques for Development
Introducing ScaleGraph: an X10 library for billion scale graph analytics
Proceedings of the 2012 ACM SIGPLAN X10 Workshop
The implicit calculus: a new foundation for generic programming
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
SSGIP'10 Proceedings of the 2010 international spring school conference on Generic and Indexed Programming
Reusable graph transformation templates
AGTIVE'11 Proceedings of the 4th international conference on Applications of Graph Transformations with Industrial Relevance
Proceedings of the Twelfth Workshop on Language Descriptions, Tools, and Applications
Genericity for model management operations
Software and Systems Modeling (SoSyM)
Exposing behavioral differences in cross-language API mapping relations
FASE'13 Proceedings of the 16th international conference on Fundamental Approaches to Software Engineering
Interfacing mathemagix with C++
Proceedings of the 38th international symposium on International symposium on symbolic and algebraic computation
From types to type requirements: genericity for model-driven engineering
Software and Systems Modeling (SoSyM)
Closed type families with overlapping equations
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Template metaprogramming techniques for concept-based specialization
Scientific Programming
Hi-index | 0.00 |
Many modern programming languages support basic generic programming, sufficient to implement type-safe polymorphic containers. Some languages have moved beyond this basic support to a broader, more powerful interpretation of generic programming, and their extensions have proven valuable in practice. This paper reports on a comprehensive comparison of generics in six programming languages: C++, Standard ML, Haskell, Eiffel, Java (with its proposed generics extension), and Generic C. By implementing a substantial example in each of these languages, we identify eight language features that support this broader view of generic programming. We find these features are necessary to avoid awkward designs, poor maintainability, unnecessary run-time checks, and painfully verbose code. As languages increasingly support generics, it is important that language designers understand the features necessary to provide powerful generics and that their absence causes serious difficulties for programmers.