Programação Genérica (ou Generic Programming, para quem gosta de termos em inglês – Mim Fala Portugês), apesar de não ser algo recente, vem se tornado bastante popular ultimamente, o que leva muita gente à perguntar: que raio é isso? Vamos tentar responder de forma bastante simples (e fácil de entender).
A Programação Genérica, tambem chamada de Metaprogramação (Metaprogramming) é um paradigma (“modelo”) de programação no qual o tipo de dado é abstraído. Imagine, Por exemplo, que você crie uma classe que manipule uma lista de inteiros. Depois você precisa duma lista semelhante para números reais. Copiar e colar o código, fazendo as modificações necessárias? Não, melhor abstrair o tipo de dado, e usar a mesma classe. Como? Usando generics!
Ex. (C++):
template <typename T>
class ListaNumeros
{
...
};
ListaNumeros <int> listaInteiros;
ListaNumeros <double> listaReais;
Em C++, o compilador geraria, à partir de uma única definição da classe ListaNumeros, uma classe para o tipo int e uma classe para o tipo double.
Este paradigma de programação surgiu nos anos 70, em linguagens como Ada. Começou a tornar-se popular quando foi incorporado à linguagem C++, no início dos anos 90. Depois diversas outras linguagens adotaram a Programação Genérica, como Java, .Net (C#/VB .Net/Delphi .Net/etc) e outras.
Abstrair o tipo de dado pode levar à uma grande economia de código, pois um mesmo código pode operar diversos tipos de dados, levando a um grande reaproveitamento de código, redução de complexidade, além de outros usos mais avançados, como novas possibilidades em hierarquias de classes, policy-based design (“comportamento genérico”) / polimorfismo estático, etc.
Exemplos em algumas linguagens:
*C++:
//cria um vetor de string's
vector<string> vetor;
//adiciona uma string ao vetor
vetor.push_back("linha 1");
//adiciona uma string ao vetor
vetor.push_back("linha 2");
*Java:
//cria um vetor de string's
Vector<String> vetor = new Vector<String>();
//adiciona uma string ao vetor
vetor.add("linha 1");
//adiciona uma string ao vetor
vetor.add("linha 2");
*C#:
//cria um vetor de string's
List<string> vetor = new List<string>();
//adiciona uma string ao vetor
vetor.Add("linha 1");
//adiciona uma string ao vetor
vetor.Add("linha 2");
Você sabia que…
Os golfinhos dormem com um olho aberto?
Escrito por Rafael Rodrigues