Lezione 1. Verso la programmazione: tra C++ e Python

timbro_digitale_sysdataOgni volta che si inizia a studiare un linguaggio di programmazione si parte sempre dall’esempio/esercizio “Hello World!” in cui, basilarmente, si fa scrivere al computer, sullo schermo, Hello World! Ergo, prenderò questo esempio e lo descriverò ma, prima, di cominciare ciò ci sono due domande che ci si dovrebbe porre quando ci si decide di approcciare i linguaggi di programmazione e sono: quale linguaggio imparare e perché?

Normalmente, si sceglie anche all’università, il classico C++, probabilmente, il più difficile da imparare ma anche il più usato mentre se si vuole provare, tanto per approcciarsi al mondo informatico, con qualcosa di più semplice c’è il buon Python: entrambi sono due linguaggi flessibili che si possono adattare ai progetti più disparati compresa la programmazione di videogiochi.

C++ è uno sviluppo ulteriore del vecchio linguaggio C portato a termine da Bjarne Stroustrup nel 1983 ai Bell Labs nel tentativo di creare un linguaggio veloce ed elegante. Per imparare questo linguaggio dalle basi consiglio di iniziare dal libro Programming – Principles and Practice Using C++ scritto dallo stesso Bjarne Stroustrup: è piuttosto complicato ma lascia al lettore tutte le basi di cui ha bisogno per potersi approcciare anche in pratica a C++. Su questo libro viene consigliato di usare Visual Studio per sviluppare i propri programmi ed esercizi: per i principianti, dal mio punto di vista, è un sistema molto ricco di opzioni e complicato per cui ci vuole un po’ di pazienza prima di imparare, effettivamente, ad utilizzarlo.

