Un Inizio per il Futuro Programmatore

Se vuoi imparare a programmare da zero, sei nel posto giusto. Quello che segue è un libro-tutorial completo e gratuito che ti insegnerà le basi della programmazione a oggetti. Puoi leggere l'introduzione di seguito oppure saltare direttamente al primo capitolo. Se invece vuoi imparare a realizzare siti web, allora dovresti iniziare da questa guida gratuita per diventare Webmaster oppure da questo ottimo corso di introduzione al Web Design.


LTP2_cover.jpg

Libro completo in inglese

Tutto ebbe inizio nel 2002. Volevo insegnare la programmazione ed ero convinto che il linguaggio di programmazione Ruby si prestasse benissimo alla didattica. Allora Ruby era ancora un linguaggio molto giovane e tutti ne eravamo entusiasti sia sotto il profilo della potenza che dell'eleganza, ma ad un certo punto realizzai che un corso di Ruby sarebbe stato l'ideale anche per introdurre alla programmazione.

(NdC: Dal 2005, con la nascita del framework Ruby on Rails, Ruby è diventato un linguaggio ideale anche per realizzare siti e applicazioni web. Se sia già programmare puoi passare subito a questa guida completa e gratuita su Ruby on Rails.)

Purtroppo a quel tempo non era disponibile molta documentazione su Ruby adatta a principianti. Alcuni di noi, membri della community, riflettevamo su quanto sarebbe stato utile una guida del tipo "Ruby per il Principiante" e, più in generale, su come insegnare la programmazione. Più ci pensavo e più mi veniva da pensarci (e la cosa mi sorprese alquanto). Finché qualcuno disse "Chris, perché invece di parlarne e basta non ti decidi a scrivere tu un tutorial?" Così lo feci.

All'inizio non era granché. Avevo tutte queste idee che -in teoria- erano buone, ma il compito di scrivere un eccellente tutorial per non programmatori si rivelò molto più difficile di quanto non mi rendessi conto. (Insomma, sembrava buono a me, ma io sapevo già programmare).

Mi salvarono il fatto che resi molto semplice contattarmi e la mia inclinazione ad aiutare le persone quando si trovano bloccate: quando notavo che molte persone rimanevano bloccate nello stesso punto, lo riscrivevo. Era parecchio lavoro, ma lentamente il tutorial migliorò sempre di più.

Un paio di anni dopo era finalmente diventato un buon lavoro. :-) Così buono, in effetti, che ero pronto a dichiararlo finito e passare a qualcos'altro. Proprio in quel momento si presentò l'opportunità di trasformare il tutorial in un libro. Siccome era sostanzialmente finito, pensai che non ci sarebbero stati problemi. Dovevo solo ripulire un paio di punti, aggiungere qualche esercizio in più, magari qualche altro esempio, qualche altro capitolo, farlo rileggere a una cinquantina di revisori in più...

Mi ci volle un altro anno, ma ora penso che sia davvero molto buono, soprattutto grazie alle centinaia di anime impavide che mi hanno aiutato a scriverlo.

Su questo sito si trova il tutorial originale completo tradotto in italiano, puoi andare subito al primo capitolo. Il tutorial è disponibile anche come libro in inglese.

 

Qualche Pensiero per i Docenti

Ci sono alcuni principi guida cui ho cercato di attenermi. Penso che abbiano reso il processo di apprendimento molto più agevole. Imparare a programmare è già difficile di per sé, quindi se stai guidando qualcuno sulla via degli haker, queste idee potrebbero aiutare anche te.

Innanzitutto ho cercato di separare i concetti il più possibile, in modo tale che gli studenti debbano imparare solo un concetto alla volta. Per questo motivo ho scelto un ordine per gli argomenti che mi ha consentito di  introdurre ogni nuova sezione motivandola con le precedenti.

Un altro principio che ho tenuto presente è l'insegnare solo un modo di fare qualcosa. E' un ovvio beneficio per un tutorial destinato a persone che non hanno mai programmato prima. Inoltre è più facile imparare un modo di fare qualcosa piuttosto che due. Tuttavia il beneficio forse maggiore sta nel fatto che meno cose s'insegnano a un nuovo programmatore, più creativo questi dovrà essere. Siccome la programmazione è essenzialmente -problem solving- è fondamentale incoraggiare lo studente in tal senso a ogni occasione.

