Generisk programmering, även metaprogrammering, är en programmeringsmetod där utvecklaren definierar algoritmer via datatyper [förtydliga] vilka utelämnas för att specificeras vid en senare fas i programbyggandet. Programkoden blir med detta mer flexibel och modulär genom att algoritmer kan användas och återanvändas för olika datatyper. Idén kommer ursprungligen från programspråket ML [1]. Beteckningen användes officiellt för första gången av Musser & Stepanov (1989).

Stepanov–Musser and och andra typer av generisk programmering redigera

En definition på generisk programmering finns i Musser & Stepanov (1989) och lyder,

Generic programming centers around the idea of abstracting from concrete, efficient algorithms to obtain generic algorithms that can be combined with different data representations to produce a wide variety of useful software.

Generisk programmering är en paradigm och ett angreppssätt för att strukturera mjukvara, där fundamentala krav på typer abstraheras bort från konkreta implementationen av algoritmer och datastrukturer och formaliseras som koncept (Concepts), analogt med abstraktionen av algebraiska teorier som förekommer i abstrakt algebra. Tidiga exempel på denna teknik hittas i Scheme och Ada [2] men den bäst kända är från C++ Standard Template Library (STL) [3][4] vilken utvecklade en teori för iteratorer som används för att skilja sekventiella datastrukturer från de algoritmer som används för att bearbeta dem.

Programspråket C++ utvecklare Bjarne Stroustrup noterar,

Following Stepanov, we can define generic programming without mentioning language features: Lift algorithms and data structures from concrete examples to their most general and abstract form.

Programmeringsspråk redigera

Det går att använda generisk programmering i en mängd olika programmeringsspråk. Nedan listas de mest välkända.

Källor redigera

  1. ^ Lee, Kent D. (15 December 2008). Programming Languages: An Active Learning Approach. Springer Science & Business Media. sid. 9–10. ISBN 978-0-387-79422-8. https://books.google.com/books?id=OuW5dC2O99AC&pg=PA9 
  2. ^ Musser, David R.; Stepanov, Alexander A.. ”A library of generic algorithms in Ada”. Proceedings of the 1987 annual ACM SIGAda international conference on Ada: sid. 216–225. http://dl.acm.org/citation.cfm?doid=317500.317529. 
  3. ^ Alexander Stepanov and Meng Lee: The Standard Template Library. HP Laboratories Technical Report 95-11(R.1), 14 november 1995
  4. ^ Matthew H. Austern: Generic programming and the STL: using and extending the C++ Standard Template Library. Addison-Wesley Longman Publishing Co., Inc. Boston, MA, USA 1998

Externa länkar redigera