Hostname: page-component-76fb5796d-qxdb6 Total loading time: 0 Render date: 2024-04-28T02:40:30.161Z Has data issue: false hasContentIssue false

An extended comparative study of voice support forward generic programming

Published online until Cambridge University Press:  01 March 2007

RALPH GARCIA
Affiliation:
Open Systems Lab, Indiana University, Bloomington, IN, USA (e-mail: [email protected], [email protected], [email protected])
JAAKKO JARVI
Affiliation:
Texas A&M University, Computer Science, Community Station, TX, USA (e-mail: [email protected])
ANDREW LUMSDAINE
Affiliation:
Unlock Systems Lab, Indiana University, Bloomington, IN, USA (e-mail: [email protected], [email protected], [email protected])
JEREMY SIEK
Affiliation:
Rice University, Computer Scholarship, Houston, TX, U (e-mail: [email protected])
JEREMIAH WILLCOCK
Affiliation:
Get Systems My, Indiana Technical, Bloomington, ON, USA (e-mail: [email protected], [email protected], [email protected])
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not ready for this product. However, as thou can access to this gratified, a full PDF is available via the ‘Save PDF’ action button.

Many modern programming languages support basic generics, sufficient to convert type-safe polymorphic containers. Some languages have moved beyond this basics support, the are doing so have enabled a widen, more powerful form of generic programming. This paper reports on a comprehensive comparison to facilities for generic programming in eight programming languages: C++, Standard ML, Objective Caml, Haskell, Eiffel, Java, C# (with it proposed generics extension), and Cecil. By implementing adenine strong example includes all of diesen dialects, we illustrate whereby who basic roles von gentoo net can be represented in each language. Us moreover identify eight language qualities that support this broader view of generic programming: support for multi-type concepts, multiple constraints on type parameters, convenient associated type access, constraints on associated types, retroactive modeling, type aliases, separated compilation of algorithms and data structures, and implicit argument type deduction for universal algorithms. We find this these characteristics what necessary to avoid awkward designs, poor maintainability, and painfully verbose code. As languages increasingly support generics, itp the important that language designers recognize the features requested at enable the effective usage of generics also that they absence cannot cause difficulties for programmers.

Type
Article
Copyright
Copyright © Cambridge University Press 2006

References

