Episodio 126 – Iniziare a programmare

Episodio 126 – Iniziare a programmare

 
 
00:00 / 13:08
 
1X
 

Mattia mi ha scritto tramite il form del sito e mi ha proposto una bella idea. La puntata di oggi è dedicata a chi vuole iniziare a programmare e non sa da dove partire.

Pillole di Bit è un podcast indipendente realizzato da Francesco Tucci, se vuoi contribuire alla realizzazione puoi usare Paypal, Satispay, Patreon e il vecchio IBAN (contattami per chiedermelo).
Se vuoi metterti con contatto con me puoi scegliere tra diverse piattaforme:
Telegram (un gruppo dove discutere degli argomenti del podcast)
Twitter (il social che amo di più)
La mail (se mi vuoi scrivere in modo diretto e vuoi avere più spazio per il tuo messaggio)

Rispondo sempre

Se questo podcast ti piace, parlane con un amico e faglielo ascoltare!
Realizzo altri due podcast, provate a dar loro una chance: GeekCookies e A Torino


Ciao a tutti e bentornati all’ascolto di Pillole di Bit, questa è la puntata 126 e io sono, come sempre, Francesco.

Parto da una richiesta che mi è arrivata sul modulo dei contatti del sito. Questo anche per dirvi che se avete idee da proporre non fatevi problemi, me le scrivete e io ci penso su e magari ne esce una puntata.
Mattia mi ha chiesto come fare ad avvicinarsi alla programmazione, da dove partire e cosa studiare.
La domanda, di per sé, dovrebbe prevedere una risposta di una vastità tale che potrei smettere di parlare solo tra 7 o 8 anni, ma Pillole di bit è un podcast breve, quindi dovrò fare un po’ di selezione degli argomenti da trattare.

Partiamo dalle basi e da cosa vuol dire programmare.
Non vuol dire scrivere programmini, ma molto di più.
Programmare vuol dire mettere ordine e creare una procedura rigida e ben definita per un’azione che si deve fare, solitamente in modo ripetuto

Ok, detta così forse fa un po’ paura, la rendo più accessibile.

La mattina, molti di noi, ad una certa ora hanno la sveglia che suona, imprecano, la spengono si alzano e vanno in bagno.
Se ci si dimentica di staccarla il sabato, prima si impreca per essersene dimenticati, ma poi la si spegne e si continua a dormire.
Se hai due gatti no, loro ti svegliano sempre, senza la sveglia indipendentemente dal giorno della settimana, ma questa è un’altra storia.

Il programmatore che fa? Prende questa cosa assolutamente umana e ne fa uno schema che identifica le azioni

Dormo
La sveglia suona
La spengo
Impreco
Che giorno è oggi?
Se è sabato impreco di nuovo, poi torno a dormire
Se non è sabato mi alzo
Vado in bagno

Bene abbiamo appena messo in piedi un semplice algoritmo con una condizione. Se è sabato faccio una cosa, se è domenica ne faccio un’altra.

Questo piccolo algoritmo lo posso enunciare a voce come ho appena fatto, lo posso scrivere, oppure posso farci un piccolo schema con le frecce che indicano le azioni. Sto programmando senza un computer.
Torniamo a noi, ai computer e alla programmazione.
Solitamente si scrive un programma per cercare di risolvere un problema o per ottenere una funzionalità nuova.
Per fare un esempio concreto, Alex Raccuglia ha sviluppato il programma che io uso per montare i podcast perché ha pensato “montare podcast è una noia mortale, è lungo e il tempo che ci spendo mi impedisce di registrare altri podcast. Allora viluppo questo programma così ottengo il risultato di avere più tempo mentre il computer mi aiuta e mi velocizza il lavoro”
Alex Raccuglia ha identificato un problema, ci ha lavorato, ha speso del tempo e ha ottenuto un programma, adesso si dice app, che fa più figo ed è al passo con i tempi, che ha risolto un problema. Noi podcaster che usiamo il suo programma abbiamo più tempo per fare altro e siamo meno annoiati.

Il signor Nolan Brushnell nel 1972 non aveva un problema da risolvere, ma un’idea. Si mise lì e sviluppò un programma che chiamò PONG, il primo videogioco commerciale della storia.
Due strade diverse, una cosa in comune: la programmazione.

