Come illustrare agli studenti perché dovrebbero usare la libreria standard? [chiuso]

3

Troppo spesso incontro gli studenti che:

  • Utilizza gli array anziché i vettori, pensando che sia "più veloce"

  • Utilizza i puntatori perché è "più veloce"

  • Reinventare la ruota, spesso copiando e incollando il terribile codice C-ish da Internet

Hanno questa impressione radicata che prima di scrivere il codice "corretto", devono scrivere il codice "veloce", a scapito dell'apprendimento. So che i guru come Stroustrup e Meyers non passano molte ore e dollari a scrivere libri e parlare alle conferenze sulla libreria standard solo per essere completamente ignorati perché lo studente pensa che siano migliori del compilatore.

Sospetto che il motivo sia:

  • Sono pigri. È molto più facile trovare un codice C-C-C che non sia in realtà pensare al problema e applicare gli strumenti appropriati

  • Non vogliono leggere libri

  • Pensano che la libreria standard sia lenta

  • È divertente reinventare la ruota; sfortunatamente non fanno molte ricerche per capire il problema o come risolverlo correttamente

Il problema, credo, è che agli studenti, leggere e guardare video sono noiosi e tendono a non ascoltare quelli che dicono "usa i vettori anziché gli array" ma hanno problemi a articolare perché . Faccio fatica a trovare un mezzo alternativo per insegnare i concetti importanti senza essere ottuso o noioso.

Qualche suggerimento?

    
posta user85176 23.09.2015 - 10:48
fonte

4 risposte

8

Se sei un insegnante: imposta loro il compito appropriato.

Scrivi un programma usando il vettore stl per fare qualcosa. Quindi imposta loro un altro compito per ripetere la stessa operazione usando gli array C. Prendili per confrontare le prestazioni di ciascuno. Dovresti essere in grado di dimostrare la differenza insignificante nelle prestazioni in seguito. Non utilizzare collezioni di tipi primitivi, accertati che sia un tipo complesso: una mappa di Studenti in un elenco di Classi che utilizza un vettore di classi potrebbe essere un buon punto di partenza per spiegare queste cose (come una mappa è per la ricerca di studenti ID: crea una stringa non int che può essere utilizzata come indice di matrice, un elenco di classi modificate dinamicamente e un elenco fisso di stanze.)

Quindi fai lo stesso per la mappa e elenca e rimuovi. L'idea non è tanto quella di insegnare loro la differenza di riutilizzare i contenitori sTL, ma di farli scoprire da soli. Una volta implementato un elenco collegato utilizzando i puntatori C, rispetto alla riga 1 del codice per creare un elenco stl, potrebbero iniziare a farsi un'idea.

L'altro aspetto è insegnare loro quando usare il tipo di contenitore. Se imposti anche task che usano unique_ptr e shared_ptr potresti insegnare loro quanto è più veloce e più sicuro usare questi rispetto alla durata di oggetti di giocoleria con puntatori grezzi.

    
risposta data 23.09.2015 - 11:00
fonte
6

È tuo compito valutare i tuoi studenti o il loro codice? Quindi è semplice: chiarisci cosa ti aspetti da loro e quale tipo di codice pensi sia buono, e quando ti presentano soluzioni con codice buono o cattivo, dai loro le valutazioni appropriate. Assicurati che i tuoi studenti sappiano di superare il tuo corso l'obiettivo non è scrivere il codice "più veloce", ma il codice più corretto, più leggibile e più standard.

E dare l'esempio: quando presenti concetti di programmazione o mostri soluzioni di esempio, non usare da soli gli array in stile C oi puntatori in stile C. Menziona la loro esistenza solo come una nota a margine, ma di 'ai tuoi studenti chiaramente che quelli sono elementi linguistici C ++ ereditati da C, per i quali la lib standard ha alternative migliori. Di 'loro che dovrebbero impararli quando devono occuparsi del codice legacy, ma non per superare gli esami.

    
risposta data 23.09.2015 - 11:45
fonte
3

Si tratta di incentivi.

Questo non vale per ogni studente, ma in generale: I tuoi studenti sono a scuola per ottenere un diploma. La tua classe è uno dei tanti ostacoli che devono superare per ottenere quel diploma. Vogliono passare quella classe con il minimo sforzo.

Ora lavorerai anche con persone intelligenti e quando pubblichi un problema (fornisci un compito) i tuoi studenti non inizieranno a cercare modi diversi per risolverlo se già "pensano" di avere la risposta.

Perché leggere il libro se pensi di sapere già come risolvere i compiti?

Il tuo lavoro di insegnante è quello di fornire un "ostacolo" sufficiente che il diploma non perda il suo valore.

    
risposta data 23.09.2015 - 11:31
fonte
2

Nell'industria, risolviamo questo problema:

  • Verifica il codice prima che venga eseguito il check-in.
  • Contrassegnare il codice con problemi come i difetti.
  • Non permettendogli di effettuare il check-in finché l'autore non risolve tutti i difetti o difende con successo le loro decisioni di progettazione così come sono.

I tuoi colleghi nella composizione inglese funzionano allo stesso modo, esaminando più bozze. I linguaggi di programmazione sono altrettanto difficili da scrivere in inglese. Non so perché le scuole sembrano pensare che gli studenti riescano a fare bene la prima bozza.

    
risposta data 23.09.2015 - 13:55
fonte

Leggi altre domande sui tag