Come imparare a programmare: prefazione (lezione 0)

Programmazione

Ho iniziato ad insegnare informatica nel lontano anno 2000. Come molti nuovi insegnanti, i primi corsi (se non vado errato, iniziai a marzo) erano orientati al tipico uso Office / Internet. Ma già qualche mese dopo mi fu affidato il primo corso di “programmazione”: VBA e HTML. No, chiaramente non ho definito io la struttura dei programmi didattici della scuola all’epoca – se è questo che ti stai chiedendo.

Ad ogni modo – sia come membro di un corpo docenti che come libero professionista – l’insegnamento da quella volta è diventato una parte del mio modo d’essere. E pur avendo svolto anche lavori che hanno poco a che vedere con l’insegnamento – il rapporto coi collaboratori e con i clienti è sempre stato in un qualche modo modellato dall’insegnamento.

L’idea di scrivere un’insieme di post strutturati in modo da poter avvicinare al mondo della programmazione dei neofiti mi è venuta perchè nei miei figli è maturato l’interesse alla programmazione. Ho pensato che potrei quindi estrapolare, dalle lezioni che produrrò per il loro apprendimento, anche un corso online rivolto a chi desidera programmare e non l’ha mai fatto (o magari ha iniziato a studiarlo in qualche contesto particolare in cui non vi è stata posta la giusta attenzione – e che quindi non ha prodotto risultati duraturi).

Ciò che cercherò di fare è di riversare in questi corsi il mio massimo come insegnante. Un’avventura che per me è iniziata quasi 19 anni fa e che ancora mi appasiona, per quanto il lavoro attuale in realtà mi concede veramente pochi istanti per dedicarmi al training di qualcuno, rispetto alla marea di altri compiti.

Il linguaggio scelto

Per questo corso di base ho deciso di insegnare il linguaggio GO. Il motivo? Semplice, perchè ritengo sia un linguaggio sufficientemente moderno (ha veramente tante cose utili alla programmazione odierna), essenzialmente General Puropose (quindi cercherò di stimolare la tua fantasia ad usarlo in ambiti più disparati), ma soprattutto perchè Ken Thompson (co-autore di Go assieme a Rob Pike e Robert Griesemer) è un personaggio che mi è sempre piaciuto e condivido molte delle sue idee in merito all’informatica in generale.

Quindi, dal momento che ho sempre portato avanti l’idea secondo la quale un programmatore non è mai legato ad un linguaggio (al limite può avere delle preferenze), ma principalmente comprende gli algoritmi ed è quindi in grado di programmare in “qualsiasi linguaggio” (dopo aver chiaramente dedicato un tempo ragionevole allo studio della sintessi, della semantica e delle particolarità), il fatto che questo corso usi il GO è solo un tributo a questa tecnologia. Chiaramente non nascondo che rispecchia molte delle mie idee su come dovrebbe essere un linguaggio di programmazione.

Ma ti prometto che sarai in grado di leggere anche altro codice – e potrai usare le idee che ti insegnerò durante il corso anche per studiare altri linguaggi.

Preparare l’ambiente

Io sono un utente linux. Ho iniziato ad usarlo nel 1996 (Slackware Linux 3, all’epoca il kernel 2.0 non era ancora “stabile”) e da allora, pur avendo usato alternativamente anche altri sistemi operativi (AmigaOS, MS-DOS, Windows), mi sono sempre trovato meglio da queste parti. Siccome GO è disponibile sui maggiori sistemi operativi di oggi, una volta preparato l’ambiente non vi sarà molta differenza con quanto scritto – ma per non rendere la prefazione troppo lunga ho preparato un articolo apposito dove descrivo come installare una ambiente di sviluppo GO sui principali sistemi operativi. Una volta configurato tutto …

GO!

Hello, world
Hello, world!

Sono un tradizionalista e per imparare il C da giovane ho usato il famoso K&R. Per cui non posso sottrarmi al rispetto delle tradizioni. Il primo programma che andremo a scrivere sarà l’eterno “Hello, world!”.

Andiamo ad aprire il nostro editor e creiamo una nuova directory per il nostro primo programma:

Lezione0

All’interno di essa creiamo il file di testo:

main.go

In esso, scriviamo il seguente codice:

package main
import "fmt"
func main () {
    fmt.Println("Hello, world!")
}

Salviamo il testo.

A questo punto il nostro primo programma è scritto! Se volessimo essere precisi, ora il nostro codice sorgente andrebbe compilato – in modo da ottenere un file eseguibile (e poter quindi essere eseguito come comando direttamente dal sistema operativo). Ma dal momento che siamo impazienti di vedere il risultato del nostro lavoro, approfittiamo del fatto che ci viene fornito anche un modo di compilare ed eseguire il codice al volo:

go run ./main.go

Andiamo ora a vedere, riga per riga, cosa abbiamo “detto al computer”.

package main

I programmi in GO sono organizzati in pacchetti (package). I package sono singole parti dei programmi (come librerie o moduli), nel nostro caso altri file sorgente .go. Il package main è speciale in quanto definisce un programma eseguibile standalone. Nella nostra prima riga abbiamo quindi detto che stiamo definendo un programma eseguibile.

import “fmt”

Oltre ai package scritti dall’utente, esiste la libreria standard di GO (che ne contiene un centinaio – spaziano dalle funzioni comuni per l’input / output, layer per il networking, funzioni matematiche, di ordinamento e altre cose utili per svariati scopi). Per poter usare le funzioni definite in queste librerie nei nostri programmi, è necessario includerle nei nostri sorgenti tramite “import”. Nel caso definito sopra importiamo la libreria “fmt”, che contiene varie funzioni per gestire l’input e l’output di stringhe.

func main () {

Questa riga definisce la funzione main. Esattamente come il package main, anche la funzione main è speciale! Ogni programma deve avere questa funzione, che rappresenta il punto d’ingresso dell’esecuzione. La definizione di ogni funzione comprende la parola chiave func, seguita dal nome della funzione (in questo caso main, appunto), gli argomenti della funzione fra parentesi (nel nostro caso non passiamo argomenti alla funzione), infine la parentesi graffa che rappresenta l’inizio vero e proprio della sequenza di istruzioni che andremo ad eseguire.

fmt.Println(“Hello, world!”)

Questa è la prima istruzione vera e propria. In sotanza, utilizziamo la funzione “Println” (definita all’interno del package “fmt”) e passiamo la stringa “Hello, world!” come argomento. La funzione “Println” significa: stampa a schermo l’argomento passato e vai accapo (a differenza di “Print”, che stampa a schermo senza andare accapo).

}

La parentesi graffa chiude semplicemente la definizione della funzione “main” iniziata nella terza riga.

La prefazione è finita. Nel prossimo articolo la prima lezione vera e propria, dove parleremo degli algoritmi.

Tagged

Recensioni

RIepilogo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *