Stavo pensando oggi al libro di Paul Graham "Hacker e pittori". Più in particolare, questi due paragrafi :
"I was taught in college that one ought to figure out a program completely on paper before even going near a computer. I found that I did not program this way. I found that I liked to program sitting in front of a computer, not a piece of paper. Worse still, instead of patiently writing out a complete program and assuring myself it was correct, I tended to just spew out code that was hopelessly broken, and gradually beat it into shape. Debugging was a kind of final pass where you caught typos and oversights... [It] seemed like programming consisted of debugging.
... As far as I can tell, the way they taught me to program in college was all wrong. You should figure out programs as you're writing them, just as writers and painters and architects do."
È così che viene insegnato nel mio college e sono abbastanza sicuro anche della maggior parte degli altri college. Capisci cosa farà il tuo programma, e poi capirai come farlo, quindi digiti e esegui il debug. A volte si crea una versione base e si aggiungono funzionalità, ma l'idea è che si pensi e poi si digiti.
Questo tipo di ricorda quel capitolo nel libro di Feynman intitolato "Egli risolve le radio pensando!" dove ha camminato intorno a pensare a come la radio potrebbe essere rotta, e poi la fissa. Per me, questo è ciò che riguarda la programmazione: pensare e quindi trovare una soluzione.
Questo è l'approccio prevalente alla codifica? Se è così, perché non più persone semplicemente hackerano e mettono insieme un programma senza avere un'idea preconcetta di come sarà?
Quali sono i vantaggi e gli svantaggi di think & type vs. spew & battere?