Loki soffre di una buona libreria che tocca diverse aree funzionali (supporto per metaprogamodello con alcune applicazioni specifiche: puntatori intelligenti, singoletti, oggetti funzione, guardie di campo ecc.), Mentre boost è una raccolta di molte librerie in genere esauriente coprendo ogni area funzionale e molto più altamente sintonizzati per la portabilità (prima).
Quando 9 uccelli su 10 possono essere uccisi con la stessa pietra, molte persone iniziano con boost e riempiono gli spazi con le librerie di terze parti. È molto difficile competere con la spinta se si sovrappongono. Dato che non si sovrappone con molto di spinta, le persone scaricheranno/installeranno comunque boost per ottenere l'altra funzionalità, quindi a meno che non inchiodi un'area in cui la spinta è debole e la differenza è significativa per il progetto, si "sistemeranno" "per aumentare anche lì.
Inoltre, Alexandrescu ha ripetuto i tentativi di far entrare Loki in boost, e alcuni degli autori chiave del boost non erano cooperativi. La mia opinione personale è che vogliono il più completo ma molto meno user-friendly MPL per avere più "market share": come autori della libreria e dei libri cartacei che sono l'unica documentazione decente (in netto contrasto con la maggior parte degli altri boost biblioteche che hanno un'eccellente documentazione online), ne fanno abbastanza bene.
Se qualcuno è offeso e non è d'accordo con questa analisi, sono tutto orecchie.
Un altro problema pratico con il codice estremamente parametrizzata è che in progetti di grandi dimensioni in cui diversi sviluppatori/squadre lavorano in modo indipendente, faranno spesso finiscono con sottilmente diverse istanze dello stesso modello piuttosto arbitrariamente. Questo rende più difficile per passare valori tra tali sottosistemi: il ricevitore può essere necessario:
- essere parametrizzata (cioè su modelli, e quindi in serie, che introduce le dipendenze di compilazione e lento costruisce in sistemi scala aziendale)
- forniscono una copertura minima per tutte le possibili istanziazioni (ad esempio controllo dei codici di errore e attesa/gestione delle eccezioni)
- che passa attraverso un tempo di compilazione a tempo di esecuzione basato su una base di accesso astratta con implementazioni per ogni istanza) che compromette alcune delle i vantaggi prestazionali della parametrizzazione
Questo è tutto possibile, ma ci vuole un grande programmatore per navigare nel terreno.
fonte
2011-02-18 08:02:22
Nessuno ha bisogno di un puntatore intelligente con 6 parametri di modello. –
Loki non può essere compilato per errore da nessun compilatore mainstream quando è stato pubblicato. Alexandrescu è un tipo intelligente. Troppo intelligente per me. –
@johannes: la maggior parte dei parametri del modello hanno valori predefiniti, quindi non è necessario impostarli. E potresti semplicemente usare typedef per associare alcuni parametri del template. – Frank