layout | title |
---|---|
lecture |
Perché è nato questo corso? |
Studiando informatica si seguono molti corsi che si addentrano negli aspetti avanzati della materia. Si affrontano argomenti complessi come sistemi operativi, linguaggi di programmazione, fino al machine learning. Ma una cosa manca da quasi tutti i corsi di studio in informatica, e viene lasciata agli studenti: un'alfabetizzazione all'uso degli strumenti e delle utilities.
Negli anni abbiamo contribuito all'insegnamento di molti corsi al MIT, e abbiamo notato che molti studenti hanno una conoscenza limitata degli strumenti a loro disposizione. I computer sono nati per automatizzare il lavoro manuale, eppure gli studenti spesso eseguono azioni ripetitive a mano, oppure non riescono ad ottenere il massimo dagli strumenti quali sistemi per il controllo di versione e editor di testo. Nel miglior dei casi, questi tentativi risultano in una perdita di tempo; nei casi peggiori possono comportare anche perdita di dati o impossibilità a concludere certe attività.
Tutto questo non fa parte dei curriculum universitari: agli studenti non viene mai mostrato come usare questi strumenti, o almeno non come usarli in maniera efficace, e quindi come non perdere giorni in un'attività che dovrebbe essere semplice. Il piano di studi classico dei corsi in informatica manca dunque di nozioni fondamentali sull'ecosistema che sta attorno alla programmazione e che può rendere la vita agli studenti significativamente più semplice.
Per porre rimedio a questo, abbiamo avviato un corso che tratti tutti gli aspetti da noi considerati cruciali per essere un efficiente informatico. Il corso è molto pratico e prevede una dimostrazione introduttiva agli strumenti e alle tecniche che potrai immediatamente applicare in una vasta gamma di situazioni che incontrerai. Il corso si svolge durante la sessione delle attività indipendenti del MIT a Gennaio 2020 - un semestre di un mese durante il quale si svolgono brevi lezioni tenute dagli studenti. Mentre le lezioni in presenza sono riservate agli studenti del MIT, metteremo pubblicamente a disposizione tutti i materiali, insieme alle registrazioni.
Se questo ti ispira potrebbe fare al caso tuo. Ecco alcuni esempi concreti di quello che andremo a vedere:
Come automatizzare azioni comuni e ripetitive con gli alias, script e sistemi di build. Niente più copia e incolla di comandi da un file di testo. Niente più "esegui questi 15 comandi uno dopo l'altro". Niente più "hai dimenticato di eseguire questo passaggio" o "hai dimenticato quest'argomento".
Ad esempio, la ricerca nella cronologia dei comandi può facilmente farti
risparmiare molto tempo. Nell'esempio qua sotto mostriamo alcuni trucchetti per
navigare nella cronologia della shell alla ricerca del comando convert
.
Come usare correttamente i sistemi per il controllo di versione, e sfruttarli
per salvarti dai disastri, collaborare con gli altri, e trovare ed isolare
facilmente i cambiamenti problematici. Niente più rm -rf; git clone
, niente
più conflitti di merge (o meglio, meno conflitti), niente più grosse porzioni
di codice commentate, niente più affannose ricerche a che modifica ha rotto il
tuo codice, niente più "oh no, hai cancellato il codice che funzionava?!". Ti
insegneremo anche come contribuire ai progetti degli altri con le pull
requests!
Nell'esempio sottostante usiamo git bisect
alla ricerca del commit che ha
rotto un unit test e poi lo aggiustiamo con git revert
.