Domanda

Lo standard C ++ 0x sta per essere completato. Fino ad ora, mi sono dilettato in C ++, ma ho evitato di impararlo a fondo perché sembra che manchi un sacco di funzionalità moderne che mi hanno rovinato in altre lingue. Tuttavia, sarei molto interessato a C ++ 0x, che affronta molte delle mie lamentele. Qualche ipotesi, dopo la ratifica dello standard, su quanto tempo impiegherà i principali produttori di compilatori a fornire implementazioni ragionevolmente complete e di qualità di produzione? Accadrà abbastanza presto per invertire il declino della popolarità del C ++, o è troppo poco, troppo tardi? Credi che C ++ 0x diventerà "C ++" tra qualche anno, o credi che la maggior parte delle persone si atterrà allo standard precedente nella pratica e C ++ 0x sarà in qualche modo un bastardo figliastro, un po 'come il C99?

È stato utile?

Soluzione

Non vedo alcun motivo per cui C ++ 0x non debba essere adottato. La comunità C ++ è molto più lungimirante di C. C è sempre stata pensata per essere un "linguaggio assemblatore portatile", quindi le persone che usano che non sono davvero super interessate a nuove fantasiose funzionalità. Il C ++ è molto più ampio e non ho ancora sentito parlare di un programmatore C ++ che non era in attesa di 0x. (Ho anche la mia impressione che la comunità C ++ sia molto più "rigorosa" e che in realtà non voglia spostarsi al di fuori dello standard in un comportamento indefinito, il che implica che tu scelga C ++ 03 o C ++ 0X piuttosto che mezzo- ibrido implementato. I programmatori C tendono ad essere molto più rilassati al riguardo, e sembrano felici di usare C89 con solo un paio di funzioni e header C99 mescolati)

Tuttavia, ci vorranno alcuni anni prima che Microsoft raggiunga, almeno. Visual Studio 2010 supporterà una manciata di funzionalità C ++ 0x (lambdas, decltype e un paio di altre), ma la maggior parte sarà non supportata. Dovremo aspettare VS2012 o qualunque sia la prossima versione per avere un supporto un po 'completo.

Con GCC / G ++, la situazione è molto migliore, poiché la maggior parte dello standard è già stata implementata lì (al comitato standard non piace adottare funzionalità che non sono state implementate e testate in un vero compilatore, e un Il fork di GCC viene spesso utilizzato per questo)

Ma probabilmente ci vorrà ancora del tempo per renderlo stabile e pronto per la produzione.

A proposito del declino della popolarità del C ++, non lo vedo davvero. Non credo che il C ++ sia diminuito in modo significativo in popolarità negli ultimi anni. Gli sviluppatori RAD hanno già lanciato la nave, ovviamente, su .NET, Python o altri linguaggi o piattaforme. Ma dove oggi viene usato il C ++, non ci sono molte alternative praticabili e nessun motivo per cui dovrebbe diminuire in popolarità.

Altri suggerimenti

Non conosco altri fornitori, ma da cosa ho visto , Microsoft prevede di includere quattro funzionalità del linguaggio C ++ 0x in Visual C ++ 2010:

  1. riferimenti di valore
  2. auto
  3. lambdas
  4. asserzione statica

Sebbene si tratti di un piccolo set di funzionalità C ++ 0x, sono importanti. Alcuni consentiranno ai programmatori di scrivere codice molto più compatto (auto, lambdas) e privo di errori. Alcuni (come i riferimenti rvalue) consentono alle librerie di essere più efficienti. A Microsoft piace lambdas come attivatore per il calcolo parallelo .

IMHO: auto da solo renderà molto più facile usare i modelli che lo faranno più programmatori. E si spera che ciò aumenterà la domanda di ulteriori funzionalità C ++ 0x da parte di Microsoft e di tutti i fornitori.

Microsoft aggiornerà anche l'implementazione della libreria standard C ++, ma non conosco i dettagli. Credo che stiano modificando alcune classi di container per trarre vantaggio dalla semantica dello spostamento dei riferimenti rvalori. E credo che includano più di TR1.

Alcune implementazioni sono già sulla buona strada per C ++ 0x: ( gcc ). La mia intuizione afferma che il supporto per C ++ 0x sarà disponibile nei compilatori principali abbastanza rapidamente; tuttavia esiste ancora un ampio corpus di codice legacy che deve essere mantenuto.

Le versioni più recenti di gcc supportano già molte delle funzionalità di C ++ 0x: http: // gcc.gnu.org/projects/cxx0x.html

Microsoft includerà il supporto C ++ 0x in Visual Studio 2010 entro la fine dell'anno (è già disponibile un'anteprima della tecnologia della community).

Non credo che diventerà " il C ++ " in qualunque momento presto, ma piuttosto alcune persone sceglieranno di aggiungere parti della nuova sintassi dove ha senso nel loro codice.

Non faccio molto C ++ in questi giorni, ma le persone con cui parlo o lo adorano o sentono che la bellezza del C ++ sta nel controllo che ottengono e che se volevano un linguaggio con tutte quelle funzionalità extra, " d usare C # / Java.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top