Imparare a programmare da zero

programmer3-373x246

Introduzione – Cos’è un programma?

Direi che questa potrebbe essere non “una”, ma “la” domanda che si deve porre chi vuole capire cosa vuol dire “programmare”.

Allora smarchiamocela subito con una definizione da scolpire nella pietra:

Un programma è un insieme finito di istruzioni.

come ad esempio una ricetta per fare una torta.

Il programma, come la ricetta, prevede una serie di operazioni da svolgere in un determinato ordine per arrivare ad ottenere il risultato voluto.

Supponiamo, utilizzando come esempio una tipica situazione domestica, di voler insegnare a un robot a fare le torte.
Perchè? Perchè si.

The General Problem

Il robot non pensa, non sa niente, non ha una coscienza.
L’unica cosa che sa fare è eseguire degli ordini, quindi, per spegargli come fare la nostra torta dobbiamo cercare di semplificare al massimo le operazioni, “smontando” il problema del fare una torta in più parti.
Ad esempio:
– Prendere gli ingredienti
– Preparare l’impasto
– Infornare l tutto

Una volta che abbiamo progettato bene il nostro programma-torta, dobbiamo trovare il modo per parlare con il robot per fornirgli l’elenco delle istruzioni che prevede il nostro algoritmo, in modo che lui, azione dopo azione, riesca a preparare la nostra torta.

Come fare?
Per riuscire a dialogare con il nostro robot abbiamo bisogno di un interprete, che trasformi il nostro linguaggio in un idioma comprensibile al robot, il cosiddetto linguaggio macchina, che non è altro che un insieme di 0 e di 1.
(Si, come nei film)

L’interprete (o gli interpreti) che ci verrà in soccorso sarà un linguaggio di programmazione.

Linguaggi di programmazione – Cosa sono?

Lo scopo dei linguaggi di programmazione è di interpretare il linguaggio umano e “tradurlo” in linguaggio macchina.
Si suddividono in due grandi categorie: quelli di alto livello e quelli di basso livello.

La distinzione è dovuta al livello di astrazione, ossia alla “distanza” dal linguaggio macchina.

Spiegandolo con l’esempio della torta, supponiamo di voler prendere 200g di farina da un sacchetto utilizzando un cucchiaio.

Un linguaggio di basso livello potrebbe essere

e così via.
E già abbiamo dato per scontato un sacco di cose, come ad esempio il fatto di avere un braccio, di poterlo muovere, di averci attaccata una mano, di avere un cassetto delle posate, di sapere cos’è un cucchiaio ecc.

Un linguaggio un po’ più astratto potrebbe essere

Mentre un linguaggio di livello ancora più alto potrebbe fare direttamente

Capita la differenza?
L’astrazione si può identificare quindi con la “distanza” dalla macchina e la “vicinanza” all’uomo.

Python

La domanda che ora sorgerà spontanea è: ma quindi che mi frega dei linguaggi di basso livello se con quelli di alto livello posso dare per scontate un sacco di cose?

Linguaggi di programmazione – Quale scegliere?

Una delle domande più frequenti di chi inizia a programmare è: qual è il miglior linguaggio di programmazione?
E la risposta più corretta è a sua volta un’altra domanda: per fare cosa?

Il fatto è che esistono centinaia, forse migliaia di linguaggi diversi, ma ciascuno di essi è stato studiato e pensato appositamente per uno scopo ben preciso (o perlomeno, alle sue origini).
Quindi difficilmente si troveranno siti web fatti con Assembly, PLC programmati in PHP o applicazioni desktop per Mac o Linux scritte in Asp.Net

Con il passare del tempo, diversi linguaggi sono stati sviluppati ed estesi ad “aree di competenza” per i quali non erano stati creati, ma chiaramente è come usare un Bulldozer in una gara di formula 1 o montare una benna su una Lamborghini Aventador per usarla come spazzaneve…

Quindi informatevi di volta in volta sui linguaggi disponibili a seconda della strada che volete intraprendere.

Note:
– Mettete in conto il fatto di dover/poter utilizzare più di un linguaggio contemporaneamente
– Date un’occhiata a dove si può spingere il delirio e leggetevi la pagina di wikipedia sui linguaggi di programmazione esoterici

