Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-03-2008, 09:25   #1
kernel::panic
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ì! ... preferisco usare il C# o il Java se voglio la gestione automatica della memoria)

Ciao e buona lettura
kernel::panic è offline   Rispondi citando il messaggio o parte di esso
Old 03-03-2008, 10:56   #2
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da kernel::panic Guarda i messaggi
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
Questo renderà finalmente usabili i riferimenti anche in C++.
Si potrà restituire il riferimento ad una variabile locale.

Quote:
- Espressioni lambda, determinazione automatica del tipo, foreach... mi sembrano le specifiche del C# 3.0
Le lambda esistevano già nelle boost sono state estese e inglobate, il for_each esiste da sempre.

Quote:
- Classe per incapsulare un puntatore: è comoda per sapere se il puntatore è già stato eliminato (delete) e quindi evitare un crash
Se non sbaglio auto_ptr dovrebbe diventare deprecato, non ricordo il nome della nuova classe, ma soprattutto potrà essere usata anche con i contenitori della STL, mentre auto_ptr assolutamente no.

Quote:
- Vari miglioramenti e potenziamenti dei template (tra cui la possibilità di passare un numero qualsiasi di argomenti-tipo)
Più che altro sarà possibile specificare come in C# restrizioni sul tipo del template.

Quote:
- Facilitazioni sui thread con nuove classi, tipo i mutex, aggiunte (finalmente!) alla libreria
Questo mi sembrava di aver capito che non lo volessero aggiungere alla libreria. Comunque meglio così.
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#.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 03-03-2008, 11:12   #3
kernel::panic
Registered User
 
Iscritto dal: Feb 2008
Messaggi: 77
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Le lambda esistevano già nelle boost sono state estese e inglobate, il for_each esiste da sempre.
In effetti, parecchie delle nuove features provengono da concetti sviluppati nelle boost.

Gli sviluppatori delle boost spingono anche per introdurre nella libreria del c++ le loro funzioni per la gestione (multipiattaforma) del file-system.
kernel::panic è offline   Rispondi citando il messaggio o parte di esso
Old 03-03-2008, 18:07   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Questo mi sembrava di aver capito che non lo volessero aggiungere alla libreria. Comunque meglio così.
C'erano in ballo anche blocchi di istruzioni atomiche con atom se non ricordo male.
Se inseriscono queste cose allora devo inserire anche i thread, a rigor di logica...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 03-03-2008, 18:53   #5
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da cionci Guarda i messaggi
Se inseriscono queste cose allora devo inserire anche i thread, a rigor di logica...
Gia', cosi' poi puoi chiudere anche quelli, se non inziano con [C++]
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.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2008, 08:37   #6
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da cionci Guarda i messaggi
Se inseriscono queste cose allora devo inserire anche i thread, a rigor di logica...
Avevo letto che tra tutte le novità da includere, vista la mancanza di tempo, i thread non erano tra le cose prioritarie (perchè sono pratiche già consolidate), quindi rischiano di rimanere fuori dallo standard.
Vedremo.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2008, 08:58   #7
cionci
Senior Member
 
L'Avatar di cionci
 
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
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2008, 09:37   #8
kernel::panic
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!
kernel::panic è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2008, 11:11   #9
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da cionci Guarda i messaggi
Allora mi domando che senso abbia inserire le mutex
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.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2008, 22:09   #10
Antares88
Senior Member
 
L'Avatar di Antares88
 
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
Antares88 è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2008, 09:43   #11
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Antares88 Guarda i messaggi
da niubbo colossale mi domando:

1) chi decide le specifiche della nuova versione di un linguaggio di programmazione

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:
2) come vengono implementate all'atto pratico ? vengono distribuiti nuovi compilatori ?
L'implementazione dipende da chi adotta lo standard.
Si possono fare anche implementazioni non standard, come ha fatto Microsoft fino all'avvento di VS2005.

Quote:
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 ?
Certo che ha senso modificare un linguaggio come il C++.
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:
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...)?
Secondo molti un limite è la mancanza di garbage collection (anche se volendo esistono delle librerie apposite).
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.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2008, 09:47   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da tomminno Guarda i messaggi
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.
Perfettamente d'accordo e vedo che si va proprio in questo senso, l'integrazione di thread, mutex, semafori ed operazioni atomiche sicuramente potrebbe far fare già un notevole passo avanti. Certo è che se lo standard esce nel 2009, i compilatori compatibili verranno fuori minimo nel 2012
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2008, 10:23   #13
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da cionci Guarda i messaggi
Perfettamente d'accordo e vedo che si va proprio in questo senso, l'integrazione di thread, mutex, semafori ed operazioni atomiche sicuramente potrebbe far fare già un notevole passo avanti. Certo è che se lo standard esce nel 2009, i compilatori compatibili verranno fuori minimo nel 2012
Se non sbaglio gcc è compatibile TR1, dinkumware ha già una libreria TR1.
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 (sempre che non decida di abbandonare il C++ prima).

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)
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2008, 10:49   #14
kernel::panic
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...
kernel::panic è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2008, 11:03   #15
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da kernel::panic Guarda i messaggi
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...
Hai ragione. Quella soluzione pero' mi pare abbastanza elegante.
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 );
A me sinceramente piace proprio poco.
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.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2008, 11:21   #16
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
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.
E aggiungo:
"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
fek è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2008, 11:28   #17
cionci
Senior Member
 
L'Avatar di cionci
 
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
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2008, 11:42   #18
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da cionci Guarda i messaggi
Che figata

for (auto itr = myvec.begin(); itr != myvec.end(); ++itr)

Addio vector< vector< list<int> > >::iterator
Vorrai dire addio vector<vector<list<int>>>::iterator
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2008, 11:45   #19
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Preferisco lasciare uno spazio
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2008, 11:46   #20
kernel::panic
Registered User
 
Iscritto dal: Feb 2008
Messaggi: 77
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
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 );
A me sinceramente piace proprio poco.
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.
Purtroppo ho anche dei colleghi che a volte per fare "i fighi" scrivono 200 istruzioni su una riga.... poi però rido io quando c'è un baco o un puntatore a NULL e lo devono debuggare!
kernel::panic è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Oracle NetSuite si potenzia con nuove fu...
Musica generata con l'IA: Sony lavora a ...
Cyberpunk 2077 in versione PC su smartph...
BYD si gioca un grosso jolly: pronta Rac...
Samsung annuncia l'arrivo in Italia dei ...
Offerta lancio Pixel 10a: come ottenere ...
Google presenta Pixel 10a: poche le novi...
Caos F1 2026: 14 monoposto senza omologa...
Tesla festeggia il primo Cybercab prodot...
Desktop piccolo e potente? NZXT H2 Flow ...
Polestar spinge sull'acceleratore: arriv...
Nuovo record mondiale nel fotovoltaico: ...
L'ultimo baluardo cade: fine supporto pe...
'Il mondo non ha mai visto nulla di simi...
La Commissione europea mette sotto indag...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:57.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v