|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Registered User
Iscritto dal: Feb 2008
Messaggi: 77
|
[C++] Uno sguardo al futuro del C++
Segnalo a tutti coloro che usano il C++ per lavorare/smanettare/imparare il seguente articolo che parla delle caratteristiche del nuovo standard del C++ (nome in codice C++0x) che sostituirà l'attuale (C++03, anche se molti compilatori usano ancora il precedente C++98) entro il 2010.
http://en.wikipedia.org/wiki/C%2B%2B0x L'obiettivo è quello di migliorare e potenziare il linguaggio mantenendo il più possibile la compatibilità con l'attuale C++ e col C: * Maintain stability and compatibility with C++98 and possibly with C; * Prefer introduction of new features through the standard library, rather than extending the core language; * Prefer changes that can evolve the programming technique; * Improve C++ to facilitate systems and library design, rather than to introduce new features only useful to specific applications; * Increase type safety by providing safer alternatives to current, unsafe techniques; * Increase performance and the ability to work directly with hardware; * Provide proper solutions for real world problems; * Implement "zero-overhead" principle (additional support required by some utilities must be used only if the utility is used); * Make C++ easy to teach and to learn without removing any utility needed by expert programmers. Tra le varie novità spiccano: - Rvalue Reference: velocizza le funzioni che ritornano delle classi, permettendo di copiarne il puntatore al contenuto, invece che la momoria del contenuto stesso... è spigato da cane, ma sul documento è meglio - Espressioni lambda, determinazione automatica del tipo, foreach... mi sembrano le specifiche del C# 3.0 - Classe per incapsulare un puntatore: è comoda per sapere se il puntatore è già stato eliminato (delete) e quindi evitare un crash - Nuove stringhe wide: oltre a L"" ci sarà u"", u8"" e U"" ... buon divertimento con le macro - Introduzione dell'header <regex> per le regular expressions - Vari miglioramenti e potenziamenti dei template (tra cui la possibilità di passare un numero qualsiasi di argomenti-tipo) - Facilitazioni sui thread con nuove classi, tipo i mutex, aggiunte (finalmente!) alla libreria - E molto altro ancora... - In passato avevo letto che si pensava di introdurre anche un garbage collector, ma è stato rimandato (meglio così! Ciao e buona lettura |
|
|
|
|
|
#2 | |||||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Si potrà restituire il riferimento ad una variabile locale. Quote:
Quote:
Quote:
Quote:
C'erano in ballo anche blocchi di istruzioni atomiche con atom se non ricordo male. Si in questa nuova versione dello standard ci sono molte modifiche interessanti. Influenzate certamente da personaggi come Herb Sutter che hanno preso spunto da quello che è stato fatto di buono col C#. |
|||||
|
|
|
|
|
#3 | |
|
Registered User
Iscritto dal: Feb 2008
Messaggi: 77
|
Quote:
Gli sviluppatori delle boost spingono anche per introdurre nella libreria del c++ le loro funzioni per la gestione (multipiattaforma) del file-system. |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Se inseriscono queste cose allora devo inserire anche i thread, a rigor di logica...
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Ok, basta, torno a casa.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Vedremo. |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Allora mi domando che senso abbia inserire le mutex
|
|
|
|
|
|
#8 |
|
Registered User
Iscritto dal: Feb 2008
Messaggi: 77
|
Sul documento di wiki c'è scritto che verrà aggiunta una classe per la gestione dei thread (come è corretto che sia)... farebbe ridere avere mutex e semafori e poi dover lavorare con la _beginthread()
Cmq speriamo che per mancanza di tempo non facciano castronate! |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Purtroppo stanno facendo le corse per pubblicare lo standard nel 2009 e sono già in ritardo, doveva già esserci un documento finale.
Lo stato di avanzamento uscito dall'ultimo meeting è disponibile qui Ultima modifica di tomminno : 04-03-2008 alle 11:16. |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jan 2003
Città: Roma
Messaggi: 832
|
da niubbo colossale mi domando:
1) chi decide le specifiche della nuova versione di un linguaggio di programmazione 2) come vengono implementate all'atto pratico ? vengono distribuiti nuovi compilatori ? 3) quanto si riesce a modificare un linguaggio già esistente e solido come il c++ ? e soprattutto, ha senso farlo ? ha senso aggiungere qualche feature in più e dannarsi per anni cercando di risolverne i difetti e superarne i limiti ? 4) quali sono i limiti odierni del c++ e i suoi punti di forza rispetto agli altri linguaggi adottati massicciamente al giorno d'oggi (Java, Python, C e derivati, etc...)?
__________________
Trattative concluse su mercatino: The_Saint, ewandeep, Wiltord, maurizioi, Compulsion, mauryxxx76 |
|
|
|
|
|
#11 | ||||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Nel caso di linguaggi come C e C++, il comitato che si occupa di gestire lo standard. Nel caso di C# o Java invece lo sviluppo è deciso dalle rispettive aziende che possono fare quello che vogliono. ISO prevede che uno standard venga rivisto periodicamente ogni 5 anni per "minor revision" e 10 anni per "major revision". Per l'appunto siamo a 10 anni dal precedente standard C++ (che era già stato rivisto nel 2003). Anche il C ha avuto diverse revisioni tanto che si parla di C89 e C99. Quote:
Si possono fare anche implementazioni non standard, come ha fatto Microsoft fino all'avvento di VS2005. Quote:
L'informatica è un mondo in continua evoluzione ed è bene che ci siano modifiche al linguaggio per mantenerlo attuale o superarne dei limiti. Nel nuovo standard secondo me la novità più sostanziale è la "move semantic" che consentirà di evitare inevitabili copie di oggetti. Quote:
Secondo me il vantaggio che hanno linguaggi come Java o C# è l'uniformità e vastità del framework. Ad esempio per accedere ad un database, qualunque esso sia, in C# ricorri ad ADO.NET ovvero fai tutto nello stesso modo. In C++ devi utilizzare le API specifiche di ogni DBMS e quindi studiarti il funzionamento di ognuna. In parte sono anche gli IDE a rendere più usabile un linguaggio. Ad esempio l'intellisense di VS fa una grande differenza quando vai a scrivere codice, quello per C++ non funziona molto bene. Per molti aspetti l'intellisense di Code::Blocks funziona meglio. |
||||
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Difficile vedere compilatori pienamente standard prima del 2010 e visto che dovrebbe essere l'anno d'uscita di Hawaii (VS2010), MS supporterà il nuovo C++ non prima del 2012 Purtroppo gli standard richiedono il loro tempo, ripagando però in stabilità nel tempo (contrariamente al C# che per il momento ha obbligato a buttare tutto il vecchio codice nel giro di 2 anni) |
|
|
|
|
|
|
#14 |
|
Registered User
Iscritto dal: Feb 2008
Messaggi: 77
|
Una cosa di cui sento la mancanza nel C++ è poter passare come callback alle API di sistema (in C) una funzione di classe non statica... In C# si può fare senza problemi (sia tra oggetti managed che unmanaged tramite P/Invoke), in C++ invece, o la callback è statica o ci si deve appoggiare ad accrocchi come questo: http://www.codeproject.com/KB/winsdk...k_adapter.aspx
Per quanto riguarda gli aggiornameti ai compilatori penso anche io che prima del 2010/11 non siano disponibili, le modifiche sono davvero tante... |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Il problema che vedo io e' che i programmatori C++ continuano ad ostinarsi a scrivere righe come Codice:
R Result = (_this->m_pObj->*_this->m_pfCB)(_this->m_UserData ); Ma cosa davvero cosi' tanto scrivere 5 righe di codice in piu', che molto probabilmente vengono risolte dal compilatore nello stesso identico modo di questa riga qui sopra? Che vantaggio c'e'? Secondo me qualcuno ogni tanto dovrebbe rileggere questo, che e' sempre attuale: http://www.faqs.org/docs/artu/ch01s06.html dove si trova 2. Rule of Clarity: Clarity is better than cleverness. 7. Rule of Transparency: Design for visibility to make inspection and debugging easier. 15. Rule of Optimization: Prototype before polishing. Get it working before you optimize it. Secondo me quella riga le viola tutte e 3.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
"Any fool can write code that a machine can understand, only good programmers can write code that a human can understand" Io continuo a sostenere la necessita' di una Patente per legge prima di poter lanciare un compilatore. Per chi vuole impratichirsi con qualche nuova feature c'e' ConceptGCC: http://en.wikipedia.org/wiki/ConceptGCC
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Che figata
for (auto itr = myvec.begin(); itr != myvec.end(); ++itr) Addio vector< vector< list<int> > >::iterator
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Preferisco lasciare uno spazio
|
|
|
|
|
|
#20 | |
|
Registered User
Iscritto dal: Feb 2008
Messaggi: 77
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:22.




















