Home
Coding: quale linguaggio di programmazione scegliere

29 Giugno 2020

Coding: quale linguaggio di programmazione scegliere

di

La seconda scelta importante, dopo avere deciso di imparare a programmare, è il linguaggio in cui esprimersi.

Che cos’è un linguaggio di programmazione

Un linguaggio di programmazione è un insieme di parole e simboli che servono a scrivere le istruzioni per un computer. Spesso si arriva a un compromesso tra la semplicità d’uso del linguaggio e la sua efficacia.

Linguaggi ad alto e a basso livello

I linguaggi di programmazione ad alto livello sono studiati per chi non ha una comprensione approfondita dell’hardware. Spesso usano parole simili al linguaggio umano e gestiscono automaticamente alcuni aspetti del computer; in genere, questi programmi funzionano su vari hardware.

I linguaggi a basso livello, al contrario, offrono ai programmatori un controllo granulare sul computer, ma richiedono conoscenze minuziose del suo funzionamento; i programmi scritti in linguaggi a basso livello possono non essere compatibili con hardware diversi.

Un linguaggio ad alto livello possiede le seguenti caratteristiche:

  • Relativa rapidità di scrittura
  • Relativa facilità di comprensione
  • Spesso la velocità di esecuzione è abbastanza alta
  • Possono essere usati su hardware diversi
  • Non richiedono la conoscenza dell’hardware

Un linguaggio a basso livello si presenta invece in questo modo:

  • Controllo diretto delle funzioni hardware
  • Possono aumentare la velocità di codici che necessitano del massimo della potenza di calcolo
  • Richiedono una comprensione dell’hardware
  • I programmi girano solo su processori simili

In un linguaggio ad alto livello molto diffuso, come Python, l’istruzione per visualizzare un testo è:

print("Ciao!")

Python è facile da leggere e da scrivere. L’istruzione mostra il messaggio Ciao! sullo schermo.

Una istruzione tipica scritta in un linguaggio di basso livello, detto assembly, ha invece un aspetto come:

MOV AX, 66H

Le istruzioni sono scritte in modo distante dal linguaggio parlato e fanno largo uso di numeri eadecimali, quelli che usano i simboli 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F prima di passare a 10, cioè hanno sedici unità (così come il nostro sistema decimale conta per dieci unità, da 0 a 9, prima di arrivare a 10). L’assembly riflette più fedelmente la rappresentazione dei dati usata all’interno del processore. L’esempio sceglie un numero e lo inserisce in una parte del processore detta accumulatore.

Il nostro linguaggio viene tradotto in codice macchina

Scritte ad alto livello o basso livello, le istruzioni che scriviamo vengono passate al processore nella forma del codice macchina. Si tratta di un insieme di cifre binarie (composte da 1 e 0), lette e interpretate dal processore. Le istruzioni in codice macchina sono formate da un opcode (codice operativo) e da uno o più operandi: il primo dice al computer cosa fare, i secondi quali dati usare.

Quando programmiamo, parliamo a un microprocessore

Il microprocessore è il cervello del computer e controlla la maggior parte delle operazioni. Esegue i comandi e segue le istruzioni del codice.

Un microprocessore pieno di codice binario

Quando programmiamo, di fatto inviamo sequenze di zero e uno al microprocessore, il cervello del computer.

Si programma più facilmente con un ambiente di sviluppo integrato

Un IDE, Integrated Development Environment o ambiente di sviluppo integrato, è un insieme di strumenti a disposizione dei programmatori. Include un editor di codice per la scrittura dei programmi ed è spesso dotato di funzioni che aumentano la produttività, come l’autocompletamento per le istruzioni e un codice cromatico per favorire la leggibilità. Alcuni prevedono un debugger per rintracciare gli errori e un compilatore o un interprete per testare ed eseguire i programmi.

Come il computer comprende il linguaggio di programmazione

Scriviamo in un linguaggio di programmazione da noi ragionevolmente comprensibile, che viene tradotto in codice macchina, cioè bit, cioè sequenze di 1 e 0, ciò che è più comprensibile per il microprocessore. Questa operazione viene eseguita da un interprete, se avviene per ciascuna istruzione inserita, oppure da un compilatore, se avviene in un colpo solo prima dell’avvio del programma.

Dal linguaggio umano alla conversione in linguaggio macchina all’esecuzione

Un programma nasce in un linguaggio di facile comprensione per gli umani e viene convertito in sequenze di uno e zero più comprensibili al computer, dopo di che viene eseguito dal microprocessore.

Che cosa può fare un programmatore

Dopo aver imparato a programmare, le competenze sviluppate possono essere usate su un ampio ventaglio di progetti utili e creativi:

  • Domotica: programmazione applicata all’ambiente domestico, per esempio per gestire luci o tende.
  • Videogiochi: i videogiochi sono un pretesto fantastico per cimentarsi con problemi nuovi, sperimentare e migliorare le proprie capacità. Sviluppare videogiochi in gruppo, da questo punto di vista, è il massimo.
  • Robot: usando schede come Arduino o Raspberry Pi insieme a kit o componenti elettronici, è possibile programmare il proprio robot.
  • Siti e app Web: usando HTML, CSS e JavaScript possono essere creati programmi che girano dentro ogni Web browser.

Esistono tante categorie di linguaggi di programmazione

Negli anni sono stati messi a punto svariati paradigmi o filosofie per progettare i linguaggi di programmazione che, non escludendosi a vicenda, spesso incorporano vari princìpi di base e possono essere usati in vario modo secondo l’approccio preferito dal programmatore.

Python, per esempio, può essere usato sia per la programmazione orientata agli oggetti, sia per quella procedurale; JavaScript per un paradigma orientato sia agli oggetti, sia agli eventi.

