2014-11-25 13 views
7

Anche se TCP/UDP/IP sono protocolli comunemente usati, non capisco perché vogliono far parte dello standard ISO C++. Questi non hanno nulla a che fare con il nucleo della lingua. Le strutture dati sono strumenti universalmente obbligatori, quindi la STL ha senso, ma questi protocolli sono IMO troppo specifici.Perché esiste una proposta di libreria di rete per C++ 14/17?

+0

Questa domanda è troppo aperto. Farai meglio a portarlo alle mailing list C++. –

+3

La proposta è per una biblioteca, non "il cuore della lingua". Io per primo troverei utile una libreria di rete standardizzata. –

+0

Se diventa parte dello standard ISO C++, cosa succederà se utilizzo quel compilatore su un sistema operativo che non ha uno stack TCP/IP? –

risposta

7

C++ 11 include filettatura in standard. Ora i programmatori non devono scrivere PThread in Linux e Windows Threads in Windows, separatamente. Lo stesso può accadere se la libreria di rete viene standardizzata.

+3

Trovo i thread ugualmente universali. Ma TCP/UDP non sono IMO. Esistono alternative (ad esempio SCTP, anche se principalmente utilizzato in 3GPP) –

+0

@BenjiMizrahi Vale la pena ricordare che la libreria di rete standard sarà facilmente estensibile e l'aggiunta di implementazione multipiattaforma per (ad esempio) SCTP sarà facile e multipiattaforma per progettazione. –

14

C'è stato un sentimento di vecchia data che la piccola area di messa a fuoco della libreria C++ è qualcosa di brutto che trattiene la lingua. La maggior parte dei linguaggi "moderni" dispone di librerie di framework di grandi dimensioni che includono networking, grafica e JSON. Al contrario, se vuoi eseguire uno di questi in C++, a) non ottieni nulla per impostazione predefinita e b) sono sopraffatti con una scelta di librerie di terze parti che di solito non sei in grado di valutare correttamente e selezionare da.

Ecco come va quella parte dell'opinione.

Ovviamente ci sono altre persone che pensano che sia proprio così che dovrebbe essere. Tuttavia, la standardizzazione è un lavoro duro, e mentre linguaggi come Java e C# e Go hanno dietro di sé grandi aziende che possono mettere energia nello sviluppo di un'enorme libreria, il C++ non ha quel tipo di manodopera e la maggior parte delle persone che passano il tempo sulla standardizzazione C++ sono più interessati agli aspetti fondamentali della programmazione: strutture dati, concorrenza, evoluzione del linguaggio (concetti, intervalli, moduli ...).

Quindi non è così tanto che le persone sono generalmente contrarie a una biblioteca più grande, ma non è una priorità per molti. Ma se arrivano buone idee, hanno buone possibilità di essere considerate. E i componenti di una grande libreria come il networking non andranno comunque nella libreria standard, ma piuttosto in una specifica indipendente, che è un modo per vedere se l'idea è utile, popolare e corretta. Solo se un TS viene ampiamente utilizzato e riceve molti feedback positivi ci sarà un possibile sforzo futuro per includerlo nell'IS.

(avrete notato analoghi sforzi per creare le specifiche tecniche per i file system e per la grafica.)

+1

Immagina un bambino nato nel 2005 che ottiene un iPhone7 per il suo decimo compleanno, ma sa che tutti i ragazzi fantastici a scuola fanno C++. "Mamma, voglio solo disegnare delle forme intersecanti sulla mia tela HTML (il mio codice di invio multiplo sta già funzionando perfettamente) - quale classe ho bisogno di istanziare per quello?" (A quel punto mamma apre una bottiglia di Jack e lascia che il bambino usi il suo XCode con Swift.) –

Problemi correlati