Il blog di uforob

C++ come linguaggio di scripting


http://voices.canonical.com/jussi.pakkanen/2013/10/15/c-has-become-a-scripting-language/Concordo con l'articolo. Usando bene il C++ e ancora di più il C++11 si riescono ad avere tanti vantaggi che si hanno con i linguaggi di scripting come non dover gestire esplicitamente la memoria, fare cose complesse con poche righe di codice, manipolare stringhe in modo comodo e avere a disposizione librerie potenti.Il problema è che sia il linguaggio sia le librerie sia i programmatori si portano dietro tante cose dal C. In Python viene molto più naturale scrivere cose comearray = range(1,101)for i in array:    print(i)http://codepad.org/j6S838yFAvrei potuto evitare la variabile e inserire direttamente la funzione range nel for ma l'esempio è per mostrare il modo di scorrere l'array.In C++ per scorrere un array o un'altra collezione si usa di solito qualcosa comefor(int i=0; i<=mycollection.size(); i++){    cout << mycollection[i] << endl;}quando va bene e non ci sono scritte cose alla C come questa che usano indice e lunghezza definiti altrove, in C non si può o addirittura un numero dentro il for al posto di lengthint i;for(i=0; i<=length; i++){    printf("%d", mycollection[i]);}Come spesso in codice C++ si trovano "stringhe C" cioè gli array di caratteri terminati con null invece di usare l'oggetto string del C++ oppure array quando sarebbe più comoda una classe di libreria che rappresenta una collezione oppure quando si trovano dei for per fare cose che si potrebbe fare con funzione di libreria (ricerche, ordinamenti, estrazione di parti di stringa ecc).