Primi passi – Strutture comuni

Come le diverse lingue dei diversi paesi, i linguaggi di programmazione hanno regole e sintassi diverse, ma sono tutte accomunate dallo stesso scopo: comunicare con una macchina.
E tutti contengono delle strutture “base” comuni che vengono utilizzate poi come mattoncini lego per creare algoritmi complessi.

Vediamo quali sono:

if – else

La struttra if-else direi che è la più comune in assoluto.
Si può ricondurre facilmente a “SE – ALTRIMENTI” e serve a verificare una condizione.

come si può vedere, se la (condizione) è vera fa “questo”, altrimenti fa “quell’altro”

esempio con la famosa torta:

Cicli

I cicli sono l’altra struttura comune a tutti i linguaggi, servono ad eseguire ripetutamente un gruppo di istruzioni finchè non si verifica una certa condizione.
Possono essere di due tipi, i cicli “for” e i cicli “while”.

I cicli for partono dal presupposto che all’inizio dell’esecuzione si sappia già quante saranno le ripetizioni e si possono interpretare come un “Per n volte fai questo”.

Esempio: è il mio compleanno e sulla torta ci sono 24 candeline.
Il ciclo for allora potrebbe essere

I cicli while invece basano il loro numero di esecuzioni sul verificarsi o meno di una condizione e sono riconducibili a un “Finchè”

Il ciclo while della torta sarebbe:

La differenza dal ciclo for si ha perchè io eseguo l’azione di spegnere una candelina tante volte finchè non ce ne sono più accese, a prescindere dal numero.

Il ciclo while presenta anche una variante “do-while” che invece verifica la condizione DOPO aver effettuato l’azione, del tipo:

In questo modo l’azione viene eseguita SEMPRE almeno una volta.

Questa situazione ad esempio produrrebbe un errore nel caso che all’inizio del ciclo do-while non ci siano candeline accese.
Una persona reale semplicemente non soffierebbe, ma i computer sono macchine e non pensano e sicuramente alzerebbero tutto lo zucchero a velo con una bella soffiata PRIMA di vedere se c’erano candeline accese da spegnere.

La domanda che qui sorge spontanea quindi è: perchè usare i cicli do-while che possono generare errori?
Giusto, ma ci sono situazioni in cui tornano utili.

Wisdom of the Ancients

Sporcarsi le mani

Bene, arrivati fin qui magari vi è venuta voglia di provare da soli, eh?
Quello che posso consigliare è aspettare ancora un attimo a buttarsi su un linguaggio in particolare e soffermarsi ancora un momento sulle basi logiche utilizzando il portale http://code.org/learn.

Code.org è un progetto molto interessante portato avanti con il contributo dei “big” dell’informatica attuale con lo scopo di diffondere una conoscenza che diventerà preziosissima nell’immediato futuro.

I tutorial sono guidati, suddivisi per argomento e ordinati per difficoltà crescente e, anche se a prima vista possono apparire un po’ infantili forniscono basi importantissime (e sono anche divertenti da fare).

Una volta conclusi quelli, potete cimentarvi con un linguaggio “vero”, e quello che consiglierei è partire con uno di alto livello, tipo Python, nel quale ritroverete facilmente tutti i “comportamenti” che avete osservato nei tutorial di Code.org.

Come link stavolta consiglio http://learnpythonthehardway.org/ o http://www.codecademy.com/tracks/python.
Il metodo di studio proposto da quei siti funziona benone :)

Se durante l’approfondimento del mondo della programmazione voleste mettere alla prova le conoscenze che avete acquisito, potete cimentarvi nelle sfide di Project Euler o CodeAbbey.

Buon divertimento!

37834819

(Fonte: qui, qui e qui)

IIBA CBAP Braindump : Cetified business analysis professional (CBAP) appliaction

