Visto che il discorso torna spesso tra i c++isti del del forum, apro una discussione sulla nuova serie di standard a partire da C++11.
Qual è la vostra idea al riguardo?
Parto con la mia: il C++ è probabilmente il linguaggio in cui sono più produttivo e che conosco meglio. Penso anche però che dentro C++ ci siano più linguaggi insieme:
1) Si può usare il C++ come se fosse C, usando poco o niente delle sue features distintive
2) Si può usare il C++ come si faceva fino agli anni ~2000, ossia molto OOP in stile Java
3) Si può usare come si fa adesso, cioè non molto OOP, con grande uso di template e metaprogrammazione (vedi boost) e tecniche permesse dalle nuove evoluzioni del linguaggio.
L'idea che sento spesso da Stroustrup e altri, cioè quella di poter insegnare C++14 come se fosse un nuovo linguaggio e tralasciando molte vecchie pratiche secondo me è una cavolata, perché
1) Se dico di sapere il C++ devo saperlo TUTTO, i codici legacy usano molti puntatori e gestiscono manualmente la memoria, usano molta ereditarietà ecc ecc
2) Non mi è mai successo di riuscire ad usare solamente la nuova parte del C++, quasi sempre tocca sporcarsi le mani
Se già prima il C++ era un osso duro per la didattica (ora ti insegno i costruttori, ma aspetta, insieme al costruttore di default devi aggiungere il costruttore di copia, no aspetta, non devi passare i parametri per valore, usa il const reference, ah e adesso siccome voglio anche la semantica a=b aggiungi l'operatore di assegnamento...) adesso secondo me è veramente a livelli ridicoli (però se passi un rvalue fai una copia inutile, implementa il move constructor, impara a usare le move semantics ecc ecc).
Imparare un linguaggio vuol dire non solo imparare la sintassi, ma i pattern comuni propri a quel linguaggio, e C++ è polimorfo in questo senso, quindi molto difficile da maneggiare, sicuramente poco utile come primo linguaggio secondo me.
A voi.
|