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:
Tipologia | Descrizione | Tecnologie e linguaggi |
---|---|---|
Applicazione da terminale | Si 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 grafica | Applicazione 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 Server | Un 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 Service | Un 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 mobile | Si 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. |
IA | Le 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 calcolo | Applicazione che svolge operazioni di memorizzazione e calcolo molto complesse. | C/C++ ma anche Python (grazie alle potenti librerie scritte in C++). |
Videogioco | Applicazione 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. |
Libreria | Non è 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 operativo | Software 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.
Linguaggio | Descrizione | Paradigmi di programmazione | Principali utilizzi |
---|---|---|---|
C | Linguaggio 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 strutturata | Sistemi 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. |
Java | Linguaggio 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. |
PHP | Linguaggio per applicazioni web lato server, derivato dal C. | Programmazione ad oggetti. | Web Server. Web Service. |
Python | Linguaggio molto semplice da imparare, ha come applicazioni principali il calcolo | Programmazione ad oggetti (parziale). Programmazione funzionale (parziale). | Applicazioni di calcolo. IA. IoT. Web Server. Web Service. Applicazioni desktop (ibride). |
Javascript | Linguaggio 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. |
Typescript | Estensione 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. |
Swift | Linguaggio 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. |
Kotlin | Linguaggio 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. |
Cobol | Linguaggio per la gestione di grandi applicazioni per aziende. | Programmazione strutturata e procedurale. | Oggi ampiamente sostituito da Java è ancora in uso su vecchi mainframe. |
Fortran | Linguaggio per il calcolo ed operazioni matematiche. | Programmazione strutturata e procedurale. | Oggi ampiamente sostituito da molti linguaggi, ha ancora settori di nicchia che lo utilizzano. |
Scala | Linguaggio 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.
