Faço programação em um ambiente acadêmico no momento, para poder usar o que quiser. Estou usando a biblioteca de gráficos de aumento para algumas coisas e estou me perguntando se vale a pena investir esforço na compreensão mais profunda da GP.
Estou curioso - a programação genérica (GP) é muito usada na indústria? Meu palpite é que a maioria dos programadores se sente muito mais à vontade com o OOP ou está usando linguagens que não enfatizam ou suportam o GP, de modo que, além de chamar estruturas / funções de dados STL em C ++, minha impressão é que o GP não é usado com tanta frequência na prática. Mas, estando fora da indústria no momento, seria bom ouvir de profissionais sobre isso.
(enquanto escrevo isso, vejo que a programação genérica nem sequer é uma tag válida!)
Respostas:
É realmente muito dependente do contexto da equipe e do projeto.
Por exemplo, em videogames, geralmente o código é o "mais simples" possível (e às vezes muito simples), mas em grandes arquiteturas. Isso ocorre porque os desenvolvedores de jogos têm muitos problemas para corrigir e não querem se preocupar com a meta programação (que é uma linguagem muito abstrata e difícil de entender dentro do C ++).
Ao mesmo tempo, o uso básico de modelos é comum, mesmo nessas lojas, e você pode ver algumas otimizações baseadas em modelos em algumas funções muito específicas de alguns mecanismos.
Mas no game dev, a maioria das pessoas evita qualquer metaprogramação.
Agora, por outro lado, algumas aplicações de processamento realmente complexas ou pesadas, que não são comuns, requerem algum tipo de metaprogramação pesada devido aos requisitos de desempenho e flexibilidade (em tempo de compilação) que não são comuns. Estou trabalhando em um agora.
Não é comum, mas existe, e alguns domínios de nicho (em alguns contextos científicos ou integrados de processamento de números) exigem que as pessoas saibam muito sobre metaprogramação ou que desejam aprender.
No meio, a maioria das pessoas usa apenas a metaprogramação como "cliente", não como "designer". A maioria dos códigos de metaprogramação está agrupada em bibliotecas porque as bibliotecas são ferramentas para código e o que é melhor do que uma biblioteca que pode se adaptar aos tipos personalizados com os quais você trabalha até agora?
O Boost (http://boost.org) é um conjunto de bibliotecas, algumas sendo feitas com muita magia negra de metaprogramação e são usadas em muitas lojas de C ++ como "STL ++", uma extensão da STL (e é). Nem todas as lojas o usam por vários motivos, como a compatibilidade do compilador (algumas bibliotecas de impulso podem fazer com que o compilador implore perdão por toda vez que ele machucou seu sentimento ...) e com mais frequência porque alguns desenvolvedores não gostam de não entender como uma ferramenta funciona por dentro (tente entender o Boost.Spirit ...)
Quaisquer que sejam as empresas em que você trabalhará, algumas usarão esse paradigma, outras menos ou nada, ou mesmo as proibirão.
Não há consenso, porque ninguém tem as mesmas necessidades, contexto ou equipe.
Mas ainda assim, obviamente, é usado. Talvez pergunte quem usa o impulso em sua lista de e-mails para obter mais exemplos do mundo real?
fonte
A programação genérica, academicamente chamada de polimorfismo paramétrico , é frequentemente usada nos campos. Na minha empresa, nós o usamos principalmente para criar editores independentes de tipo de dados, independentemente de seu tipo. Você não precisa dele com tanta frequência quanto os outros recursos, mas é definitivamente um recurso que eu não gostaria de perder. Você o usa quando um comportamento se encaixa em um grande número de tipos. É um sinal claro de que você precisa de genéricos quando se encontra escrevendo o mesmo código várias vezes para tipos diferentes.
Pelo menos pela minha experiência, seu ponto de vista está errado. OOP e programação genérica não são mutuamente exclusivos. De fato, você deve usar os efeitos de sinergia de combiná-los. Como afirmei antes, a razão pela qual você não vê isso aparecer com tanta frequência quanto as outras técnicas é porque você não precisa com tanta frequência. Mas é um recurso forte e ajuda muito a manter seu código SECO . Quais idiomas realmente não enfatizam o suporte do GP na programação de alto nível? Três dos cinco idiomas do Top 5 da Tiobe oferecem suporte a modelos / genéricos. E o PHP é digitado dinamicamente, para realmente não precisar deles. E daí?
fonte
Modelos C ++ são amplamente utilizados para coisas diferentes de contêineres - pelo menos no domínio do meu problema (finanças quantitativas). Atrevo-me a dizer que às vezes é usado com muita frequência, para propósitos em que funções virtuais simples e antigas seriam suficientes (e não aumentariam tanto o tempo de compilação).
As pessoas o usam para evitar duplicação de código e obter polimorfismo em tempo de compilação (sem despacho virtual).
fonte