Go back and show it to you. Wu Fei listened a little embarrassed How are they so generous You didn t bring anything back. When the white stone picked up the load, he Cetified business analysis professional (CBAP) appliaction took the horse and went to the wheat field with the guest. Otherwise, who can afford the big medical CBAP Braindump expenses However, the baby needs so much money to IIBA Certifications CBAP raise, so I was not willing to let the baby who was only a year old to go to CBAP Braindump IIBA CBAP Braindump the house to raise her. We are free to come up with a IIBA CBAP Braindump few letters, which are historical archives.

Xianfeng Emperor said You have IIBA CBAP Braindump requisitioned 1 million grain IIBA CBAP Braindump from Hunan and Hubei, CBAP Braindump and you should come up with a piece of silver to reinforce IIBA CBAP Braindump the embankment and block the port. Tseng Kuo fan first to the grandfather s room knocked three rang, but also directed at his mother and uncle knelt and kowtow. was told that a man who had adult, officer adults and others walked early from the back door. Please check the emperor.Daoguang indignantly furious, said immediately, the worship of incompetence of IIBA CBAP Braindump the school administration, Cetified business analysis professional (CBAP) appliaction school officials general dismissal, all sentinels IIBA CBAP Braindump to serve immediate purpose, have the courage to beat IIBA Certifications CBAP the teachers, to destroy his door Tseng Kuo fan one to authentic The emperor Sanming, Chen Banqi children thanked the emperor Daoguang emperor for a long time before said self proclaimed ascended the throne, around the bandit constantly, I know this is the banner of the scum in the tyranny of the Han caused by the racial discrimination, the chaos of the country You go on tomorrow, back to Tai Hing, A look at the school in Beijing County, official, of the Holy Order then arrived. Master gentleman asked What big deal can not wait until we go back Officials said A filial piety, bought fifty thousand two hundred silver to buy a history.

IIBA CBAP Braindump A soldier will be excited.Because you really know how big an armed group.You no longer feel insignificant when you see so many iron guys.We CBAP Braindump skim over at low altitude, and we waved our rifles and helmets with our Field Cetified business analysis professional (CBAP) appliaction Army brothers on the ground. I am happy not work, IIBA Certifications CBAP I give you a small Zhuang these dogs day to see what IIBA CBAP Braindump is a dog head brigade Xiaozhuang tell you what is the special war elite 81 shot just two rings just two shots. tesking those joyful faces that rocked their bodies with percussion made by black buddies in their tents

shredded pork recipes keto, how to lose weight while on letrozole med, fizz from corrie weight loss, keto recipes to make with ground beef, get checked for unexplained weight loss, how many hours per pound weight loss, how to lose weight while drinking beer, after school uee weight loss, 6 eggs a day weight loss, what is the best fruit to eat to lose weight, i am morbidly obese and need to lose weight, 90 lb weight loss man, eating small portions, protein capsules for weight loss, eating less weight loss, homemade healthy smoothies for weight loss, how much hca for weight loss, diet pills are some rx fakes, when dieting what are the best fruits to eat, eating the right food to lose weight, keto recipes made with rotisserie chicken, why does the egg lose weight in salt water, can a 15 year old take weight loss pills, what is the best body wrap for weight loss, carer freezer fat removal lose weight fast at home equipment beauty machine, weed helps in weight loss, what should target heart rate be to lose weight, niacin weight loss when, how to lose weight dangerously, what is an easy exercise to lose weight, how much weight will i lose on a vegetable and fruit diet,

  • Programmavo con il Commodore16.. Mi è tornata la voglia e seguirò i consigli nella tua carrellata. Grazie per la selezione.
    Un saluto.

  • un post essenziale e chiarissimo, complimenti :)

  • duccioarmenise

    Ottima introduzione all’argomento, come primo libro da cui iniziare vorrei segnalare Imparare a Programmare di Chris Pine, tradotto in italiano.
    E’ basato sul linguaggio Ruby che è molto simile a Python e, se ci si trova in difficoltà, si può contare sull’aiuto degli altri studenti nei commenti di ciascun capitolo.

  • Salvatore

    Ho cercato diversi articoli sul programmare da zero ma tutti spiegavano la programmazione con nozioni che si dovevano già sapere, il tuo post è chiaro e utilissimo, complimenti e grazie :)