Nuovo C ++ 11 analogo a python 2 -3?

3
  1. Sono uno sviluppatore Python2 e ho appena ordinato Il linguaggio di programmazione C ++, 4a edizione , da Bjarne Stroustrup's, per imparare C ++ 11. Ma subito dopo averlo ordinato, ho iniziato a chiedermi se ho fatto un errore. Le modifiche apportate a C ++ in C ++ 11 sono analoghe a come Python si è spostato da 2 a 3 nella misura in cui il codice si rompe in modo significativo e non è retrocompatibile? O sta imparando C ++ 11 sicuro da fare?

  2. Se ho codificato C ++ 11 in XCode, l'ultima versione è qualunque cosa sia, funzionerebbe su una macchina Windows? Oppure dipende più da cosa verrà compilato il codice, abbastanza sicuro che XCode usi LLVM.

posta Edgar Aroutiounian 22.05.2013 - 19:06
fonte

2 risposte

12

C ++ 11 è sia più che meno dirompente di Python 3000.

È meno dirompente dal momento che contiene meno cambi di rottura e raramente si verificano raramente le modifiche.

È più dirompente in quanto cambierà significativamente il modo in cui il codice viene scritto e i sistemi sono progettati in C ++. I programmi in Python 3 sono per lo più scritti nello stesso modo in cui si trovavano in Python 2. I cambiamenti di rottura sono principalmente puliti, come eliminare le classi vecchio stile. C ++ 11 OTOH contiene alcune funzionalità che possono cambiare drasticamente il modo in cui si scrive codice: ad esempio, la combinazione di un modello di memoria, primitive di simultanee di librerie standard, letterali lambda e inferenza di tipo consentono una concorrenza di alto livello sintatticamente e concettualmente leggera in lo stile di Clojure o Haskell.

    
risposta data 23.05.2013 - 04:20
fonte
8

Ci sono alcune caratteristiche di C ++ 98/03 che sono deprecate, come auto_ptr, la parola chiave 'register', ecc. Ma per la maggior parte se il tuo codice è compilato in C ++ 98 andrà bene per C ++ 11. Le uniche modifiche irrisolte sono le nuove parole chiave (e il riutilizzo della parola chiave auto). Quindi, a meno che tu non abbia scritto il codice C ++ 98 che utilizzava istruzioni come

auto int x = 5; // auto means "on the stack"

o usate le parole chiave 'decltype' o 'nullptr', ecc. come nomi di variabili, il vostro codice dovrebbe andare bene in C ++ 11.

EDIT: Come accennato ci sono altre modifiche che si infrangono, ma non intaccheranno la base di codice C ++ 98 media. Ricordo di aver sentito una storia su come hanno scelto la parola chiave 'auto' per la deduzione del tipo (non può garantire che sia vera): hanno fatto un conteggio di ogni volta che la parola chiave appariva in molte grandi basi di codice e determinava che la C 'auto 'la parola chiave è andata sostanzialmente inutilizzata. Caso in questione: prendono molto seriamente la retrocompatibilità.

    
risposta data 22.05.2013 - 19:11
fonte

Leggi altre domande sui tag