Ho appena iniziato l'università informatica e sto frequentando un corso di programmazione su C (++). Il professore di programmazione preferisce collegare ogni argomento con un tipo di progettazione di programmazione simile a Design by Contract. Fondamentalmente, ciò che ci chiede di fare è scrivere ogni esercizio con commenti che denotino la pre-condizione, la post-condizione e gli invarianti che dovrebbero dimostrare la correttezza di ogni programma che scriviamo.
Ma questo non ha alcun senso per me. Forse scrivere i tuoi pensieri ti impedisce di commettere degli errori, ma se questa è tutta una cosa astratta, se l'intuizione del tuo programma è sbagliata, scrivi il tuo programma in modo sbagliato, e poi scriverai anche le condizioni pre e post errate. Alla fine, sarai convinto che un programma sbagliato potrebbe essere effettivamente corretto.
Ho avuto qualche esperienza di programmazione prima di questo corso e mi sono trovato a mio agio semplicemente scrivendo un programma e un'unità che lo testava. Ci vuole meno tempo per realizzarlo ed è meno "astratto" del solo pensare a quello che ogni singolo pezzo del tuo programma dovrebbe fare in ogni caso (il che è un po 'come testarlo mentalmente).
Infine, la determinazione delle condizioni pre e post mi porta a circa l'80% del tempo totale degli esercizi. È più difficile pensare di mettere giù questo pre e post corretto che scrivere il programma stesso.
Ho ragione nel pensare che lavorare con pre-condizioni, post-condizioni e invarianti non valga nulla? Devo convincermi che questo metodo è giusto?