Programmare significa dire ad un calcolatore di fare alcune cose e farle in un certo modo. Il problema maggiore, una volta che hai avuto l’idea, è come dirgliele.
Non puoi prendere un computer, lo apri e gli chiedi gentilmente “senti, per cortesia, mi tiri fuori i primi 100 numeri della successione di Fibonacci?”
Sicuramente non otterrai la risposta che cercavi.
Quindi, come si fa con tutte le persone, gli si deve parlare nella sua lingua. Il problema è che un processore parla solo a bit, quindi zero e uno e li si deve mettere in un ordine particolare per ottenere un risultato. Insomma, è un vero casino.

Per questo sono nate delle cose chiamate linguaggi di programmazione. 
Li possiamo vedere così:
sono delle vere e proprie lingue con una loro sintassi, una grammatica e un vocabolario. Li si impara e si scrive.
Però, una volta scritti, ci va qualcuno che li traduca nel complesso mondo dei calcolatori, fatto solo di zero e uno.
Per questo esistono i compilatori. Sono programmi anche loro, che prendono quello che si è scritto per convertirlo, si dice compilarlo, nella lingua del calcolatore, il cosiddetto linguaggio macchina.

Ma visto che le cose non sono mai semplici con i computer, non tutti i linguaggi di programmazione sono così.
Quelli appena detti sono compilati. C’è un codice sorgente, lo si compila e ne esce un eseguibile, dal quale molto difficilmente si torna al codice sorgente.
Poi ci sono i programmi interpretati.
Io scrivo il codice e questo resta lì, in chiaro, se lo devo eseguire, installo sul computer un interprete e questo lo esegue compilandolo in linguaggio macchina in tempo reale.
Il vantaggio del programma interpretato è che scrivo il codice e questo girerà su una macchina qualunque, basta che ci sia installato l’interprete corretto per quel sistema operativo o quella architettura hardware.
Se lo compilo per Windows per esempio, invece un programma compilato non funzionerà mai su Linux.
Poi, sempre per la questione delle cose facili, ci sono i programmi che sono delle vie di mezzo. 
Scrivo il codice e lo precompilo, diciamo così, ottengo un file parzialmente compilato, che si chiama bytecode, che va poi passato all’interprete che finisce di compilarlo al volo e lo esegue sulla macchina dove sta.
Parliamo con i nomi, che se no poi si fa casino.
Il linguaggio C è un linguaggio compilato
Il linguaggio Java è la via di mezzo
Il linguaggio Python è interpretato.
HTML non è un linguaggio di programmazione.

Un’ultima base che è necessario conoscere è la questione delle librerie.
Esistono nel mondo milioni e milioni di librerie che fanno cose, le fanno bene e sono facili da usare.
Nel mondo, se pensate a una funzione, c’è qualcuno che l’ha già scritta e ottimizzata, quindi ne ha fatto una libreria.
Un esempio, tornando al lavoro di Alex Raccuglia, è il calcolo della trasformata veloce di Fourier.
A patto di sapere cos’è, farne il calcolo può essere un po’ complesso. Ma Apple, nel suo ambiente di sviluppo, ha una libreria che si chiama Accelerate, che ha una funziona che fa proprio quello, la fa bene ed è velocissima. Perché scriversi le cose da zero, magari facendole peggio?

Ricordate sempre che il programmatore è pigro, fa una cosa, la fa bene e la fa una volta soltanto. Se iniziate a programmare avrete quanto prima le vostre librerie con le funzioni che vi siete scritti e che riutilizzate tantissimo.
Io per esempio ne ho una molto semplice che uso in tutti i miei progetti Python, che gestisce la scrittura del file di log. Con una sola chiamata, la mia libreria, molto banalmente, va a cercare dalle impostazioni qual è il file di log, lo apre, inserisce una nuova riga con data e ora corrente e scrive il testo che gli avete passato con la chiamata.

Dai, voglio iniziare! cosa faccio?

Apri il sito di Scratch e segui i tutorial.
Scratch non ti fa scrivere una riga di codice, ma ti fa capire cosa vuol dire avere a che fare con un algoritmo, cosa è un ciclo o una if.
A questo punto arriva la scelta più difficile di tutte.
Si deve scegliere che linguaggio utilizzare.
E questo è davvero davvero un casino, ma un casino grosso e difficile.
Provo a darvi due dritte che non saranno quelle perfette o esaustive, ma, che mi hanno aiutato a decidere quelle volte in cui avevo dei dubbi.

Vi ricordo però che io sono quello che ogni volta che deve iniziare un nuovo progetto fa mille prove con mille linguaggi e poi torna sempre al solito e confortevole VBA di Microsoft.