Python, inventato da Guido Van Rossum e chiamato così in onore dello show della BBC “Monty Python’s Flying Circus” (https://www.youtube.com/watch?v=_Ds5LjbyX74&list=PL5D9B54A2765DE20A), punta maggiormente sulla leggibilità, semplificando considerevolmente la sintassi a differenza di C++. Per ulteriori informazioni circa il concept alle basi di Python c’è un interessante articolo blog scritto dal suo stesso creatore al seguente link: http://python-history.blogspot.it/2009/01/pythons-design-philosophy.html. Per quanto riguarda Python ci sono parecchi manuali on-line di vario genere e reperibili anche in Italiano per poterlo imparare: per esempio, c’è “Learn Python in the hard way” http://learnpythonthehardway.org/book/ oppure su questo sito http://www.python.it/doc/newbie/ troverete vari libri per principianti da scaricare in italiano ma è sempre consigliabile conoscere un po’ d’inglese quando ci si approccia alla programmazione. Per quanto riguarda lo sviluppo dei programmi e degli esercizi anche per Python si può usare Visual Studio ma ritengo molto più semplice e veloce la scelta di Notepad++, un editor gratuito scaricabile su https://notepad-plus-plus.org/, che supporta vari linguaggi compreso C++ (quindi se non vi piace Visual Studio o proprio non vi ci trovate eccovi un sostituto semplice e veloce).

Quello a cui non sempre pensiamo è che, nella vita quotidiana, siamo circondati dai computer che non sono solo il nostro laptop, tablet o desktop ma anche i nostri smartphone, orologi, navigatori, lettori mp3, ascensori, televisioni, addirittura condizionatori, etc.

L’hardware è dato dalle componenti fisiche di questi meccanismi, dalle loro varie parti e circuiti mentre il software è composto dall’insieme dei programmi presenti nello stesso dispositivo e che ne designano le azioni in base al linguaggio con cui sono stati elaborati.

Così, quando scriviamo questo linguaggio dobbiamo tenere conto di ogni piccolo passo che il nostro programma deve fare perché, in questo senso, il computer è una macchina “stupida”. Per esempio, se dicessimo al nostro amico come raggiungere il bagno basterebbe un “La porta in fondo a destra” mentre se volessimo spiegare al computer la stessa cosa l’enunciato appena trascritto non basterebbe per fargli portare a termine l’azione richiesta. In questo caso, infatti, dovremmo dirgli prima di alzarsi dalla sedia, fare 5 passi verso la porta di fronte a lui, raggiungere la porta, girarsi di 45° a destra, fare altri 10 passi, appoggiare la mano sulla maniglia della porta, spingere la maniglia verso il passo e, mantenendo la maniglia in tal modo, spingere la porta in avanti, il bagno è stato raggiunto.

Ogni volta che scriviamo un programma, anche il più semplice come “Hello World!” quindi, dobbiamo tenere conto della “stupidità” del computer e descrivere ogni cosa passo per passo, anche quella che ci sembra più inutile, altrimenti il nostro pc non sarà in grado di concludere l’azione che gli stiamo richiedendo di fare. Ecco perché anche la sola dimenticanza di un punto e virgola all’interno di una stringa di programma crea un errore.

Qui, data la semplicità dell’esempio metterò a confronto i due linguaggi che ho citato inizialmente, ovvero C++ e Python, così da dare anche un’idea delle differenze che intercorrono tra di essi.

In C++ il programma sarà il seguente:

//Questo programma in C++ scrive sullo schermo “Hello World!”

#include “std_lib_facilities.h”

int main ()           //I programmi C++ iniziano ad eseguire la funzione main

{

          count <<”Hello World!\n”;           //output “Hello World!”

          return 0;

}

Tutto ciò che viene scritto dopo il token // è un commento, quindi significa che non verrà calcolato dal programma ma è solamente a beneficio di chi scrive e legge il codice di programmazione: nel caso di un programma molto corto come questo i commenti tengono ad essere superflui ma quando ci si approccia a pagine e pagine di codici diviene vitale averli anche solo per non perdersi e rendere il controllo degli eventuali errori più veloce.

#include dice al nostro computer di rendere disponibili gli strumenti contenuti nel file selezionato, nel nostro caso “std_lib_facilities.h” così da rendere disponibile la sequenza di I/O (ovvero input e output) di C++. Normalmente quando si usa #include il file finisce sempre con .h e viene chiamato header: questi contiene tutte le definizioni dei termini usati dal nostro programma come, per esempio, count. In altre parole è un dizionario che dice al computer cosa significano i termini che andremo poco dopo ad utilizzare.

Ogni programma C++ deve avere sempre una funzione chiamata main che serve a dire al nostro computer quando iniziare ad eseguire il programma.

Una funzione è una sequenza di istruzioni ed è costituita da quattro parti specifiche:

  1. int (o integer) che sarebbe il numero intero e che specifica il tipo di risultato che ci darà la nostra funzione
  2. Un nome, nel nostro caso main
  3. Una Parameter List, ovvero una lista di parametri chiusa all’interno delle parentesi, nel nostro caso tonde (). Esse possono avere una stringa come (int argc, char* argv[]) al loro interno oppure essere semplicemente vuote. Nel nostro caso sono vuote perché la funzione non può assumere nessun tipo di argomento: il nostro programma esiste solo ed esclusivamente per far scrivere al computer “Hello World!” non per fargli calcolare, per esempio, l’area di un cerchio.
  4. Una Function Body circoscritta all’interno delle parentesi graffe {} in cui vi è la lista delle azioni che il programma deve performare. Per esempio di tutte le azioni che il nostro computer dovrebbe fare per raggiungere il bagno. Nel caso di “Hello World!” abbiamo l’ordine di output standard COUNT che, seguito da <<, farà apparire sullo schermo ciò che è scritto tra le virgolette “”

return 0 viene normalmente utilizzato per essere certi che il programma sia stato eseguito e terminato con successo, nel nostro caso la funzione ha valore 0 e, quindi, dovrà ritornarci lo stesso valore (INT equivale a zero anche perché la nostra funzione è nulla int main (), quindi return deve ridarci 0). La presenza di \n tra le virgolette dopo la scritta “Hello World!” non verrà scritta dal computer ma gli darà il semplice ordine di porre il cursore alla fine della suddetta frase.

Passiamo, ora, a Python:

#Questo programma in Python scrive sullo schermo “Hello World!”

print (“Hello World!”);

Ed ecco fatto: come potete vedere al contrario di quanto accade con C++ il programma è finito in una sola riga. Ciò che viene scritto dopo il cancelletto # equivale al token // di C++ ovvero ad apertura per un commento che il programma non leggerà ma aiuterà il programmatore a capire a che punto si trova o che tipo di programma ha davanti. Print, come sarà ovvio, dà l’ordine al computer di scrivere tutto ciò che si trova tra parentesi e tra virgolette sullo schermo.

Python, infatti, è un linguaggio di programmazione più vicino al “linguaggio parlato” di quanto non lo sia C++ e più semplice da imparare anche per coloro che sono alle prime armi.

La domanda, ora, sorge spontanea: ma se Python è tanto semplice e flessibile perché tutti si fissano ad usare, insegnare e prediligere C++? Prima di tutto ogni linguaggio di programmazione presenta i propri pregi e difetti, spesso è meglio utilizzare C++ altre volte, invece, è preferibile Python e, idea del tutto personale, penso sia anche dovuta alla difficoltà maggiore con cui si impara C++. Mi spiego, il momento in cui vediamo un qualsiasi programma Python è molto semplice da comprendere anche per chi non ha mai visto un codice di programmazione in vita sua il che, da un certo punto di vista, renderebbe il lavoro di un programmatore meno specialistico ed alla portata di tutti: in una società come la nostra questo tipo di possibilità non è molto allettante, basti vedere come, oggi, chiunque abbia un programmino pre-costituito si descriva come un grafico informatico esperto nella realizzazione di siti in HTML, CSS e Java.

È vero, il lavoro tra un grafico professionista ed un grafico dilettante è sempre evidente agli occhi di chi conosce quello di cui sta parlando ma le varie aziende, i vari clienti ed acquirenti tendenzialmente preferiscono pagare di meno ed avere un sito un tantino più brutto e pasticciato che pagare di più ed avere una pagina pulita e professionale. In Italia, infatti, la maggior parte di siti sono ancora terribilmente indietro con i tempi: alcuni, ancora e persino, creati per i vecchi schermi del Commodore 64.

AGGIORNAMENTO per “Hello World” in C++

Nel caso foste completamente a digiuno di programmazione e non sapeste come procurarvi ed installare nel vostro compiler (per esempio, Visual Studio) la std_lib_facilities.h per C++ che è, in ogni caso, una vecchia libreria potete usare tranquillamente iostream, già predefinita al suo interno.

Attenzione però che due piccole cose cambiano nella scrittura del codice di programmazione:

  1. al posto di std_lib_facilities.h metteremo iostream
  2. anziché usare count scriveremo std::cout.

//Questo programma in C++ scrive sullo schermo “Hello World!”

#include “iostream”

int main ()           //I programmi C++ iniziano ad eseguire la funzione main

{

          std::cout <<”Hello World!\n”;           //output “Hello World!”

          return 0;

}

Share the love

Comincia la discussione

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.