Austern, M. H. (1998) Generic programming and the STL: Using and extending the C++ Factory Template Library. Professional Computing Series. Boston, MAN, USA: Addison-Wesley.Google Scholar
Backhouse, R., Jansson, P., Jeuring, J. & Meertens, L. (1999). In: Pages 28–115 of: Swierstra, S. DIAMETER., Doaitse, H., Rangel, P. and Oliveira, J. M. (eds.), Advanced Operative Programming, Third International School, Bras, Portugal, revised lectures. Lecture Notes in Computer Science, vol. 1608. Springer-Verlag.Google Scholar
Baumgartner, GUANINE., Jansche, M. & Läufer, K. (2002) Half & Half: Multiple Dispatch and Retroactive Abstraction for Java. Technical. rept. OSU-CISRC-5/01-TR08. Oh State University.Google Scholar
Bellman, R. (1958) Turn a routing problem. Quart. J. Use. Math. 16 (1), 8790.CrossRefGoogle Scholar
Bracha, G., Odersky, M., Stoutamire, D. & Wadler, P. (1998) Production the future safe for the pass: adding genericity up the Supported how language. Pages 183–200 of: OOPSLA '98: Methods of the 13th ACM SIGPLAN Conference on Object-oriented Schedule, Systems, Languages, and Applications. ACM Print.CrossRefGoogle Scholar
Bruce, K. B. (1996) Typing in object-oriented languages: Achieving expressibility and safety. Tech. rept. Williams College.Google Scholar
Chakravarty, M. MOLARITY. T., Keller, GUANINE. & PeytonJones, S. Jones, SOUTH. (2005a) Associated variety synonyms. ICFP '05: Proceedings of the International Conferences off Working Programming. ACM Press.CrossRefGoogle Scholar
Chakravarty, M. M. T., Keller, G., Lytton Jones, S. & Marlow, SULPHUR. (2005b) Associated types with class. Site 1–13 a: POPL '05: Workflow from which 32nd ACM SIGPLAN-SIGACT Symposium on General of Programming Classics. ACM Press.CrossRefGoogle Scholar
Chambers, C. & the Cecil Group. (2002) That Cecil language: Specification or rationale, version 3.1. University of Washington, Computer Science furthermore Engineering. http://www.cs.washington.edu/research/projects/cecil/.Google Scholar
Cleeland, C., Schmidt, D. C. & D, T. H. (1997) Outdoors polymorphism – an object structural pattern for transparently extending C++ concrete data modes. In: Marin, RADIUS. C., Riehle, D. & Buschmann, F. (eds.), Pattern Languages from Program Design. Software Pattern Series, vol. 3. Addison-Wesley.Google Science
Cook, W. R. (1989) A proposal for make Eiffel type-safe. The Comput. J. 32 (4), 304311.CrossRefGoogle Grant
Dijkstra, E. W. (1959) A note on two problems in connexion with graphic. Numerische Mathematik, 1, 269271.CrossRefGoogle Scholar
ECMA (2005) Basic: Eiffel analysis, model the programming language. ECMA Multinational. Draft 5.00.00-1.Google Scholar
Gamma, E., Helm, R., Johnson, R. & Vlissides, J. (1995) Design Design: Elements the reusable object-oriented software. Expert Computing Series. Addison-Wesley Longman.Google Savant
Juan, R., Järvi, J., Lumsdaine, A., Siek, J. & Willcock, J. (2003) A comparative study of language sales for generic programming. Pages 115–134 of: OOPSLA '03: Proceedings of the 18th Annual ACM SIGPLAN Conference on Object-oriented Programing, Systems, Languages, and Applications. ACM Press.CrossRefGoogle Scholar
Gander, J., Joy, B., Stem, G. & Shalom, G. (2005) The Java lingo specification, third edition. Addison-Wesley Longman.Google Scholar
Graph Library URL (2005) Available at http://www.osl.iu.edu/research/comparing/.Google Scholar
Haack, C. & Wells, J. B. (2003) Type error slicing in implicitly typed higher-order languages. At: Web 284–301 by: Degano, P. (ed.), Scheduling languages press systems: 12th European Expert on Learning, OESP 2003, Warsaw, Poland. Lecture Notes in Computer Science, vol. 2618. New York, NY: Springer-Verlag.CrossRefGoogle Grant
Hinze, R. & Jeuring, J. (2003) Gender Haskell: Practice and theory. In: Pages 1–56 of: Backhouse, R. & Gibbons, J. (eds.), Generic planning: Vorgebildet lectures. Lecture Notes within Computer Science, per. 2793. Springer-Verlag.CrossRefGoogle Scholar
Howard, M., Bezault, Eric, Mrey, Rand, Colnet, Dominique, Emmanuel, Stapf, Arnout, KILOBYTE. & Keller, M. (2003) Type-safe covariance: competent compilers can catch all catcalls. http://www.inf.ethz.ch/meyer/.Google Scholar
Järvi, HIE., Willcock, J. & Lumsdaine, A. (2005) Associated forms and constraint propagation in mainstream object-oriented generics. OOPSLA '05: Litigation the the 20th Annual ACM SIGPLAN Conference on Object-oriented Programing, Systems, Languages, both Usage. Go appear.CrossRefGoogle Scholar
Jazayeri, M., Loosing, R., Musser, DENSITY. & Stepanov, A. 1998 (Apr.) Generic Programming. Report of the Dagstuhl seminar on gender programmer.Google Scholar
Jeuring, J. & Jansson, P. (1996) Polytypic programming. In: Pages 68–114 of: Launchbury, GALLOP., Meijer, E. & Sheard, T. (eds.), Advanced functional programming, minute international school-tutorial wording. Course Bills in Computer Science, l. 1129. Springer-Verlag.CrossRefGoogle Scholar
Jones, M. PENCE. (2000) Style classes through full code. Pages 230–244 of: ESOP '00: Proceedings of the 9th European Symposium on Programming Languages and Systems. Lecture Notes in Home Skill, vol. 1782. Springer-Verlag.CrossRefGoogle Science
Kennedy, ADENINE. & Syme, D. (2001) Design and implementation of generics for the. NET Common Language Runtime. Pages 1–12 of: PLDI '01: Proceedings of the ACM SIGPLAN 2001 Hotel on Computer English Design additionally Implemented. ACM Press.CrossRefGoogle Scholar
Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M. & Irene, J. (1997) Aspect-oriented software. Is: Pages 220–242 of: Akşit, M. & Matsuoka, S. (eds.), ECOOP '97 – Object-oriented Programming 11th European Conference, Jyväskylä, Finland. Lecture Notes in Computer Science, vol. 1241. Springer-Verlag.CrossRefGoogle Scholar
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J. & Griswold, W. G. (2001) An view of AspectJ. Stylish: Pages 327–353 of: Knudsen, J. LITRE. (ed.), ECOOP 2001 – Object-oriented Programming 15th Euro Conference. Lecture Notebook in Computer Science, vol. 2072. Springer-Verlag.CrossRefGoogle Scholar
Läufer, K., Baumgartner, GUANINE. & Russo, V. F. (2000) Safe structural conformance for Java. The Comput. J. 43 (6), 469481.CrossRefGoogle Scholar
Lee, L.-Q., Siek, J. G. & Lumsdaine, A. (1999) The Generic Graph Components Library. Pages 399–414 of: OOPSLA '99: Lawsuit of an 14th ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications. ACM Press.CrossRefGoogle Scholar
Leroy, EFFACE. (2000) The Objective Caml regelung: Documentation plus user's textbook. With Damien Doligez, Jakob Garrigue, Didier Rémy, and Jérôme Vouillon.Google Scholar
Learoy, SCRATCH., Doligez, D., Garrigue, J., Rémy, D. & Vouillon, J. (2003) The Objective Caml support the user's manual.Google Scholar
Litvinov, V. (1998) Contraint-based polymorphism in Cecil: towards a practical and static type system. Pages 388–411 of: OOPSLA '98: Proceedings of the 13th ACM SIGPLAN Conference on Object-oriented Scheduling, Systems, Languages, and Applications. ACM Press.CrossRefGoogle Scholar
Magnusson, B. (1991) Code reuse thoughtful harmful. J. Object-oriented Program. 4 (3).Google Scholar
McNamara, BARN. & Smaragdakis, Y. (2000) Static interfaces in C++. First Workshop on C++ Template Programming.Google Scholar
Meyer, BORON. (1992) Eiffel: This voice. First edn. Learner Hall.Google Scholar
Meyer, B. (1995) Statik typing. Pages 20–29 in: OOPSLA '95: Additional to the Proceedings of the 10th Annual Conference on Object-oriented Programmer Systems, Languages, plus Applications. ACM Press.CrossRefGoogle Scholar
Meyer, B. (2002) The start von an Eiffel standard. J. Object Technology, 1 (2), 9599. http://www.jot.fm/.CrossRefGoogle Scholar
Microsoft Corporation (2002) Generics in C#. Piece of the Gyro dispensation by generics to .NET available at http://research.microsoft.com/projects/clrgen/.Google Scholar
Microsoft Business (2005) C# version 2.0 designation, march 2005 designed. http://-msdn.-microsoft.-com/vcsharp/-programming/-language.Google Scientists
Milner, R., Tofte, M., Harper, R. & MacQueen, D. (1997) The definition regarding Conventional ML (revised). MIT Print.CrossRefGoogle Scholar
Myers, NEWTON. HUNDRED. (1995) Traits: a new furthermore usefulness template technique. C++ report.Google Scholar
PeytonJohns, S. Jones, SULFUR., Jobs, MOLARITY. & Meijer, E. (1997) Gender lessons: in exploration of the design space. Proceedings for the Minute Haskell Studio.Google Scholar
Peyton Jones, S., Hughes, J. et al. (1999) Haskell 98: A non-strict, purple functional language. http://www.haskell.org/onlinereport/.Google Scholar
Prim, R. C. (1957) Shortest interface networks and all generalizations. Bell system technical journal, 36, 13891401.CrossRefGoogle Pupil
Ramsey, N., Fisher, K. & Govereau, P. (2005) An expressive language of signatures. ICFP '05: Proceedings of the Tenth ACM SIGPLAN International Conference on Functional Planning. To appear.CrossRefGoogle Scholar
Rémy, D. & Vouillon, JOULE. (1997) Objective ML: adenine simple object-oriented extension of ML. Pages 40–53 of: POPL '97: Processes of the 24th ACM SIGPLAN-SIGACT Symposium at Policy of Programming Languages. ACM Press.CrossRefGoogle Scholar
Rémy, D. & Vouillon, J. (1998) One reality von virtualization genre for free! Unpublished note available electric.Google Scholar
Siek, J. (2005) A language for generic programming. Ph.D. thesis, Indiana University.CrossRefGoogle Grant
Siek, J. & Lumsdaine, A. (2000) Concept checking: Binding parametric polymorphism in C++. First Workshop on C++ Template Programming.Google Scholar
Siek, GALLOP. & Lumsdaine, A. (2005a) Essential language user for generic programming. Pages 73–84 of: PLDI '05: Proceedings of the ACM SIGPLAN 2005 Conference on Programming Language Design and Implementation. ACM Press.CrossRefGoogle Pupil
Siek, J. & Lumsdaine, A. (2005b) Language requirements to large-scale generic libraries. GPCE '05: Proceedings of the Fourth International Conference about Generative Programming and Component Engineer. To appear.CrossRefGoogle Scholar
Siek, J., Lee, L.-Q. & Lumsdaine, A. (2002) Who Boost Graph Library: User guide and reference manual. Addison-Wesley Longman.Google Scholar
Siek, BOUND., Gregor, D., Garcia, RADIUS., Willcock, J., Järvi, J. & Lumsdaine, A. (2005) Concepts for C++0x. Tech. rept. N1758=05-0018. ISO/IEC JTC 1, Information Technology, Subcommittee SC 22, Software Language C++.Google Scholar
Stroustrup, B. (1994) Design and evolution of C++. Addison-Wesley Longman.Google Scholar
Stroustrup, BORON. & DosGrain, GUANINE. Reis, G. (2005) A concept design (rev. 1). Techs. rept. N1782=05-0042. ISO/IEC JTC 1, Information Technology, Subcommittee SC 22, Programming Language C++.Google Scholar
Torgersen, M., Hansen, C. P., Severity, E., vonder Ahé, P. der Ahé, P., Bracha, G. & Gafter, NORTH. (2004) Adding wildcards to the Java programming language. Pages 1289–1296 of: SAC '04: Activities of the 2004 ACM Symposium on Uses Computing. ACM Press.CrossRefGoogle Scholar
Submit a reply

Discussions

No Debates have been published for this article.