Condividi questa pagina su:

altraSoluzione piace a:

Come imparare a programmare

Stampa Stampa

Per imparare a programmare non basta acquistare un buon libro o scriversi a un corso.

Imparare a programmare

Questo articolo ti spiegherà il metodo vincente che ho sempre adottato, da autodidatta, per imparare a programmare in diversi linguaggi, fin dagli anni '80, con il linguaggio macchina e il BASIC per lo ZX Spectrum, poi il Commodore 64 e successivamente, per lavoro, con HP BASIC (RMB), Visual Basic, HP-UX e Linux Shell scripting, HTML e CSS (che non sono linguaggi di programmazione), PHP, SQL, Javascript, jQuery, eccetera...

Ti avviso subito che questo NON è un corso, è soltanto una raccolta di consigli generali per chi vuole avvicinarsi al mondo della programmazione, per sviluppare siti Web o per qualsiasi altro scopo.

 

In questo articolo:

La programmazione

Diciamo subito che ho sempre seguito le Scienze e la Tecnologia con grande curiosità e passione ma, proprio a causa della mia grande curiosità in diversi settori, non mi sono mai specializzato in uno in particolare, perché amo interessarmi di tante cose, troppe cose da studiare in modo approfondito in una sola vita! Smile

Essenzialmente, io sono "uno che sa un po' di tante cose", come mi disse il proprietario di una delle aziende per le quali ho lavorato, una caratteristica che è stata molto utile alle aziende che mi in passato mi hanno assunto.
Il problema è che questo le aziende lo scoprono soltanto dopo che mi hanno assunto e la "poliedricità" è poco rivendibile in un mercato del lavoro che, sempre di più, ricerca figure specialistiche.

Quindi, il primo consiglio è: NON fare come ho fatto io! Specializzati! Smile

Negli anni ho scritto centinaia di migliaia di righe di codice di programmazione, in tanti linguaggi diversi e per questo dico che so programmare ma... non sono un Programmatore, perché solo una persona che si è concentrata su questa Professione, approfondendola e imparandone ogni aspetto, può dichiararsi tale. Smile

Ciò premesso, imparare a programmare, secondo la mia opinione, consiste essenzialmente nell'imparare a suddividere un problema in tanti piccoli passi organizzati in modo logico.

Questo approccio, infatti, è indispensabile per riuscire ad arrivare al punto d'immaginare immediatamente una sorta di algoritmo quando ci troviamo di fronte a un problema.

Vorrei fare un esempio: immagina di dover scrivere la sequenza di azioni necessarie per guardare il telegiornale delle ore 13:00.

Per come siamo abituati a pensare, questa sembra un'unica azione ma, se la osserviamo con gli occhi (e la testa) di un programmatore, non lo è!

Se proviamo a suddividere quest'apparentemente unica azione, cioè guardare il telegiornale delle ore 13:00, in elementi più semplici, ci accorgiamo che non sono pochi.

Infatti, per guardare il telegiornale, è necessario:

  1. Controllare l'ora: sono le 13:00?
  2. Se non sono le ore 13:00 ritornare al punto 1
  3. Se sono le ore 13:00 allora dovremo avvicinarci alla TV (o al telecomando)
  4. Premere il tasto di accensione
  5. Sintonizzarci sul canale giusto
  6. Regolare il volume
  7. Sederci in poltrona
  8. Guardare il telegiornale
  9. Spegnere la TV

Inoltre, ciascuno di questi passi potrebbe essere suddiviso in ulteriori micro-azioni.

Per esempio, il punto 6 (regolare il volume), potrebbe essere così frazionato:

  1. Ascoltare la TV
  2. Se il volume è giusto vai al punto 5
  3. Se il volume è troppo basso premi il pulsante per alzare e torna al punto 1
  4. Se il volume è troppo alto premi il pulsante per abbassare e torna al punto 1
  5. Regolazione del volume conclusa

Insomma, dopo anni di pratica in questo esercizio, s'impara a fare la stessa cosa anche con i problemi della vita... ma non sono sicuro che sia una buona notizia! Smile

Quelli che abbiamo appena visto sono esempi di algoritmi che, in pratica, rappresentano l'essenza della programmazione.

I linguaggi

Abbiamo appena visto come un problema complesso possa essere suddiviso in tanti piccoli passi elementari, sviluppando così un algoritmo e abbiamo descritto il problema guardare il telegiornale delle ore 13:00 in un linguaggio a noi molto familiare: la lingua italiana!

I computer non parlano l'italiano. In realtà non parlano neanche l'inglese ma "parlano" soltanto linguaggio macchina , cioè un set di istruzioni (in pratica una successione di byte) che il microprocessore può eseguire in sequenza.

Però, negli anni, sono nati gli interpreti, cioè dei programmi che si occupano di tradurre il linguaggio macchina in istruzioni che si avvicinano alla lingua umana (e viceversa).

Sono stati sviluppati interpreti per molti linguaggi come, per esempio, COBOL, PASCAL, BASIC, C e poi PHP, ASP, Java e tanti altri.

Ogni linguaggio è più o meno adatto alle diverse applicazioni. Per esempio, per il Web i più usati sono PHP, ASP, Java e Javascript.

Quindi, la scelta del linguaggio da imparare è fortemente legata al campo di applicazione in cui vorresti lavorare.

