Generic programming (original) (raw)
Základní myšlenkou, která se skrývá za pojmem generické programování, je rozdělení kódu programu na algoritmus a datové typy takovým způsobem, aby bylo možné zápis kódu algoritmu chápat jako obecný, bez ohledu nad jakými datovými typy pracuje. Konkrétní kód algoritmu se z něj stává dosazením datového typu. U kompilovaných jazyků dochází k rozvinutí kódu v době překladu. Typickým příkladem jazyka, který podporuje tuto formu generického programování, je jazyk C++ a D. Mechanismem, který zde generické programování umožňuje, jsou takzvané šablony (templates).
Property | Value |
---|---|
dbo:abstract | La programació genèrica és un tipus de programació que està molt més centrada en els algoritmes que en les dades. La idea d'aquesta forma de programar pretén generalitzar les funcions utilitzades per utilitzar-se en més d'una ocasió. Això s'aconsegueix parametritzant el màxim possible el desenvolupament del programa i expressar-ho o retornar-ho de la forma més simple possible, evitant detalls concrets. La biblioteca de funcions aconseguida amb aquesta manera de programar permet que aquestes funcions serveixin per més programes dels que, altres és concretes, podrien ser útils; i que canviant poques coses, s'aconsegueixi realitzar diferents accions. A mode d'exemple, molt simple, la idea en principi seria aquesta: if (usuari == "teunom") missatge = "Ets teunom";else missatge = "No ets teunom";if (usuari == "altrenom") missatge = "Ets altrenom";else missatge = "No ets altrenom"; Si tenim un codi com l'anterior, podem realitzar-lo amb programació genèrica d'aquesta manera: void saberNom(string nom){ if (usuari == nom) missatge = "Ets " + usuari; else missatge = "No ets " + usuari;}saberNom(teuNom); // Podem utilitzar aquesta crida per qualsevol nom. (ca) Základní myšlenkou, která se skrývá za pojmem generické programování, je rozdělení kódu programu na algoritmus a datové typy takovým způsobem, aby bylo možné zápis kódu algoritmu chápat jako obecný, bez ohledu nad jakými datovými typy pracuje. Konkrétní kód algoritmu se z něj stává dosazením datového typu. U kompilovaných jazyků dochází k rozvinutí kódu v době překladu. Typickým příkladem jazyka, který podporuje tuto formu generického programování, je jazyk C++ a D. Mechanismem, který zde generické programování umožňuje, jsou takzvané šablony (templates). (cs) Generische Programmierung ist ein Verfahren zur Entwicklung wiederverwendbarer Software-Bibliotheken. Dabei werden Funktionen möglichst allgemein entworfen, um sie für unterschiedliche Datentypen und Datenstrukturen verwenden zu können. (de) Generic programming is a style of computer programming in which algorithms are written in terms of types to-be-specified-later that are then instantiated when needed for specific types provided as parameters. This approach, pioneered by the ML programming language in 1973, permits writing common functions or types that differ only in the set of types on which they operate when used, thus reducing duplication. Such software entities are known as generics in Ada, C#, Delphi, Eiffel, F#, Java, Nim, Python, Go, Rust, Swift, TypeScript and Visual Basic .NET. They are known as parametric polymorphism in ML, Scala, Julia, and Haskell (the Haskell community also uses the term "generic" for a related but somewhat different concept); templates in C++ and D; and parameterized types in the influential 1994 book Design Patterns. The term "generic programming" was originally coined by David Musser and Alexander Stepanov in a more specific sense than the above, to describe a programming paradigm whereby fundamental requirements on types are abstracted from across concrete examples of algorithms and data structures and formalized as concepts, with generic functions implemented in terms of these concepts, typically using language genericity mechanisms as described above. (en) La programación genérica es un tipo de programación que está mucho más centrada en los algoritmos que en los datos. La idea de esta forma de programar pretende generalizar las funciones utilizadas para que puedan usarse en más de una ocasión. Esto se consigue parametrizando lo máximo posible el desarrollo del programa y expresados o devueltos de la forma más simple posible, evitando detalles concretos. La biblioteca de funciones conseguida con esta manera de programa permite que esas funciones puedan servir para más programas de los que, otras más concretas, podrían ser útiles; y también aplicando pocos cambios, conseguir que realice diferentes acciones. (es) En programmation, la généricité (ou programmation générique), consiste à définir des algorithmes identiques opérant sur des données de types différents. On définit de cette façon des procédures ou des types entiers génériques. On pourrait ainsi programmer une pile, ou une procédure qui prend l'élément supérieur de la pile, indépendamment du type de données contenues. C'est donc une forme de polymorphisme, le « polymorphisme de type » dit aussi « paramétrage de type » : en effet, le type de donnée général (abstrait) apparaît comme un paramètre des algorithmes définis, avec la particularité que ce paramètre-là est un type. C'est un concept important pour un langage de haut niveau car il permet d'écrire des algorithmes généraux opérant sur toute une série de types : la généricité augmente donc le niveau d'abstraction des programmes écrits dans un langage qui possède cette fonctionnalité. Divers mécanismes ont été conçus pour permettre la programmation générique. (fr) 제네릭 프로그래밍(영어: generic programming)은 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 프로그래밍 방식이다. 제네릭 프로그래밍은 여러 가지 유용한 소프트웨어 컴포넌트들을 체계적으로 융합하는 방법을 연구하는 것으로 그 목적은 알고리즘, 데이터 구조, 메모리 할당 메커니즘, 그리고 기타 여러 소프트웨어적인 장치들을 발전시켜 이들의 재사용성, 모듈화, 사용 편이성을 보다 높은 수준으로 끌어올리고자 하는 것이다. (ko) ジェネリック(総称あるいは汎用)プログラミング(英: generic programming)は、具体的なデータ型に直接依存しない、抽象的かつ汎用的なコード記述を可能にするコンピュータプログラミング手法である。 (ja) Genericiteit of generics is een voorziening voor programmeertalen die generiek programmeren toestaat. Dit betekent dat algoritmes kunnen worden geschreven in een bepaalde syntaxis waarbij de algoritmes adaptief zijn maar tevens nog door de compiler geïnstantieerd kunnen worden. Zo kunnen algoritmes generiek worden geschreven zonder snelheidsverlies. Een sorteeralgoritme hoeft zich met behulp van generiek programmeren niet bezig te houden met wat voor datatype het precies sorteert, maar alleen hoe het dat doet. Generiek programmeren ligt dicht tegen meta-programmeren aan, een techniek waarbij aan de hand van bepaalde broncode weer nieuwe broncode wordt geprogrammeerd, die daarna wordt gecompileerd. Bij generiek programmeren gaat het echter om een syntactische en semantische uitbreiding in de programmeertaal en wordt er niet direct 'nieuwe' broncode gegenereerd. Genericiteit werd rond 1970 onderdeel van een aantal programmeertalen, zoals , Ada. Later werd de techniek ook onderdeel van veel andere object-georiënteerde talen, zoals C++, C#, Eiffel en Java (vanaf versie 1.5). (nl) Programowanie uogólnione (rodzajowe, generyczne, z ang. generic programming) – jeden z paradygmatów programowania. Programowanie uogólnione pozwala na pisanie kodu programu, w językach typowanych statycznie, bez wcześniejszej znajomości typów danych, na których kod ten będzie pracował. Obecnie wiele języków programowania ma możliwość wykorzystywania uogólnień, np. C++, D, Java oraz Haskell. Programowanie uogólnione ma bliski związek z metaprogramowaniem, w przeciwieństwie jednak do niego nie wymaga od programisty generowania kodu w sposób jawny. Programowanie uogólnione umożliwia w pewnym sensie językom statycznie typowanym polimorfizm typów. W językach C++ czy D programowanie uogólnione umożliwiają szablony. W językach Java, C#, Visual Basic .NET, Haskell, Eiffel, TypeScript służą do tego typy generyczne (lub inaczej uogólnione). (pl) Programação genérica é um paradigma de programação no qual os algoritmos são escritos em uma gramática estendida de forma a adaptar-se através da especificação das partes variáveis que são definidas na instância do algoritmo. Especificamente, a gramática estendida eleva um elemento não variável ou uma construção implícita na gramática base para uma variável ou constante, permitindo a utilização do código genérico. É diferente da forma normal de programação na medida em que invoca de certa forma as facilidades de metaprogramação da linguagem. Como isso ocorre em uma extensão da linguagem, novas semânticas são introduzidas e a linguagem é enriquecida no processo. É relacionada com a metaprogramação, mas não envolve a geração de código fonte, pelo menos visivelmente ao programador. É diferente também da programação por macros, já que esta refere-se somente a busca e substituição de termos, não fazendo parte da gramática da linguagem, implementada somente na fase de pré-processamento do código. Para efeitos práticos, o paradigma permite que um parâmetro assuma diferentes tipos de dados desde que certas regras sejam mantidas, como sub-tipos e assinaturas. Por exemplo, para criar uma lista usando programação genérica, uma possível declaração seria List, no qual T é o tipo de dado. Para instanciar, poderia-se usar List ou List, já que o conceito de lista independe do tipo utilizado. Entre linguagens orientadas a objeto, C++, Linguagem D, , Eiffel e versões de Java (1.5 e acima) fornecem o paradigma genérico. Visual Basic .NET, C# e Delphi.Net começaram a fornecer o paradigma a partir do .NET 2.0. Muito antes de todas as linguagens mencionadas, programação genérica já havia sido implementada na década de 1970 em linguagens como CLU e Ada. Mas somente o conceito de templates do C++ que popularizou o conceito. A técnica permite que algoritmos sejam escritos independente dos tipos de dados utilizados. Os autores do conceituado livro de 1995 Design Patterns referem-se à programação genérica como tipos parametrizados, o que permite que um tipo possa ser definido sem especificar todos os outros tipos que ele utilizada. Os autores ainda descrevem que tal técnica é muito poderosa, especialmente quando combinada com o padrão Delegar. (pt) Generisk programmering, även metaprogrammering, är en programmeringsmetod där utvecklaren definierar algoritmer via datatyper 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 . Beteckningen användes officiellt för första gången av ). (sv) Обобщённое программирование (англ. generic programming) — парадигма программирования, заключающаяся в таком описании данных и алгоритмов, которое можно применять к различным типам данных, не меняя само это описание. В том или ином виде поддерживается разными языками программирования. Возможности обобщённого программирования впервые появились в виде дженериков (обобщённых функций) в 1970-х годах в языках Клу и Ада, затем - в виде параметрического полиморфизма в ML и его потомках, а затем - во многих объектно-ориентированных языках, таких как C++, Python, Java, Object Pascal, D, Eiffel, языках для платформы .NET и других. (ru) 泛型程序设计(英文:generic programming)是程序设计语言的一种风格或范式。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。各种程序语言和其编译器、运行环境对泛型的支持均不同。Ada、Delphi、Eiffel、Java、C#、F#、Swift 和 Visual Basic .NET 称之为泛型(generics);ML、Scala 和 Haskell 称之为参数多态();C++ 和 D称之为模板。具有广泛影响的1994年版的《Design Patterns》一书称之为参数化类型(parameterized type)。 (zh) Узагальнене програмування (англ. generic programming) — парадигма програмування, що полягає в такому описі даних і алгоритмів, який можна застосовувати до різних типів даних, не змінюючи сам опис. У тому чи іншому вигляді підтримується різними мовами програмування. Можливості узагальненого програмування вперше з'явилися в 1970-х роках у мовах CLU та Ada, а потім у багатьох об'єктно-орієнтованих мовах, таких як C++, Java, D і мовах для платформи .NET. Термін "Узагальнене програмування" вперше було введене Девідом Массером і Олександром Степановим , які описували парадигму програмування, яка заснована на тому, що типи даних і структури даних є абстрактними і не впливають на конкретну реалізацію алгоритмів, а загальні функції реалізовані з використанням узагальнених формалізованих типів. (uk) |
dbo:wikiPageExternalLink | https://codeplex.com/Wiki/View.aspx%3FProjectName=genericsnet https://edn.embarcadero.com/article/38757 https://haskell.org/onlinereport/index.html https://sjrd.developpez.com/delphi/tutoriel/generics/ https://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html https://www.cs.uu.nl/wiki/pub/GP/CourseLiterature/afp08.pdf https://www.digitalmars.com/d/templates-revisited.html https://www.drbob42.com/examines/examinA4.htm https://www.elegantcoding.com/2012/04/what-is-generic-programming.html https://www.felix-colibri.com/papers/oop_components/delphi_generics_tutorial/delphi_generics_tutorial.html https://www.generic-haskell.org/ https://www.research.att.com/~bs/hopl-almost-final.pdf https://www.stepanovpapers.com/ https://msdn.microsoft.com/msdnmag/issues/03/09/NET/ https://msdn.microsoft.com/msdnmag/issues/03/10/NET/ https://www.oracle.com/technetwork/java/javase/generics-tutorial-159168.pdf https://www.cs.ox.ac.uk/ralf.hinze/publications/Masses.pdf https://www.freepascal.org/docs-html/ref/refch8.html https://www.cs.uu.nl/research/projects/generic-haskell/compiler/diamond/GHUsersGuide.pdf https://lcsd05.cs.tamu.edu https://www.generic-programming.org https://web.archive.org/web/20041207211740/https:/www.cs.vu.nl/boilerplate/ https://web.archive.org/web/20050404015900/https:/www.cs.uu.nl/~andres/ExploringGH.pdf https://web.archive.org/web/20090131211440/https:/blogs.teamb.com/craigstuntz/2008/08/29/37832/ https://web.archive.org/web/20190828045251/https:/lcsd05.cs.tamu.edu/ https://www.ecma-international.org/publications/standards/Ecma-367.htm https://archive.org/details/designpatternsel00gamm |
dbo:wikiPageID | 105837 (xsd:integer) |
dbo:wikiPageLength | 62957 (xsd:nonNegativeInteger) |
dbo:wikiPageRevisionID | 1123783081 (xsd:integer) |
dbo:wikiPageWikiLink | dbr:Programming_paradigm dbr:Python_(programming_language) dbr:Scala_(programming_language) dbr:Scheme_(programming_language) dbr:Binary_tree dbr:Bjarne_Stroustrup dbr:Boxing_(computer_science) dbr:Delphi_(programming_language) dbr:Design_Patterns_(book) dbr:Algorithm dbc:Generic_programming dbr:Julia_(programming_language) dbr:Permutation dbr:Utrecht_University dbr:VHDL dbr:Verilog dbr:Visual_Basic_.NET dbr:David_Musser dbr:Duplicate_code dbr:Inline_function dbr:International_Conference_on_Functional_Programming dbr:Preprocessor dbr:.NET_Framework dbr:Compiler dbr:Complex_number dbr:Concepts_(C++) dbr:Analysis_of_algorithms dbr:Run_time_(program_lifecycle_phase) dbr:Rust_(programming_language) dbr:Generic_function dbr:Object-based_programming dbr:Object-oriented_programming dbr:Clean_(programming_language) dbr:Alexander_Stepanov dbr:Eiffel_(programming_language) dbr:Free_Pascal dbr:Function_(computer_science) dbr:Go_(programming_language) dbr:Concept_(generic_programming) dbr:ML_(programming_language) dbr:Boilerplate_code dbr:Signature_(computer_science) dbr:Simon_Peyton_Jones dbr:Standard_ML dbr:Standard_Template_Library dbr:Standard_template_library dbr:Compile-time_function_execution dbr:Compile_time dbr:Computer_programming dbr:Functional_programming dbr:Hardware_register dbr:Operator_overloading dbr:Parameter_(computer_programming) dbr:Parametric_polymorphism dbr:Polymorphism_(computer_science) dbr:Partial_template_specialization dbr:Turing_complete dbr:Banach_space dbr:C++ dbr:C_(programming_language) dbr:C_Sharp_(programming_language) dbr:TypeScript dbr:Type_conversion dbr:Domain-specific_language dbr:Duck_typing dbr:D_programming_language dbr:Linked_list dbr:Linker_(computing) dbr:Ada_(programming_language) dbr:D_(programming_language) dbr:Data_type dbr:F_Sharp_(programming_language) dbr:Forth_(programming_language) dbc:Articles_with_example_C_Sharp_code dbr:Nim_(programming_language) dbr:Partial_evaluation dbr:Iterator dbr:Kind_(type_theory) dbr:Collection_class dbr:Type_class dbr:Type_erasure dbr:Range_(computer_programming) dbr:Reification_(computer_science) dbr:Ring_(mathematics) dbr:Haskell_(programming_language) dbr:Heap_(programming) dbr:Ada_programming_language dbr:Attribute_(computing) dbr:Java_(programming_language) dbr:Covariance_and_contravariance_(computer_science) dbr:Template_(C++) dbr:Array_data_type dbr:Association_for_Computing_Machinery dbr:Abstract_algebra dbr:Swift_(programming_language) dbr:Code_bloat dbr:Java_Platform,_Standard_Edition dbr:Template_metaprogramming dbr:Modular_programming dbr:Digital_Equipment_Corporation dbr:Associative_array dbr:Template_(programming) dbr:Netherlands dbr:OCaml dbr:CLU_programming_language dbr:Macro_(computer_science) dbr:Type_safety dbr:Type_inference dbr:Extensible_programming dbr:Structural_type_system dbr:Subtyping dbr:Library_(computer_science) dbr:SIGPLAN dbr:Struct_(C_programming_language) dbr:Trellis-Owl dbr:BETA_programming_language dbr:Chrome_programming_language dbr:Protocol_(computer_science) dbr:Reflection_(computer_science) dbr:Compile-time dbr:Compile-time_polymorphism dbr:Type_(computer_science) dbr:Type_polymorphism dbr:Type_safe dbr:Wikibooks:Ada_Programming/Generics dbr:Ralf_Lämmel |
dbp:author | Alexander Stepanov (en) Bjarne Stroustrup (en) Musser, David R.; Stepanov, Alexander A. (en) |
dbp:date | 2019-08-28 (xsd:date) |
dbp:source | An Interview with A. Stepanov (en) Generic Programming (en) Short History of STL (en) Evolving a language in and for the real world: C++ 1991-2006 (en) |
dbp:text | 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. (en) Generic programming is about abstracting and classifying algorithms and data structures. It gets its inspiration from Knuth and not from type theory. Its goal is the incremental construction of systematic catalogs of useful, efficient and abstract algorithms and data structures. Such an undertaking is still a dream. (en) 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. (en) I believe that iterator theories are as central to Computer Science as theories of rings or Banach spaces are central to Mathematics. (en) |
dbp:url | https://web.archive.org/web/20190828045251/https:/lcsd05.cs.tamu.edu/ |
dbp:wikiPageUsesTemplate | dbt:Programming_paradigms dbt:C-lang dbt:Authority_control dbt:Citation_needed dbt:Cite_book dbt:Cite_conference dbt:Distinguish dbt:Em dbt:Harvtxt dbt:ISBN dbt:Main_article dbt:Quote dbt:Refbegin dbt:Refend dbt:Reflist dbt:Sfn dbt:Short_description dbt:Slink dbt:Use_dmy_dates dbt:Webarchive dbt:Data_types |
dct:subject | dbc:Generic_programming dbc:Articles_with_example_C_Sharp_code |
gold:hypernym | dbr:Style |
rdf:type | owl:Thing yago:Abstraction100002137 yago:ArtificialLanguage106894544 yago:Communication100033020 yago:GrammaticalRelation113796779 yago:Inflection113803782 yago:Language106282651 yago:LinguisticRelation113797142 yago:Paradigm113804375 yago:ProgrammingLanguage106898352 yago:Relation100031921 dbo:MusicGenre yago:WikicatProgrammingLanguages yago:WikicatProgrammingParadigms |
rdfs:comment | Základní myšlenkou, která se skrývá za pojmem generické programování, je rozdělení kódu programu na algoritmus a datové typy takovým způsobem, aby bylo možné zápis kódu algoritmu chápat jako obecný, bez ohledu nad jakými datovými typy pracuje. Konkrétní kód algoritmu se z něj stává dosazením datového typu. U kompilovaných jazyků dochází k rozvinutí kódu v době překladu. Typickým příkladem jazyka, který podporuje tuto formu generického programování, je jazyk C++ a D. Mechanismem, který zde generické programování umožňuje, jsou takzvané šablony (templates). (cs) Generische Programmierung ist ein Verfahren zur Entwicklung wiederverwendbarer Software-Bibliotheken. Dabei werden Funktionen möglichst allgemein entworfen, um sie für unterschiedliche Datentypen und Datenstrukturen verwenden zu können. (de) 제네릭 프로그래밍(영어: generic programming)은 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 프로그래밍 방식이다. 제네릭 프로그래밍은 여러 가지 유용한 소프트웨어 컴포넌트들을 체계적으로 융합하는 방법을 연구하는 것으로 그 목적은 알고리즘, 데이터 구조, 메모리 할당 메커니즘, 그리고 기타 여러 소프트웨어적인 장치들을 발전시켜 이들의 재사용성, 모듈화, 사용 편이성을 보다 높은 수준으로 끌어올리고자 하는 것이다. (ko) ジェネリック(総称あるいは汎用)プログラミング(英: generic programming)は、具体的なデータ型に直接依存しない、抽象的かつ汎用的なコード記述を可能にするコンピュータプログラミング手法である。 (ja) Generisk programmering, även metaprogrammering, är en programmeringsmetod där utvecklaren definierar algoritmer via datatyper 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 . Beteckningen användes officiellt för första gången av ). (sv) Обобщённое программирование (англ. generic programming) — парадигма программирования, заключающаяся в таком описании данных и алгоритмов, которое можно применять к различным типам данных, не меняя само это описание. В том или ином виде поддерживается разными языками программирования. Возможности обобщённого программирования впервые появились в виде дженериков (обобщённых функций) в 1970-х годах в языках Клу и Ада, затем - в виде параметрического полиморфизма в ML и его потомках, а затем - во многих объектно-ориентированных языках, таких как C++, Python, Java, Object Pascal, D, Eiffel, языках для платформы .NET и других. (ru) 泛型程序设计(英文:generic programming)是程序设计语言的一种风格或范式。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。各种程序语言和其编译器、运行环境对泛型的支持均不同。Ada、Delphi、Eiffel、Java、C#、F#、Swift 和 Visual Basic .NET 称之为泛型(generics);ML、Scala 和 Haskell 称之为参数多态();C++ 和 D称之为模板。具有广泛影响的1994年版的《Design Patterns》一书称之为参数化类型(parameterized type)。 (zh) La programació genèrica és un tipus de programació que està molt més centrada en els algoritmes que en les dades. La idea d'aquesta forma de programar pretén generalitzar les funcions utilitzades per utilitzar-se en més d'una ocasió. Això s'aconsegueix parametritzant el màxim possible el desenvolupament del programa i expressar-ho o retornar-ho de la forma més simple possible, evitant detalls concrets. A mode d'exemple, molt simple, la idea en principi seria aquesta: Si tenim un codi com l'anterior, podem realitzar-lo amb programació genèrica d'aquesta manera: (ca) Generic programming is a style of computer programming in which algorithms are written in terms of types to-be-specified-later that are then instantiated when needed for specific types provided as parameters. This approach, pioneered by the ML programming language in 1973, permits writing common functions or types that differ only in the set of types on which they operate when used, thus reducing duplication. Such software entities are known as generics in Ada, C#, Delphi, Eiffel, F#, Java, Nim, Python, Go, Rust, Swift, TypeScript and Visual Basic .NET. They are known as parametric polymorphism in ML, Scala, Julia, and Haskell (the Haskell community also uses the term "generic" for a related but somewhat different concept); templates in C++ and D; and parameterized types in the influential (en) La programación genérica es un tipo de programación que está mucho más centrada en los algoritmos que en los datos. La idea de esta forma de programar pretende generalizar las funciones utilizadas para que puedan usarse en más de una ocasión. Esto se consigue parametrizando lo máximo posible el desarrollo del programa y expresados o devueltos de la forma más simple posible, evitando detalles concretos. (es) En programmation, la généricité (ou programmation générique), consiste à définir des algorithmes identiques opérant sur des données de types différents. On définit de cette façon des procédures ou des types entiers génériques. On pourrait ainsi programmer une pile, ou une procédure qui prend l'élément supérieur de la pile, indépendamment du type de données contenues. (fr) Genericiteit of generics is een voorziening voor programmeertalen die generiek programmeren toestaat. Dit betekent dat algoritmes kunnen worden geschreven in een bepaalde syntaxis waarbij de algoritmes adaptief zijn maar tevens nog door de compiler geïnstantieerd kunnen worden. Zo kunnen algoritmes generiek worden geschreven zonder snelheidsverlies. Een sorteeralgoritme hoeft zich met behulp van generiek programmeren niet bezig te houden met wat voor datatype het precies sorteert, maar alleen hoe het dat doet. (nl) Programowanie uogólnione (rodzajowe, generyczne, z ang. generic programming) – jeden z paradygmatów programowania. Programowanie uogólnione pozwala na pisanie kodu programu, w językach typowanych statycznie, bez wcześniejszej znajomości typów danych, na których kod ten będzie pracował. Obecnie wiele języków programowania ma możliwość wykorzystywania uogólnień, np. C++, D, Java oraz Haskell. Programowanie uogólnione ma bliski związek z metaprogramowaniem, w przeciwieństwie jednak do niego nie wymaga od programisty generowania kodu w sposób jawny. (pl) Programação genérica é um paradigma de programação no qual os algoritmos são escritos em uma gramática estendida de forma a adaptar-se através da especificação das partes variáveis que são definidas na instância do algoritmo. Especificamente, a gramática estendida eleva um elemento não variável ou uma construção implícita na gramática base para uma variável ou constante, permitindo a utilização do código genérico. Mas somente o conceito de templates do C++ que popularizou o conceito. A técnica permite que algoritmos sejam escritos independente dos tipos de dados utilizados. (pt) Узагальнене програмування (англ. generic programming) — парадигма програмування, що полягає в такому описі даних і алгоритмів, який можна застосовувати до різних типів даних, не змінюючи сам опис. У тому чи іншому вигляді підтримується різними мовами програмування. Можливості узагальненого програмування вперше з'явилися в 1970-х роках у мовах CLU та Ada, а потім у багатьох об'єктно-орієнтованих мовах, таких як C++, Java, D і мовах для платформи .NET. (uk) |
rdfs:label | Generic programming (en) Programació genèrica (ca) Generické programování (cs) Generische Programmierung (de) Programación genérica (es) Généricité (fr) ジェネリックプログラミング (ja) 제네릭 프로그래밍 (ko) Genericiteit (nl) Programowanie uogólnione (pl) Programação genérica (pt) Обобщённое программирование (ru) Generisk programmering (sv) Узагальнене програмування (uk) 泛型编程 (zh) |
owl:differentFrom | dbr:Genetic_programming |
owl:sameAs | freebase:Generic programming yago-res:Generic programming http://d-nb.info/gnd/4431718-9 wikidata:Generic programming dbpedia-be:Generic programming dbpedia-bg:Generic programming dbpedia-ca:Generic programming dbpedia-cs:Generic programming dbpedia-de:Generic programming dbpedia-es:Generic programming dbpedia-et:Generic programming dbpedia-fa:Generic programming dbpedia-fi:Generic programming dbpedia-fr:Generic programming dbpedia-he:Generic programming dbpedia-hr:Generic programming dbpedia-ja:Generic programming dbpedia-ko:Generic programming dbpedia-nl:Generic programming dbpedia-no:Generic programming dbpedia-pl:Generic programming dbpedia-pt:Generic programming dbpedia-ru:Generic programming dbpedia-sh:Generic programming dbpedia-sl:Generic programming dbpedia-sr:Generic programming dbpedia-sv:Generic programming dbpedia-uk:Generic programming dbpedia-vi:Generic programming dbpedia-zh:Generic programming https://global.dbpedia.org/id/8oDx |
prov:wasDerivedFrom | wikipedia-en:Generic_programming?oldid=1123783081&ns=0 |
foaf:isPrimaryTopicOf | wikipedia-en:Generic_programming |
is dbo:wikiPageDisambiguates of | dbr:Generic |
is dbo:wikiPageRedirects of | dbr:Comparison_of_programming_languages_(generics) dbr:Generic_class dbr:Generic_datatype dbr:Generic_types dbr:Generics_in_Ada dbr:Template_specialization dbr:Template_class dbr:Template_specialisation dbr:Parameterized_class dbr:Parameterized_type dbr:Generic_algorithm dbr:Generic_type dbr:Genericity dbr:Instantiation_of_template |
is dbo:wikiPageWikiLink of | dbr:Cap'n_Proto dbr:Sather dbr:Scala_(programming_language) dbr:List_of_computer_scientists dbr:Mock_object dbr:Monomorphization dbr:Basic_Linear_Algebra_Subprograms dbr:Binary_search_algorithm dbr:Bjarne_Stroustrup dbr:Boost_(C++_libraries) dbr:Boxing_(computer_science) dbr:Dependent_type dbr:Hopsan dbr:Hy dbr:List_of_C-family_programming_languages dbr:Unreal_Engine dbr:Vala_(programming_language) dbr:C++_Standard_Library dbr:Visual_Basic_.NET dbr:Visual_Prolog dbr:David_Musser dbr:Decltype dbr:Design_Patterns dbr:Don_Syme dbr:Index_of_object-oriented_programming_articles dbr:Intelligent_code_completion dbr:Interface_(Java) dbr:List_of_numerical_libraries dbr:List_of_programming_language_researchers dbr:List_of_programming_languages_by_type dbr:Object-Oriented_Software_Construction dbr:Singly_rooted_hierarchy dbr:.NET_Framework_version_history dbr:Common_Lisp dbr:Comparison_of_C_Sharp_and_Java dbr:Comparison_of_Java_and_C++ dbr:Comparison_of_programming_languages_(generics) dbr:Rust_(programming_language) dbr:Generalized_algebraic_data_type dbr:Generic_Image_Library dbr:Generics_in_Java dbr:Object-oriented_programming dbr:One_Definition_Rule dbr:Typename dbr:Cobra_(programming_language) dbr:Alexander_Stepanov dbr:Eiffel_(programming_language) dbr:Embeddable_Common_Lisp dbr:Free_Pascal dbr:GNU_Compiler_Collection dbr:Generic_class dbr:Generic_datatype dbr:Generic_types dbr:Generics_in_Ada dbr:Glasgow_Haskell_Compiler dbr:Go_(programming_language) dbr:Bounded_quantification dbr:Mocl dbr:Modula-2 dbr:Modula-3 dbr:Nana_(C++_library) dbr:Concept_(generic_programming) dbr:Concept_map dbr:Concurrency_and_Coordination_Runtime dbr:Const_(computer_programming) dbr:Constructor_(object-oriented_programming) dbr:Container_(abstract_data_type) dbr:Container_(type_theory) dbr:Control_table dbr:Criticism_of_Java dbr:Operator-precedence_parser dbr:Angular_(web_framework) dbr:LispWorks dbr:Lola_(computing) dbr:ML_(programming_language) dbr:Mama_(software) dbr:Smart_Pascal dbr:Standard_ML dbr:Standard_Template_Library dbr:Comparison_of_linear_algebra_libraries dbr:Comparison_of_multi-paradigm_programming_languages dbr:Comparison_of_programming_languages dbr:Comparison_of_programming_languages_(associative_array) dbr:Component-based_software_engineering dbr:Computer_program dbr:Zig_(programming_language) dbr:Embedded_C++ dbr:Function_object dbr:Parameter_(computer_programming) dbr:Parametric_polymorphism dbr:Template_specialization dbr:Microsoft_and_open_source dbr:C++ dbr:C++11 dbr:CLU_(programming_language) dbr:COBOL dbr:C_(programming_language) dbr:C_Sharp_(programming_language) dbr:C_Sharp_syntax dbr:Cecil_(programming_language) dbr:TypeScript dbr:Type_system dbr:Windows_Runtime dbr:Duck_typing dbr:Joins_(concurrency_library) dbr:Link_time dbr:Abbreviated_Test_Language_for_All_Systems dbr:Ada_(programming_language) dbr:Allegro_Common_Lisp dbr:D_(programming_language) dbr:Dart_(programming_language) dbr:Dune_(software) dbr:EC_(programming_language) dbr:F_Sharp_(programming_language) dbr:Fantom_(programming_language) dbr:Fortran dbr:Nim_(programming_language) dbr:PascalABC.NET dbr:Pascal_(programming_language) dbr:History_of_programming_languages dbr:History_of_the_Standard_Template_Library dbr:Iterator dbr:Type_erasure dbr:Generic dbr:Project_Valhalla_(Java_language) dbr:Reusability dbr:Haskell dbr:Haxe dbr:JS++ dbr:Java_(programming_language) dbr:Java_(software_platform) dbr:Template_(C++) dbr:AssemblyScript dbr:Abstract_type dbr:Abstraction_(computer_science) dbr:Chapel_(programming_language) dbr:Jeremy_Gibbons dbr:Swift_(programming_language) dbr:SystemVerilog dbr:Code_reuse dbr:Java_Community_Process dbr:Java_syntax dbr:Template_metaprogramming dbr:Trait_(computer_programming) dbr:Zipper_(data_structure) dbr:Mixin dbr:Auto_ptr dbr:C++/CX dbr:C_Sharp_2.0 dbr:C_Sharp_4.0 dbr:Philip_Wadler dbr:Pizza_(programming_language) dbr:Speedcoding dbr:Spice_Lisp dbr:Template_class dbr:Template_specialisation dbr:Insight_Segmentation_and_Registration_Toolkit dbr:Kotlin_(programming_language) dbr:Metaprogramming dbr:Nemerle dbr:Object_Pascal dbr:Objective-C dbr:OpenCL dbr:Raku_(programming_language) dbr:Seed7 dbr:Semantic_Web_Services_Language dbr:Matrix_Template_Library dbr:Type_safety dbr:Sort_(C++) dbr:Unit_type dbr:Expression_problem dbr:Programming_language dbr:Subtyping dbr:Managed_Extensions_for_C++ dbr:Standard_Libraries_(CLI) dbr:Outline_of_computer_programming dbr:Parameterized_class dbr:Uniform_Function_Call_Syntax dbr:TypeParameter dbr:XobotOS dbr:Parameterized_type dbr:Generic_algorithm dbr:Generic_type dbr:Genericity dbr:Instantiation_of_template |
is dbp:paradigm of | dbr:Hy dbr:Unreal_Engine dbr:Common_Lisp dbr:Eiffel_(programming_language) dbr:ML_(programming_language) dbr:COBOL dbr:C_Sharp_(programming_language) dbr:TypeScript dbr:Ada_(programming_language) dbr:EC_(programming_language) dbr:PascalABC.NET dbr:JS++ dbr:AssemblyScript dbr:Pizza_(programming_language) dbr:Speedcoding dbr:Kotlin_(programming_language) dbr:Nemerle dbr:Seed7 |
is dbp:paradigms of | dbr:Embeddable_Common_Lisp dbr:Mocl dbr:LispWorks dbr:C++ dbr:Allegro_Common_Lisp dbr:Spice_Lisp dbr:Object_Pascal |
is dbp:typing of | dbr:Zig_(programming_language) |
is rdfs:seeAlso of | dbr:Comparison_of_C_Sharp_and_Java dbr:Eiffel_(programming_language) dbr:C_Sharp_syntax |
is owl:differentFrom of | dbr:Genetic_programming |
is foaf:primaryTopic of | wikipedia-en:Generic_programming |