Sommario
< Home
Stampa

Linguaggi e applicazioni

In questa lezione andiamo a vedere quali sono le più diffuse tipologie di applicazioni software realizzate oggi. Successivamente vedremo un elenco di linguaggi e a quali paradigmi ed applicazioni sono associabili.

Tipologie di applicazioni

In questa tabella vediamo le più diffuse tipologie di applicazioni oggi realizzabili:

TipologiaDescrizioneTecnologie e linguaggi
Applicazione da terminaleSi tratta del più semplice tipo di applicazione, che prevede una interfaccia utente testuale, nessuna grafica ed è utile sia a scopo diattico, sia per realizzare tutti gli quegli strumenti per cui non è necessaria una interfaccia grafica.Supportata dalla maggior parte dei linguaggi
Applicazione desktop graficaApplicazione con una interfaccia a finestra eseguibile su un pc con un moderno sistema operativo (WIndows, Mac, Linux). Per realizzare applicazioni con interfaccia grafica è necessario sia conoscere un linguaggio sia utilizzare una libreria o framework grafico per gestire l’interfaccia grafica.

I linguaggi più diffusi che supportano pienamente le app desktop sono C++, Java e C#, anche se esistono librerie anche per altri linguaggi.

E’ possibile comunque trasformare, con opportuni strumenti, una applicazione HTML-Javascript in una applicazione Destkop.
Sito Web (applicazione Web)

Un sito web è una applicazione per la visione di contenuti basata su un browser che visualizza una pagina web basata su linguaggio HTML.

CI sono due tipi di pagine:
– pagina statica HTML: pagina che viene visualizzata e che non prevede interazione con l’utente, ma solo visualizzazione di contenuti (es. pagina di un giornale online).

– pagina web dinamica: in questo caso la pagina è interattiva e si comporta come una vera applicazione, come un social, un gioco online, una app usabile da browser.
La tecnologia di riferimento è HTML-CSS-Javascript, dove i primi due sono linguaggi che servono a descrivere i contenuti, mentre Javascript è un linguaggio che permette di trasformare la pagina web in una vera applicazione.
Web ServerUn server web è una applicazione che resta sempre attiva e riceve richieste (normalmente da pc o mobile) tramite una connessione Web HTTP a cui risponde inviando pagine html-css-javascript che verrà visualizzata su browser.E’ realizzabile da molti linguaggi: i più diffusi sono PHP, Java, C#, Python, Javascript, ecc.
Web ServiceUn web service è simile ad un web server (la tecnologia è la stessa). La differenza è che un web service non invia pagine html, ma dati. Viene usata sia dai client web (in Javascript) o dalle app mobile.E’ realizzabile da molti linguaggi, i più diffusi sono Java, C#, Python, Javascript PHP, ecc.
App mobileSi tratta delle app mobile per sistemi iOs o Android. Ha una interfaccia utente touch.I linguaggi di riferimento sono Java/Kotlin per Android, e Swift per iOs.

E’ comunque possibile realizzare app mobile anche in Javascript e C#.
applicazione IoT e microcontrollori.Tipo speciale di applicazione che viene installata su un dispositivo, ad esempio un sensore per il rilevamento dell’inquinamento o una lampadina accendibile da remoto.

Le app IoT non hanno una interfaccia utente, ma vengono controllate da remoto tramite una applicazione web.
Si usano molti linguaggi, in particolare C++ o Python.
IALe applicazioni di intelligenza artificiale basate su Machine Learning sono applicazioni basate che svolgono operazioni di elaborazione senza che sia predisposto un algoritmo ma tramite un modello computazionale preaddestrato.I linguaggi principalmente usati sono C++ (per la realizzazione del modello) e Python (per l’applicazione vera e propria).
Applicazione di calcoloApplicazione che svolge operazioni di memorizzazione e calcolo molto complesse. C/C++ ma anche Python (grazie alle potenti librerie scritte in C++).
VideogiocoApplicazione gicoo interattiva che dispone di una interfaccia grafica. Presente su piattaforme pc o dedicate (console).C/C++ (per il motore di gioco) mentre per l’interazione con l’utente si usano C# o Javascript.
LibreriaNon è una vera applicazione, ma un modulo che svolge delle funzioni e viene utilizzato dalle altre applicazioni.Tutti i linguaggi moderni permettono di realizzare librerie, anche per altri linguaggi, tramite il meccanismo delle API.
Sistema operativoSoftware fondamentale per l’utilizzo di un computer, gestisce tutte le altre applicazioni, la memoria, la cpu e il filesystem.C (Linux e Mac) o C++ (Windows e Mac).