Ho cercato di riferire i concetti della programmazione a concetti che il nuovo programmatore già possiede; per presentare le nuove idee in modo che sia l'intuizione dello studente a sostenerne il peso, piuttosto che il tutorial. La programmazione orientata agli oggetti si presta piuttosto bene a questo approccio. In questo modo sono stato in grado di riferirmi agli "oggetti" e a differenti "tipi di oggetti" abbastanza presto nel tutorial, lasciando scivolare queste frasi nei momenti più innocenti. Non ho scritto nulla del tipo "tutto in Ruby è un oggetto" o "numeri e stringhe sono tipi di oggetti", perché frasi di questo tipo non significano nulla per il nuovo programmatore. Piuttosto che riferirmi a "oggetti di tipo stringa" mi riferivo semplicemente a "stringhe" e utilizzavo la parola "oggetto" anche solo per indicare qualcosa nel programma. Il fatto che in Ruby ogni cosa è un oggetto ha reso questi espedienti molto più efficaci.

Sebbene volessi evitare il gergo sovrabbondante volevo essere comunque certo che ogni qualvolta lo studente necessitasse d'imparare una parola, imparasse quella giusta. Così ho preferito da subito il termine "stringhe" a "testo". I metodi dovevano essere chiamati in qualche modo, così li ho chiamati da subito "metodi".

Per quanto riguarda gli esercizi, penso di averne creati di buoni, ma non potevo averne troppi. Onestamente penso di aver passato la metà del mio tempo cercando di tirar fuori qualche esercizio che fosse al contempo utile e divertente. Gli esercizi noiosi sono assolutamente capaci di stroncare sul nascere il desiderio di programmare mentre quelli buoni fanno provare al nuovo programmatore il desiderio di saperne sempre di più. 

powered by Ruby

 

Ringraziamenti

Infine, vorrei ringraziare tutti i membri della mailing list ruby-talk per i loro pensieri e incoraggiamento, tutti i miei meravigliosi revisori per il loro aiuto nel rendere il libro molto meglio di quanto avrei potuto fare da solo, la mia cara moglie in particolare per essere stata il mio principale recensore/tester/cavia/musa, Matz per aver creato il linguaggio favoloso che è Ruby e i Pragmatic Programmers per avermi chiesto di scrivere il libro che poi mi hanno pubblicato!

 

Il Tutorial Originale [Nota del Curatore]

Le pagine di questo tutorial (compresa questa) sono state tradotte in italiano a partire da un brillante tutorial originale scritto in inglese da Chris Pine nel quale mi imbattei la prima volta nel 2010. A quel tempo mi stavo affacciando per la prima volta all'appassionante mondo dell'insegnamento e cercavo disperatamente una risposta alla domanda: idealmente, come si dovrebbe imparare a programmare? da quale linguaggio iniziare? Inutile aggiungere che se mi sono preso la briga di tradurre in italiano questo libricino è proprio perché penso di aver trovato la risposta :-).
Negli anni mi sono preso la libertà di aggiornare il testo alle ultime versioni del linguaggio di programmazione e di proporre l'utilizzo di nuovi strumenti che si sono resi disponibili. Questo nell'intento di aiutare il più possibile il principiante a muovere i suoi primi passi nel meraviglioso mondo della programmazione, al quale devo moltissimo. Per questo motivo ti capiterà di trovare alcune mie note (cioè di me medesimo, che sono Duccio Armenise, contrassegnate dalla dicitura "NdC" (Nota del Curatore). 

Inoltre, per gli esercizi proposti nel corso di questo tutorial, ho preparato un Manuale delle Soluzioni in italiano che include anche una serie di consigli e approfondimenti per aiutarti a scoprire i "segreti del mestiere".

Durante tutto questo lavoro di traduzione il mio scopo è stato quello di eliminare la barriera linguistica per quanti desiderino approcciarsi alla programmazione; permettendo quindi, anche a chi non conosce l'inglese abbastanza bene da poter leggere agevolmente l'originale, la fruizione dei contenuti e di provare l'ebbrezza informatica che ne consegue. Giusto è affrontare una difficoltà alla volta, fermo restando che chi intendesse "fare sul serio" dovrebbe prendere in debita considerazione l'apprendimento della lingua inglese (che è la lingua dell'informatica: non a caso l'autore di Ruby, Matz, pur essendo giapponese ha dato alla luce un linguaggio anglofono). A tal proposito, per quando ti sentirai già più a tuo agio con la programmazione e pronto a fare il salto di qualità successivo, colgo l'occasione per consigliarti questi corsi di inglese a Milano e queste vacanze studio in Inghilterra. Intanto ti segnalo anche due risorse utili a tradurre termini che ti dovessero risultare ostici: la prima è il dizionario multilingua wordreference, e la seconda lo strumento traduzione di Google.

Per contattarmi a proposito di errori di traduzione, suggerimenti e altro, scrivimi pure qui.

Procedi al primo capitolo: Per Iniziare.

Oppure segui su Twitter

Commenti

La sezione commenti è messa a disposizione per consentirti di scambiare idee e consigli con gli altri studenti, fanne buon uso!
Nota bene: se vuoi condividere del codice puoi utilizzare i tag <pre> e <code>, così:

<pre><code>
saluto = 'ciao'
puts saluto
</code></pre>