Se volete sviluppare per ambiente Apple fatevi un favore e usare Xcode. Lo scaricate e lo installate, ci vanno una tot di Giga sul disco e siete operativi. Fine. C’è da studiare il linguaggio Swift.

Se volete sviluppare per Windows, una buona base di partenza è Visual Studio, la versione entry level è gratis ed è molto ben documentata.

Per sviluppare per applicativi web, a mio parere, la scelta si riduce a PHP o Python

Per sviluppare su Linux c’è un mondo di scelta, ma se usate Linux, sicuramente già ne sapete abbastanza.

Personalmente, ho imparato a voler bene a Python da qualche anno a questa parte e funziona su qualsiasi piattaforma.
Se volete cimentarvi in python un buon punto di partenza è il sito https://www.python.it/doc/newbie/, come al solito lo trovate sul sito nel testo dell’episodio.

Avere un dizionario di una lingua che si conosce poco è fondamentale, nei linguaggi di programmazione viene chiamata documentazione e vi spiega cosa fanno tutte le funzioni, come le si deve usare e cosa è meglio fare o non fare. Se mentre sviluppate siete offline sarebbe il caso di avere offline anche tutta la documentazione del linguaggio. Un sacco di siti dei linguaggi di programmazione permettono di avere la documentazione salvata sul computer su cui si lavora.
Per il resto c’è sempre Google. O Bing, o Duck Duck Go o il motore di ricerca che preferite.

E’ importante segnalare che la prima cosa da imparare non è la lingua in cui scrivere, ma che algoritmo usare per poi scrivere il programma. Il buon programmatore sa come risolvere un problema e adatta la risoluzione al linguaggio che gli serve in quel momento.

Un’ultima dritta, che secondo me è utile per non perdere troppo tempo a cincischiare senza ottenere risultati. Prima di iniziare a scrivere un programma ponetevi un obiettivo, così potete sviluppare cercando di arrivare a quell’obiettivo lì, senza fare cose a caso.
Per esempio il mio obiettivo era riuscire a farmi l’impianto di videosorveglianza con telegram, ho lavorato con lo scopo finale di poter usare telegram per accendere, spegnere e controllare il mio antifurto.

I contatti
Tutti i contatti, i link e le informazioni su questo podcast li trovate sul sito www.pilloledib.it 
Potete contattarmi in un sacco di modi diversi:
l’account twitter @pilloledibit
la mail pilloledibit@gmail.com
il gruppo telegram www.pilloledib.it/telegram    
il canale discord www.pilloledib.it/discord 
Il form sul sito

Rispondo a tutti e sono attivo nei due gruppi di discussione

Se volete partecipare attivamente al podcast, trovate sul sito i link per le donazioni, ci sono molte piattaforme e modalità, scegliete quella che vi piace di più. Se donate almeno 5€ compilate il form con i vostri dati e vi spedisco gli adesivi a casa.

Ringrazio tantissimo chi sta partecipando, chi ha partecipato e chi sta pensando di farlo.

Questa è l’ultima puntata della programmazione cosiddetta normale, una a settimana, il lunedì mattina. A partire dal primo di dicembre uscirà una sorta di calendario dell’avvento in podcast, con una breve puntata al giorno, fino al 24 dicembre compreso. Come sempre alle 4 del mattino, spero vi possa piacere questo format un po’ diverso dal solito. 
La puntata regolare ricomincerà poi da lunedì 13 gennaio 2020 alla solita ora

Registro altri due podcast, Geekcookies e A Torino, se vi va potete fare un salto anche lì, trovate tutte le informazioni partendo dal mio sito personale www.iltucci.com

Il tip
Programmare è un’attività interessante, che vi potrebbe portare a grandi soddisfazioni, come a notti passate, disperati a cercare quel maledetto bug che non si trova e non fa funzionare correttamente il vostro codice.
Un aiuto nelle programmazione non fa mai male e il primo aiuto è un buon editor di testo, che colori la sintassi del codice, avvisi sugli errori nel codice e aiuti con l’autocompletamento dei comandi.
Se avete deciso di usare un IDE (integrated Desktop Environment) la cosa è automatica, ma se programmate, lasciatemelo dire, a mano libera, vi serve un po’ di supporto.
Io uso con soddisfazione Komodo Edit, che c’è su tutte le piattaforme ed è gratuito. Da non confondere con Komodo IDE che è a pagamento.
Se invece lavorate su Windows e volete un editor leggero e molto completo, allora usate senza remore Notepad++

Bene è proprio tutto, non mi resta che salutarvi e darvi appuntamento alla prossima puntata.

Ciao!