Per esempio, se vuoi sviluppare per il Web, allora sicuramente investirai bene il tuo tempo imparando:

  • Indispensabili:
    • HTML (Hyper Text Markup Language): indispensabile per realizzare pagine web. Non è un linguaggio di programmazione ma un sistema di markup, cioè un insieme di istruzioni che servono per comunicare al browser le informazioni necessarie per costruire la pagina.
      Difficoltà: bassa
    • CSS (Cascading Style Sheets): neanche i "fogli di stile" sono un linguaggio di programmazione ma, insieme all'HTML, costituiscono la base irrinunciabile per realizzare pagine Web, delle quali curano principalmente gli aspetti estetici.
      Difficoltà: bassa
  • A scelta:
    • PHP (Personal Home Page poi diventato Hypertext Preprocessor): è il linguaggio di programmazione lato server open source gratuito per il Web più diffuso, anche grazie alla vastissima documentazione disponibile. È multipiattaforma, cioè gira su praticamente tutti i sistemi operativi.
      Difficoltà: alta
    • ASP.NET (successore di ASP: Active Server Pages): è il linguaggio di programmazione lato server di casa Microsoft, anch'esso molto diffuso ma ormai sempre meno preferito rispetto al PHP. La sua più grande limitazione è di non essere multipiattaforma e di girare esclusivamente su server Windows (molto costosi) ma, anche dal punto di vista delle prestazioni, più fonti confermano che PHP è di gran lunga migliore.
      Difficoltà: alta
    • Java: è un linguaggio di programmazione progettato essenzialmente per essere il più possibile indipendente dalla piattaforma di esecuzione ma, proprio per questo motivo, non è molto "prestante" rispetto ad altri linguaggi.
      Ha avuto una certa rilevanza nel mondo Web e oggi mantiene alto il suo prestigio grazie al fatto che è uno dei linguaggi più utilizzati per lo sviluppo di App per dispositivi mobile.
      Difficoltà: alta
  • Inoltre:
    • Javascript: linguaggio di programmazione lato client. Serve essenzialmente a far eseguire delle operazioni al browser come, per esempio, creare o riposizionare oggetti sulla pagina, cambiare dei valori nei campi e altro.
      Difficoltà: media
    • jQuery: è una libreria Javascript che ha lo scopo di semplificare la selezione, la manipolazione, la gestione degli eventi e l'animazione di elementi nelle pagine HTML. In pratica è una libreria di "macro", cioè gruppi d'istruzioni Javascript che svolgono compiti specifici.
      Difficoltà: media
    • AJAX (Asynchronous JavaScript and XML): permette lo scambio di dati in background fra web browser e server, consentendo l'aggiornamento dinamico di una pagina web senza esplicito ricaricamento da parte dell'utente.
      Difficoltà: media
    • SQL (Structured Query Language): è il linguaggio utilizzato dai database, cioè i "motori" che memorizzano dati in modo organizzato e ne permettono l'estrazione, quasi sempre utilizzati nella creazione di siti Web dinamici.
      Difficoltà: alta

Come puoi vedere, le cose da imparare per diventare uno sviluppatore Web non sono poche. Però, se mai inizi mai finisci e, in questo campo, non si finisce mai veramente perché le tecnologie sono in continua evoluzione! Smile

Quindi, se hai voglia e passione, inizia con lo studio dell'HTML, che è abbastanza semplice e ti permette immediatamente di capire se questo è il mestiere che vuoi fare, oltre a creare una base indispensabile per studiare tutto il resto.

Poi, se son rose fioriranno e se ti piacerà creare delle pagine Web, ti verrà voglia d'imparare a programmare veramente e questo vale per qualunque linguaggio in ogni campo d'applicazione.

Il metodo

Qualunque sia il linguaggio di programmazione che sceglierai d'imparare ti troverai di fronte a una domanda: «Ok, voglio imparare a programmare in XXXXX: cosa faccio?».

Il mio metodo per studiare tutti i linguaggi è sempre stato quello proattivo, cioè senza avere una reale esigenza del momento: immaginare situazioni ipotetiche con un problema informatico da affrontare e trovare la soluzione.

Questo metodo permette di affrontare e risolvere problemi, anche complessi, senza la fretta imposta da molte situazioni reali e permette di costruire con calma una "solida libreria" di soluzioni che ci saranno utili in futuro.

Per esempio, quando studiavo il PHP per il Web, ipotizzavo ogni giorno un diverso panorama, una ipotetica richiesta di un ipotetico cliente (o collega) e la realizzavo.

Quindi, richieste ipotetiche come «Voglio una pagina che mi permetta di modificare i dati di un elenco di persone nel database.» (PHP + MySQL) oppure «Mi serve una pagina con una lista di video da YouTube e voglio che quando clicco su "play" di un video, eventuali altri video in riproduzione si fermino» (Javascript) sono state la mia scuola.

Sì, perché ritengo che la pratica con problemi reali, ancorché ipotetici, sia indispensabile, molto più degli esercizi che di solito vengono proposti nei libri e che, pur essendo molto utili per capire i fondamenti di un linguaggio, difficilmente c'insegnano a scegliere i "tasselli" necessari per formare un mosaico più grande, capacità che si acquisisce soltanto con la pratica.

Quindi, dai libero sfogo alla fantasia, inventa ogni giorno un nuovo problema (anche piccolo) da risolvere e non aver paura di sperimentare e di fallire, perché ogni fallimento è un'occasione per imparare un "pezzetto" di quella affascinante, vastissima Scienza che è l'Informatica.

Potresti essere interessato a leggere anche il mio articolo "Macchine virtuali: un modo per sperimentare".

Se vuoi chiedere ulteriori spiegazioni o se vuoi esprimere la tua opinione, non esitare a farlo lasciando un commento Facebook, oppure contattandomi in privato!

Grazie per avermi letto fin qui! Smile

E non dimenticare di mettere il tuo "Mi piace" qui sotto! Smile

Fabio Donna

Commenti Facebook

N.B.: i commenti devono essere approvati prima della pubblicazione, quindi potrebbero non apparire subito.