Nel mio pellegrinare nella rete mi sono trovato spesso davanti a persone desiderose di imparare a programmare ma che ignoravano i fondamenti di questa “dottrina”. In questi casi la domanda che segue naturale è sempre “quale linguaggio per cominciare?”
Vorrei ricordare a queste persone che programmare non significa conoscere un linguaggio di programmazione (o per lo meno, non solo) bensì conoscere il computer nel suo funzionamento a livello “macchina”, come “pensa”, insomma… come funziona.
Per questo metterò in fila alcune “lezioni” sulla programmazione in senso lato, astratte da ogni linguaggio, che sarà la base per lo studio di ogni linguaggio incontrerete nel vostro cammino.
In questa prima lezione partiamo dal basso. Da molto in basso. Talmente in basso che andremo oltre il concetto di programmazione per calcolatori concentrandoci su finalità, mezzi e basi della programmazione “pura”.
Per programmazione si intende comunemente “un insieme di operazioni ordinate che vanno effettuate per raggiungere un obbiettivo“.
Come vedete questa definizione si adatta a molti ambiti, e non solo quello informatico. Possiamo infatti programmare una vacanza. Anche in questo caso infatti dobbiamo scegliere una serie di tappe da fare giorno dopo giorno (operazioni ordinate) in cui dovremo andare (esecuzione) per poter passare una vacanza che ci soddisfi (obbiettivo).
Questo, mi raccomando, è il concetto fondamentale che sta dietro a tutto quello che faremo d’ora in avanti.
L’insieme di queste tre parole chiave (operazioni ordinate, esecuzione, obbiettivo) prende il nome di algoritmo. Un algoritmo è costituito infatti da una lista finita di operazioni da eseguire finalizzate al raggiungimento di un obbiettivo in un tempo finito.
Notate che ho evidenziato la parola “finito”. Questo perché sembra scontato ma non lo è. Esistono infatti parecchi “pseudo-algoritmi” o “liste di operazioni” che necessitano di essere ripetute infinite volte per raggiungere il loro scopo (per esempio trovare il valore del pi greco, o gli zeri di un polinomio per approssimazioni successive). Questi non sono algoritmi data la loro inapplicabilità (ma possono diventarlo se ci accontentiamo di una certa approssimazione).
Da queste considerazioni appare evidente il legame fra la programmazione pura e gli algoritmi. La programmazione diventa quindi “l’arte” di miscelare uno o più algoritmi per raggiungere uno o più scopi.
Nella prossima lezione parleremo in dettaglio degli algoritmi introducendo diagrammi di flusso e pseudo-codice.
molto interessante!