Sono interessato a modi e mezzi per l'apprendimento (a) dei linguaggi di programmazione in modo efficiente. Credo che utilizzare concetti e infrastrutture di Unit Test all'inizio di questo processo sia una buona cosa, anche meglio che iniziare con "Hello world".
Perché: per scrivere un programma decente anche per un problema giocattolo / limitato in una nuova lingua, dovrai padroneggiare molti concetti eterogenei (flusso di controllo e variabili e IO ...), sei tentato di dare un'occhiata sui dettagli solo per far funzionare il tuo programma. Mettendo (la vostra comprensione di) i fatti sulla nuova lingua in asserzioni con buone descrizioni (= messaggi di successo) applica il pensiero attraverso / chiarezza / precisione. Raggruppare argomenti e aggiungere asserzioni a tali gruppi è molto più semplice rispetto alle funzioni di incorporazione del 2. capitolo del tuo libro "Apprendimento X" al tuo programma capitolo 1.
Perché no: i test delle unità "reali" sono destinati all'output "1234 test ok; 1 fallimento: saveWorld () induttanze sull'ingresso negativo"; I test di unità "didattici" dovrebbero fornire informazioni rilevanti sulla nuova lingua come
perl6 10-string.t
# ### p5chop
...
ok 13 - p5chop( "cbä" ) returns "ä"
ok 14 - after that, victim is changed to "cb"
# ### (p6) chop
...
ok 27 - (p6) chop( "cbä" ) returns chopped copy: "cb"
ok 18 - after that, victim is unchanged: "cbä"
# ### chomp
...
Quindi (mis?) usare Test unitari può essere controproducente: esercitarsi in azioni mentre si impara a non usarlo professionalmente.
Come: scrivere unità didattiche "Test" in lingue con sistemi di test leggeri (Perl 5/6) è facile; (mis?) usare sistemi più elaborati (JUnit, CppUnit) potrebbe non valerne la pena o non essere adatto a una persona che inizia appena con una nuova lingua.
- Usare l'unità Test come strumento di apprendimento è una cattiva idea?
- È possibile utilizzare gli strumenti di test unitario della / e tua lingua preferita in modo didattico?
- I dettagli di implementazione (eventualmente) dovrebbero essere discussi qui o sopra a stackoverflow.com?