La scelta dell’approccio o del linguaggio spesso dipende dalle preferenze del programmatore. Ecco alcune definizioni e classificazioni dei linguaggi di programmazione.

Programmazione dichiarativa

I programmatori comunicano al computer il risultato desiderato, senza specificare come verrà raggiunto. Nel linguaggio Wolfram, per esempio, usando una sola riga è possibile creare una nuvola di etichette basata sulle parole della pagina di Wikipedia dedicata alla musica. Altri linguaggi dichiarativi includono SQL, usato per i database.

In Wolfram, la riga

WordCloud[WikipediaData["music"]]

genera una immagine come quella qui sotto.

Nuvola di parole generata dal linguaggio Wolfram da una pagina di Wikipedia

Una riga di programmazione in linguaggio Wolfram è capace di calcolare e rappresentare visivamente il numero di parole usate in una pagina di Wikipedia.

Programmazione imperativa

I linguaggi imperativi richiedono una lista di comandi che il computer deve compiere. Il programmatore studia come va eseguito il compito, poi fornisce istruzioni passo passo al dispositivo. Si tratta di linguaggi diffusi che includono Python, C, C++ e Java.

In Python si potrebbe scrivere

user = input("Come ti chiami?")
print("Ciao", user)

Per ottenere sul video quanto segue:

Come ti chiami?

E un cursore di attesa. A seguito di una risposta, per esempio Stefania, il computer mostrerà il messaggio

Ciao Stefania

Programmazione orientata agli eventi

Il programma attende che accadano determinati eventi e, quando ciò avviene, avvia la sequenza corretta. Per esempio, un programma può reagire alle azioni dell’utente, all’input di un sensore o a messaggi di altri sistemi informatici.

Per scrivere programmi orientati agli eventi, possono essere usati, tra gli altri, JavaScript e Scratch.

Una riga possibile di un programma JavaScript a eventi è la seguente:

<input type="button" value="Clicca qui!" onClick="showMessage();">

La riga crea un pulsante dentro una pagina Web. Se viene fatto clic sul pulsante, altre istruzioni susseguenti potranno generare qualunque tipo di reazione, dallo scaricamento di un programma al caricamento di un’altra pagina web, al riempimento di un modulo online eccetera.

Programmazione procedurale

È un paradigma basato su funzioni che contengono blocchi di programma riutilizzabili. Le funzioni possono avviare in ogni momento altre funzioni o riavviare se stesse, agevolando lo sviluppo, il collaudo e la gestione dei programmi. Molti linguaggi di programmazione diffusi, come Java e Python, consentono la programmazione procedurale.

Uno schema di programmazione funzionale

Ogni funzione risolve un problema specifico ogni volta che si presenta nel programma; in questo modo può essere scritta una volta sola e riutilizzata all’infinito.

Programmazione orientata agli oggetti

L’idea di base è che i dati e le relative istruzioni sono conservati insieme in oggetti, blocchi monolitici di codice che possono interagire gli uni con gli altri per raggiungere gli obiettivi del programma.

Lo scopo è produrre un codice più modulare, facile da gestire e riutilizzabile. Molti linguaggi di programmazione diffusi, come C++, JavaScript e Python, consentono la programmazione orientata agli oggetti.

Dentro un oggetto software

Dentro un oggetto software si trovano tipicamente questi componenti.

Linguaggi di programmazione visuale

Agevolano lo sviluppo di un software usando una interfaccia a trascinamento, in modo da consentire al programmatore di velocizzare il lavoro e ridurre gli errori. Visual Basic, per esempio, prevede strumenti per progettare visivamente le interfacce utente. Scratch è un altro linguaggio altamente visivo, spesso usato per imparare a programmare.

Un esempio di programma Scratch

Programma Scratch che reagisce quando si clicca un pulsante.

Come scegliere un linguaggio di programmazione

La scelta del linguaggio da parte del programmatore può essere dettata dall’hardware adottato, dal team di lavoro o dal tipo di applicazione da creare, e spesso è aperta. Ecco alcuni esempi di linguaggi diffusi tra cui si potrebbe decidere per chi comincia.

  • Scratch
    Ottimo linguaggio di programmazione per principianti, ideale per creare videogiochi semplici.
  • JavaScript
    Linguaggio usato dalle pagine Web per l’interattività.
  • Python
    Linguaggio flessibile che privilegia la facilità di comprensione del codice.
  • Java
    Molto usato dai servizi finanziari, dai piccoli dispositivi e dagli smartphone Android.

Questo articolo richiama, a partire dall’immagine di apertura, contenuti da Coding – guida facile per principianti.

L'autore

  • AA.VV.
    AA.VV. sta per Autori Vari ed è un acronimo che si usa quando un libro ha tanti autori (in genere più di tre). Sotto questo profilo quindi troverai titoli che non hanno niente in comune tra loro, se non il fatto di essere stati scritti almeno a sei mani. Se vuoi contattare uno dei singoli autori di una raccolta la cosa migliore è digitare il suo nome e cognome nel form di ricerca; se nemmeno così trovi quello che stai cercando, contattaci.

Vuoi rimanere aggiornato?
Iscriviti alla nostra newletter

Novità, promozioni e approfondimenti per imparare sempre qualcosa di nuovo

Gli argomenti che mi interessano:
Iscrivendomi dichiaro di aver preso visione dell’Informativa fornita ai sensi dell'art. 13 e 14 del Regolamento Europeo EU 679/2016.

Libri che potrebbero interessarti

Tutti i libri

Insegnare il coding

La guida per formare i programmatori del futuro

23,66

24,90€ -5%

di Stephen R. Foster, Lindsey D. Handley


Articoli che potrebbero interessarti

Tutti gli articoli