Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - C++14: le vostre idee
Forum - C/C++ - C++14: le vostre idee

Avatar
lumo (Member)
Expert


Messaggi: 449
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 13:28
Domenica, 28/08/2016
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.

PM Quote
Avatar
Template (Member)
Pro


Messaggi: 177
Iscritto: 09/12/2015

Segnala al moderatore
Postato alle 20:45
Domenica, 28/08/2016
Non conosco bene il nuovo standard del C++, quindi faccio un discorso di principio: insegnare solo le nuove features di un linguaggio è (tranne che in caso di fondamentale riscrittura del linguaggio medesimo) a mio avviso estremamente limitante e scorretto, perchè non si fornisce al discente la dovuta conoscenza di ciò che sta alla base dell'evoluzione attuale (elemento, questo, non sempre di valore meramente folkloristico) e soprattutto si propina un'interpretazione parziale del linguaggio, la quale nel caso del C++ davvero non può rendere giustizia alla sua ricchezza.

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 20:19
Venerdì, 02/09/2016
Io sono per un approccio top - bottom (da sopra a sotto): si imparano i concetti ad alto livello, tralasciando i dettagli tecnici. In questa maniera uno studente non si fa scoraggiare e le probabilità che la materia diventi d'interesse aumentano. Poi dopo aver acquisito i concetti ad alto livello, si può cominciare a scavare le fondamenta per capire meglio come funziona tutta la "magia".

In questo caso, penso che non ci sia nulla di male ad imparare C++14 tralasciando le vecchie cose, e anzi penso che sia uno degli unici modi per il linguaggio di sopravvivere alla nuova generazione di programmatori che crescono a suon di Python, Swift e Javascript.

Detto questo penso che sia importante assicurarsi che un programmatore non si fermi al livello più alto del linguaggio, ma che una volta acquistata la padronanza dei concetti più alti, che si cominci ad imparare le fondamenta.


Il mio blog: https://piero.dev
PM Quote