programmazione generica, quanto spesso viene utilizzata nell'industria

11

Faccio programmazione in un ambiente accademico al momento, quindi posso usare quello che voglio. Sto usando la libreria del grafico boost per alcune cose, e mi chiedo se valga la pena investire gli sforzi per comprendere più a fondo il GP.

Sono curioso - la programmazione generica (GP) è molto utilizzata nell'industria? La mia ipotesi è che la maggior parte dei programmatori stiano molto più a proprio agio con OOP o stiano usando linguaggi che non enfatizzano o supportano GP, così che al di fuori di chiamare strutture / funzioni di dati STL in C ++, la mia impressione è che GP non venga usato spesso in pratica. Ma, essendo al di fuori dell'industria in questo momento, sarebbe bello sentire i praticanti su questo.

(mentre sto scrivendo questo, vedo che la programmazione generica non è nemmeno un tag valido!)

    
posta bd1 25.07.2011 - 18:26
fonte

3 risposte

7

I'm curious - is generic programming (GP) used much in industry?

Dipende molto dal contesto del team e del progetto.

Ad esempio, nei videogiochi, spesso il codice è il più semplice possibile (e talvolta anche troppo semplice) ma in architetture di grandi dimensioni. Questo perché gli sviluppatori di giochi hanno un sacco di problemi da risolvere e non vogliono preoccuparsi della meta-programmazione (che è un linguaggio separato molto astratto e difficile da comprendere all'interno del C ++).

Allo stesso tempo, l'utilizzo di base dei modelli è comune anche in quei negozi e puoi vedere alcune ottimizzazioni basate su modelli in alcune funzioni molto specifiche di alcuni motori.

Ma in game dev, la maggior parte delle persone eviterà qualsiasi metaprogrammazione.

Ora, sull'altro lato estremo, alcune applicazioni di elaborazione davvero complesse o pesanti, che non sono comuni, richiedono una sorta di metaprogrammazione pesante a causa di requisiti di prestazioni e flessibilità (in fase di compilazione) che non sono comuni. Sto lavorando in uno proprio adesso.

Non è comune, ma esiste e alcuni domini di nicchia (in alcuni contesti embedded scientifici o basati su numeri) richiedono che le persone sappiano molto sulla metaprogrammazione o desiderano imparare.

Nel mezzo, la maggior parte delle persone usa semplicemente meta-proggramming come "client", non come "designer". La maggior parte dei codici di meta-programmazione sono raggruppati in librerie perché le librerie sono strumenti per il codice e cosa è meglio di una libreria che può adattarsi ai tipi personalizzati con cui hai lavorato fino ad ora?

Boost (http://boost.org) è un insieme di librerie, alcune delle quali sono fatte di metafora nera e sono usate in molti negozi C ++ come "STL ++", un'estensione dell'STL (e è). Non tutti i negozi lo usano per diversi motivi, come la compatibilità con il compilatore (alcune librerie di boost possono far perdonare il compilatore ogni volta che ha ferito i tuoi sentimenti ...) e più spesso perché alcuni sviluppatori non amano non essere in grado di capire come funziona uno strumento all'interno (prova a capire Boost.Spirit ...)

Qualunque sia la società per cui lavorerai, alcuni useranno questo paradigma, alcuni lo faranno di meno o addirittura non li proibiranno.

Non c'è consenso perché nessuno ha gli stessi bisogni, contesto o squadra.

Ma ancora, ovviamente, è usato. Forse chiedi a chi usa la spinta sulla loro mailing list per avere più esempi del mondo reale?

    
risposta data 25.07.2011 - 19:05
fonte
5

I'm curious - is generic programming (GP) used much in industry?

La programmazione generica, chiamata accademicamente polimorfismo parametrico , è molto spesso utilizzata nei campi. Nella mia azienda, lo usiamo principalmente per creare editor indipendenti di tipo per i dati, indipendentemente dal loro tipo. Non ti serve tanto spesso quanto altre funzionalità, ma è sicuramente una funzionalità che non vorrei perdere. Lo usi quando un comportamento si adatta a un numero elevato di tipi. È un chiaro segno che hai bisogno di farmaci generici quando ti ritrovi a scrivere lo stesso codice più volte per diversi tipi.

My guess is that most programmers are much more comfortable with OOP or are using languages that don't emphasize or support GP, so that outside of calling STL data structures/functions in C++, my impression is that GP isn't used all that frequently in practice.

Almeno per la mia esperienza, il tuo punto di vista è sbagliato. OOP e programmazione generica non si escludono a vicenda. In effetti, dovresti usare gli effetti sinergici di combinarli. Come ho detto prima, la ragione per cui non la vedi appare frequentemente come altre tecniche è perché non ne hai bisogno così spesso. Ma è una funzione strong da avere e ti aiuta molto a mantenere il tuo codice DRY . Quali lingue non sottolineano in modo particolare il supporto del GP nella programmazione ad alto livello? 3 di 5 lingue del Tiobe Top 5 supporto generics / templates. E PHP è digitato in modo dinamico quindi non ne ha davvero bisogno. Quindi cosa?

    
risposta data 25.07.2011 - 18:46
fonte
4

I modelli C ++ sono ampiamente usati per cose diverse dai contenitori - almeno nel mio dominio problematico (finanza quantitativa). Mi azzarderei persino a dire che a volte viene usato troppo spesso, per scopi in cui le normali vecchie funzioni virtuali sarebbero sufficienti (e non aumenterebbero così tanto il tempo di compilazione).

Le persone lo usano per evitare la duplicazione del codice e per ottenere il polimorfismo in fase di compilazione (senza invio virtuale).

    
risposta data 25.07.2011 - 18:41
fonte

Leggi altre domande sui tag