Perché usare le librerie C ++ è così complicato?

12

Prima di tutto, voglio sottolineare che adoro C ++ e sono una di quelle persone che pensano che sia più semplice codificare in C ++ che in Java. Tranne una piccola cosa: le biblioteche.

In Java puoi semplicemente aggiungere alcuni jar al percorso di build e il gioco è fatto.

In C ++ di solito devi impostare più percorsi per i file di intestazione e la libreria stessa. In alcuni casi, devi persino usare speciali flag di compilazione. Ho usato principalmente Visual Studio, Code Blocks e nessun IDE. Tutte e 3 le opzioni non differiscono molto quando si parla di usare le librerie esterne.

Mi chiedo perché non sia stata fatta un'alternativa più semplice per questo? Come avere un file .zip speciale che ha tutto ciò che serve in un unico posto in modo che l'IDE possa fare tutto il lavoro per voi impostando i flag di compilazione. C'è qualche barriera tecnica per questo?

    
posta Pijusn 08.12.2012 - 17:51
fonte

2 risposte

14

C ++ è stato progettato per migliorare il linguaggio C creando un linguaggio più semplice e automatico con supporto per la programmazione orientata agli oggetti. Ma non ha fatto nulla per cambiare o migliorare il modo in cui C gestisce le librerie esterne e i file di intestazione. Il C ++ non ha un sistema di moduli come lingue più moderne, ma utilizza ancora il preprocessore C e il sistema di linker. Poiché uno degli obiettivi dichiarati del C ++ era la compatibilità con il codice C, questo non è davvero sorprendente. Qualsiasi sistema di moduli C ++ dovrebbe funzionare insieme al vecchio sistema C header-file / linker. Il comitato per gli standard C ++ semplicemente non è riuscito a progettare un sistema di moduli più moderno. (Anche se ci stanno lavorando, vedi il commento di Klaim qui sotto.)

    
risposta data 08.12.2012 - 18:03
fonte
2

Non è una barriera tecnica. Su Linux, il tuo "file zip speciale" è un pacchetto di librerie-dev che installi con un gestore di pacchetti, e impostare i flag include e linker è semplice come aggiungere un paio di linee al tuo configure.ac che usa pkg-config per impostare le cose.

Pkg-config è disponibile anche per Windows, ma le barriere culturali ne hanno impedito l'adozione diffusa. Unix ha una lunga storia di abilitazione della portabilità distribuendo il codice sorgente, quindi include gratuitamente gli strumenti di sviluppo. Windows ha una solida storia di incoraggiare solo la distribuzione binaria e di addebitare agli sviluppatori strumenti. Quando fai soldi vendendo le librerie, non ha senso rendere più facile per le terze parti fornirle.

    
risposta data 08.12.2012 - 19:15
fonte

Leggi altre domande sui tag