Obecný typ

V informatice jsou generické typy datové typy s možností zadání parametrů typu. Jeden také hovoří o parametrickém polymorfismu .

Obecný typ umožňuje vytvářet datové typy, které jsou abstraktní z podkladových typů. Takže lze stejným způsobem naprogramovat seznam čísel, seznam znaků a seznam dat; H. algoritmy pro vkládání, vyhledávání a mazání by vždy běžely stejně. Je proto žádoucí implementovat seznam nezávisle na těchto typech.

Například v Javě by byl obecný seznam definován takto:

 List<T>

Zde znamená List<T> obecný typ a Tnazývá se parametr typu . Generické typy se nacházejí ve všech programovacích jazyků, které v paradigmatu z generického programování podpory.

V programovacích jazycích existují v zásadě dva přístupy k podpoře obecných typů. Jedním z nich je, že stejný kód se používá GenerischerTyp<T>pro všechna Tsa používá specifické vlastnosti prostřednictvím dynamického propojení metod T. Jiný způsob u. A. C ++ je především o používání šablon . Parametr typu je v době kompilace nahrazen přímo konkrétním typem. Pokud pro obecný typ existuje několik různých parametrů typu, vytvoří se v C ++ také několik tříd.

S .NET , Microsoft má střední cestu spojit výhody obou metod: Pro všechny referenční typy jako parametry typu, obecný třída používá stejný nativní kód , protože vnitřní reprezentace (jednoduchý odkaz ) všech referenční typy je stejná. Když používáte typy hodnot jako parametry typu, vytvoří se pro každý typ hodnoty za běhu při prvním použití samostatná cesta k nativnímu kódu.

Obecné typy v různých programovacích jazycích

  • C ++ implementuje obecné typy pomocí šablon, např. B. Šablony tříd.
  • Obecné programování v Javě
  • C # a další jazyky .NET nabízejí generické verze od .NET 2.0
  • V programovacím jazyce Ada se k parametrizaci balíků používají obecné typy.
  • Delphi nabízí podporu pro obecné typy od Delphi 2009, Free Pascal podporuje obecné třídy od verze 2.2.
  • Programovací jazyk Haxe nabízí generické typy pro Flash, JavaScript a spouštění na straně serveru (všechny jsou tři oblasti, ve kterých jinak generika není možná)
  • Haskell nabízí velmi výkonný systém