Meritano una menzione speciale i sistemi operativi

Linguaggi

Qui un elenco dei più diffusi linguaggi di programmazione.

LinguaggioDescrizioneParadigmi di programmazionePrincipali utilizzi
CLinguaggio capostipite della programmazione strutturata, ha una facile curva di apprendimento all’inizio ma consente operazioni di elaborazione della memoria più avanzate di altri linguaggi.
Per questa ragione è considerato un linguaggio un po’ ostico per operazioni complesse.
Programmazione strutturataSistemi operativi
Applicazioni da terminale.
Applicazioni di calcolo.
Videgiochi.
C++E’ una estensione del C, ma con la programmazione ad oggetti e strutture dati più evolute.Programmazione strutturata.
Programmazione ad oggetti.
Sistemi operativi
Applicazioni da terminale.
Applicazioni di calcolo.
Videgiochi.
IA.
IoT.
JavaLinguaggio per la programmazione ad oggetti pura, multipiattaforma. Recentemente ha introdotto anche elementi funzionali.Programmazione ad oggetti.
Programmazione funzionale (parziale).
Applicazione desktop.
App mobile.
Web Server.
Web Service.
C#Linguaggio per la programmazione ad oggetti ma anche funzionale, multipiattaforma.Programmazione ad oggetti.
Programmazione funzionale (parziale).
Applicazione desktop.
App mobile (ibrida).
Web Server.
Web Service.
Videogiochi.
PHPLinguaggio per applicazioni web lato server, derivato dal C.Programmazione ad oggetti.Web Server.
Web Service.
PythonLinguaggio molto semplice da imparare, ha come applicazioni principali il calcoloProgrammazione ad oggetti (parziale).
Programmazione funzionale (parziale).
Applicazioni di calcolo.
IA.
IoT.
Web Server.
Web Service.
Applicazioni desktop (ibride).
JavascriptLinguaggio che nasce per i browser per rendere interattive le pagine web. Grazie a NodeJS è diventato un linguaggio per realizzare molti tipi di applicazioni.Programmazione ad oggetti (parziale).
Programmazione funzionale (parziale).
Applicazione Web client.
Applicazione desktop.
App mobile (ibrida).
Web Server.
Web Service.
Videogiochi.
TypescriptEstensione di Javascript che aggiunge una migliore gestione sia della programmazione ad oggetti che funzionale.Programmazione ad oggetti.
Programmazione funzionale.
Applicazione Web client.
Applicazione desktop.
App mobile (ibrida).
Web Server.
Web Service.
Videogiochi.
SwiftLinguaggio per app mobile Apple, recentemente è stato esteso per realizzare molti tipi di applicazioni.Programmazione ad oggetti.
Programmazione funzionale.
App mobile (iOs).
App desktop.
Web Server.
Web Service.
KotlinLinguaggio per app mobile Android, nasce come evoluzione di Java recentemente è stato esteso per realizzare molti tipi di applicazioni.Programmazione ad oggetti.
Programmazione funzionale (parziale).
Applicazione desktop.
App mobile (Android).
App mobile (iOs ibrida)
Web Server.
Web Service.
Videogiochi.
CobolLinguaggio per la gestione di grandi applicazioni per aziende.Programmazione strutturata e procedurale.Oggi ampiamente sostituito da Java è ancora in uso su vecchi mainframe.
FortranLinguaggio per il calcolo ed operazioni matematiche.Programmazione strutturata e procedurale.Oggi ampiamente sostituito da molti linguaggi, ha ancora settori di nicchia che lo utilizzano.
ScalaLinguaggio per il calcolo, la gestione di dati.Programmazione funzionale.Linguaggio principalmente dedicato alle applicazioni di grandi moli di dati (Big Data), in parte sostituito da Python.

Qui una parziale mappa evolutiva di questi linguaggi.