Home / Blog / 16-04-2019

Linguaggi di programmazione

di Giuseppe Maggi

Se stai pensando di diventare un programmatore, probabilmente ti starai chiedendo quale tra i linguaggi di programmazione esistenti fanno al caso tuo e quale dovresti imparare per primo. Bella domanda 🙂 In questo articolo proviamo a darti un’infarinatura sull’argomento in modo da schiarirti un po’ le idee. GiĂ , perchĂ© probabilmente tra ricerche su Internet e chiacchiere tra amici e colleghi sarai ancora piĂą confuso. Provando a chiedere ad un centro di formazione magari ti hanno consigliato di seguire un corso di Java o di C per la loro estrema versatilitĂ , uno sviluppatore che conosci ti avrĂ  confidato di lavorare ormai solo in Javascript mentre una tua amica, informatica di professione, preferirebbe abbandonare il fidanzato piuttosto che abbandonare Python. Proseguendo poi con l’indagine potresti scoprire la grande importanza del .Net di Microsoft in ambito enterprise, ma anche di PHP e SQL e a questo punto ti troveresti non solo con le idee poco chiare, ma ti accorgeresti anche che tutti questi linguaggi che hai appena scoperto non sono altro che una piccola parte dei piĂą usati al mondo e classifiche specialistiche come il Tiobe Index ne annoverano centinaia.

Ma quanti linguaggi di programmazione esistono e come scegliere quale studiare?

I linguaggi di programmazione servono a fare funzionare “cose”, se vuoi capire quale fa per te, innanzitutto devi chiederti: cosa vorrei che funzionasse meglio?
Facciamo qualche esempio.
Ti sei mai trovato ad utilizzare un sito Internet e hai pensato “Qui servirebbe un menu strutturato in modo differente per trovare più velocemente le informazioni che mi interessano”? Oppure ti è mai capitato di cercare app per il tuo smartphone, trovarne tante utili ma mai nessuna perfetta per i tuoi scopi? O ancora: ti sei chiesto come facciano tante persone a fare soldi con la Borsa e se sia possibile, come dicono, realizzare programmi in grado di predire i movimenti dei prezzi? Queste o altre curiosità spontanee potrebbero essere un ottimo indicatore di una tua particolare predisposizione nell’affrontare determinate problematiche.

Capire cosa ti attrae maggiormente è fondamentale al fine di individuare quale potrebbe essere il linguaggio di programmazione più adatto a te.

I linguaggi di programmazione sono semplicemente degli strumenti, ne esistono tanti molto richiesti nel mondo del lavoro, impararne uno nuovo fa parte della vita dell’informatico ma ciò che non puoi sbagliare è la scelta dell’area di impiego per cui potresti essere più versato. Per questo, ti illustreremo un’ampia panoramica di linguaggi di sviluppo ma procedendo per campi di applicazione.

Linguaggi di programmazione per il Web

Il Web è uno degli interessi più intramontabili che esista nell’informatica. Ci pervade così tanto che sono ormai decenni che persone di ogni età sognano di lavorarvi. Gli sviluppatori che si occupano di Web, per lo più si distribuiscono nelle seguenti categorie:

  • Web designer: si occupano di progettare interfacce web sia da un punto di vista concettuale (cosa vuole comunicare? Quale informazioni deve includere?) sia di organizzazione degli spazi. Spesso non sono veri e propri programmatori sebbene lavorino con formati appositi come HTML e CSS. Il primo è un linguaggio a tag (parole chiave inserite tra parentesi angolari) che costruisce la struttura della pagina: possiamo considerarlo un modo per “disegnare” l’interfaccia utilizzando dei comandi. Il secondo, il formato CSS, serve a scrivere direttive da applicare sul risultato del lavoro in HTML per indicare formattazione, aspetto esteriore e posizionamento degli elementi. Per intenderci, HTML dice cosa apparirĂ  in una pagina e CSS specifica come dovrĂ  apparire. Sei indicato per questo settore se non ti senti particolarmente adatto a risolvere problemi ma avverti una forte carica narrativa da esprimere con immagini, testi e tutte le forme che la comunicazione assume;
    » VUOI SAPERNE DI PIU’? VAI AL NOSTRO CORSO HTML E CSS «
  • Front-end developer (Sviluppatori lato client): lavorano per lo piĂą con il linguaggio Javascript e vari framework (piattaforma applicativa su cui basare un proprio programma) con esso realizzati. Si tratta di progettare tutto ciò che appare nel browser. E’ probabilmente uno dei lavori piĂą divertenti del Web perchĂ© è fortemente rivolto all’utente e all’interazione che egli sviluppa con il sito Internet. Ci si deve spesso dedicare ad effetti visuali ed animazioni, integrando il proprio lavoro in quello del web designer. Si consideri che lavorare in questo ambito rafforza molto le proprie competenze di Javascript che, come vedremo, è impiegato ormai in ogni settore dell’Informatica;
    » VUOI SAPERNE DI PIU’? VAI AL NOSTRO CORSO JAVASCRIPT «
  • Back-end developer (Sviluppatori lato server): si tratta di un lavoro molto metodico, rivolto alla risoluzione di problemi ed alla conoscenza di diverse forme di comunicazione ed immagazzinamento di dati. Chi fa questo lavoro si occupa di realizzare servizi web ossia tutto ciò che risponde quando mediante browser o app mobile scambiamo informazioni nella Rete: messaggi chat, ricerca di case in vendita, lettura delle ultime notizie e via dicendo. In questo settore possono essere utilizzati molti linguaggi di programmazione, ma ci sono alcuni approcci principali. Il linguaggio PHP è uno dei piĂą usati in assoluto al mondo. Permette un avvio agevole per il neofita anche grazie alle ampissime risorse didattiche disponibili on line. Java è un altro linguaggio molto utilizzato. Ha un approccio meno immediato di PHP e non si distingue certo per la sintassi sintetica, ma offre una grande configurabilitĂ  e rappresenta una delle principali scuole di programmazione di sempre. E’ particolarmente usato per realizzare applicazioni web dedicate al mondo bancario, finanziario, assicurativo ma la grande stabilitĂ  che lo caratterizza permette di usarlo in ogni genere di servizio. Anche la Microsoft offre una piattaforma molto importante: il framework .Net (con linguaggi come C# e VB.net) dotato di una filosofia che ha molto in comune con l’emisfero Java ma è, per buona parte, legato al mondo Windows. Quest’ultimo aspetto lo relega in una zona propria – sebbene importante – dell’Informatica, a differenza di altre tecnologie o sei parte del sistema Windows/.Net/Microsoft in genere o ne sei assolutamente distante. Vale la pena ricordare anche un’altra prospettiva in rapidissima diffusione: Node.js, una piattaforma per usare Javascript al di fuori del browser. Node.js ha reso questo linguaggio ancora piĂą utilizzato in quanto gli ha dischiuso le porte del mondo server, una volta assolutamente precluso agli sviluppatori web lato client. Node.js è un ambiente economico in termini di risorse impiegate, altamente modulare e adatto ad ogni tipo di applicazione;
    » VUOI SAPERNE DI PIU’? VAI AL NOSTRO CORSO PHP O AL NOSTRO CORSO NODE.JS «
  • Sviluppatori Full-stack: è una figura di cui si parla molto in questi ultimi anni e rappresenta un incrocio tra le due precedenti. Un Full-stack è colui che sa sviluppare applicazioni web “verticalmente” realizzando sia il lato server, sia quello client. Considerando che per quest’ultimo la scelta obbligata è praticamente Javascript si può scegliere se lavorare Full-stack interamente con questo linguaggio usando Node.js o se adottare nel lato server una delle altre opzioni come PHP, Java o .Net.
    » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI CORSI ONLINE «

Linguaggi di programmazione per il mobile

Il settore mobile è diventato uno dei fronti lavorativi principali degli ultimi anni. A livello di sistemi operativi, il mobile è pressoché diviso in due famiglie: Android, il più diffuso al mondo (circa il 75% dei dispositivi), e iOS di Apple, il sistema degli iPhone e degli iPad, che detiene il resto del mercato. I sistemi Android sono da sempre stati programmati in linguaggio Java e, da pochi anni, in Kotlin altro formalismo sempre discendente dal mondo Java. Il sistema iOS vede invece come linguaggi di sviluppo Objective-C ed il più recente Swift. Tutto ciò rientra nella cosiddetta programmazione nativa, dove un programma per un sistema operativo non può essere usato in un altro: per intenderci, se sviluppi un’app Android e vuoi realizzarla per iPhone devi crearla nuovamente da zero con un’altra tecnologia. Le applicazioni generate con programmazione nativa offrono le prestazioni migliori in assoluto ma costringono le aziende a duplicare sforzi, investimenti e personale per creare app mobile in versioni diverse. Come conseguenza di questo sono nate diverse tecnologie “ibride” che hanno permesso di realizzare app mobile in HTML/CSS/Javascript, le tecnologie del web, in grado di funzionare su Android e iOS. L’interesse è stato grande soprattutto perché molti programmatori e aziende, già in possesso di forti competenze nelle tecnologie per il web, erano ansiosi di sperimentarne la loro validità anche nel mobile. Purtroppo le prestazioni di app ibride non sono sempre state all’altezza di quelle native e nemmeno la loro capacità di integrazione con il sistema a livello sia estetico sia funzionale. Ultimamente è nata un’ulteriore generazione di framework mobile che portano a sviluppare app utilizzabili su sistemi operativi diversi con un’unica base di codice ma offrendo prestazioni al pari della programmazione nativa: citiamo tra queste React Native interamente programmato in Javascript, ottimo approdo per chi ha esperienze nel web, e Flutter, framework ideato da Google molto recentemente e programmato in un linguaggio di cui non abbiamo ancora parlato in questo articolo, Dart, che risulta comunque molto veloce da imparare se si hanno basi anche minimali di programmazione.

» VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO CORSO ANDROID O IL NOSTRO CORSO IOS «

Linguaggi di programmazione per Data Science, Big Data e Machine Learning

Termini come Data Science, Big Data, Machine Learning non sempre rientrano nel dizionario comune di molti aspiranti programmatori, ma grazie alla loro capacità di influenzare la nostra vita quotidiana stanno vivendo un’espansione mai vista prima. Sono proprio tali tecniche che portano un servizio di e-commerce a consigliarci un particolare prodotto in base ai nostri acquisti precedenti, un tool per gli investimenti a indicarci le migliori azioni per guadagnare o un software scientifico a compilare le previsioni del tempo. In questo ambito si possono usare molti linguaggi. Python – uno dei più usati al mondo in ogni ambito, tranne il mobile – è probabilmente una delle scelte migliori in quanto a potenzialità e sinteticità del codice. Altro linguaggio molto usato in questo ambito è R nato appositamente per le scienze statistiche ma rivelatosi utile in ogni ambito di elaborazione dati. Oltre a questi, trovano largo impiego Java e Scala (derivato anch’esso da Java) soprattutto perché con essi sono sviluppati molti strumenti usati in questi settori e ne rappresentano pertanto una delle prime alternative per l’interazione. Per lavorare in questi ambiti è necessario avere una certa predilezione per l’analisi dei dati e conoscenze di Matematica e Statistica, anche di livello non eccelso, possono rivelarsi particolarmente utili. Si tratta senza dubbio di lavori affascinanti proprio perché permettono di vedere con occhi diversi il mondo e tentare di capirlo meglio con l’aiuto delle tecnologie.

» VUOI SAPERNE DI PIU’? VAI AL NOSTRO CORSO PYTHON «

Linguaggi di programmazione C e C++

Sinora non abbiamo nominato il linguaggio C né la sua versione ad oggetti, il C++. Questo perché non trovano ampissimo utilizzo nei settori di cui abbiamo discusso sinora ma sono storicamente tra i linguaggi più usati di sempre. Cerchiamo di capire la loro collocazione. Nel web non trovano comunemente impiego né dal punto di vista client né server. Nel mobile vengono impiegati per sviluppare porzioni di codice “nativo” sebbene a dirla tutta con le API offerte dai principali linguaggi di programmazione per Android e iOS l’utilizzo del C e del C++ non appare assolutamente indispensabile. Vengono spesso utilizzati per lavori legati all’hardware o alle sfere più interne dei sistemi operativi: si consideri che tutti i sistemi operativi sono stati sviluppati con questi linguaggi. Ad esempio, il C ha un’importanza ed una carica formativa che lo porta ad essere costantemente studiato nelle università come approccio alla programmazione mentre il C++ viene insegnato sia come strumento generico di sviluppo di applicazioni sia come modello di Programmazione Orientata agli Oggetti in alternativa a Java. Un settore in cui essi trovano comunque ampio spazio è quello della microelettronica che trattiamo nel prossimo paragrafo.

» VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI CORSI ONLINE E I NOSTRI VIDEO TUTORIAL «

Linguaggi di programmazione per la Microelettronica

I settori dell’informatica non sono certo finiti qui. Molti programmatori sono coinvolti nello sviluppo di sistemi robotici e microelettronica. Anch’essi sono stati protagonisti di un grande sviluppo ultimamente proprio per i progressi dei dispositivi che permettono da un lato di inserire intelligenza in ogni “cosa” elettronica e dall’altro di raccogliere dati sugli ambienti in cui sono installati. Piattaforme come Arduino, Raspberry e microbit della BBC (esistono comunque moltissimi altri microcontroller) forniscono veri e propri computer da tenere nel palmo di una mano e da programmare con vari ambienti di sviluppo. Questi contesti vedono come linguaggio di elezione in molti casi Python (esiste la versione microPython per dispositivi in miniatura) ma spesso anche altri come Java e C se non formalismi inventati appositamente per l’interazione con un dispositivo. Tale settore risulta interessante ed appetibile da un punto di vista lavorativo in quanto spazia in ogni ambito entrando in contatto con contesti e professionalità dei generi più disparati: dall’automotive, alle case intelligenti della domotica fino all’IoT (Internet of Things) che risulta un’importante sorgente di dati da analizzare con le tecnologie per Big Data.

» VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI CORSI ONLINE E I NOSTRI VIDEO TUTORIAL «

Linguaggio SQL e i database

Altro linguaggio non citato sinora ma onnipresente in ogni ambiente di programmazione è SQL. E’ il linguaggio con cui si interagisce con database relazionali ed è pertanto una conoscenza fondamentale per ogni tipo di sviluppatore: web lato server, mobile e applicazioni varie. E’ un linguaggio dall’approccio non complesso e può avere un ruolo fondamentale in molti ambienti non propriamente informatici come la programmazione di ufficio, ad esempio, per gestire dati all’interno dei programmi Access ed Excel di Microsoft Office. Con le versioni più diffuse di SQL si possono scrivere interi programmi che prendono il nome di Stored Procedure o trigger se sono impostati per scattare al verificarsi di particolari eventi. Essere un abile programmatore SQL può rendere una persona particolarmente utile in ambienti in cui vengono trattati, gestiti e analizzati dati sebbene raramente una figura professionale rivestirà esclusivamente il ruolo di programmatore SQL. Un aspetto interessante di questo linguaggio è l’importanza che riveste come metro di paragone con qualsiasi tecnologia di accesso ai dati. E’ così conosciuto dagli sviluppatori ed è stato in grado di sintetizzare così bene le operazioni che descrive che qualsiasi tecnologia per l’accesso ai dati replica, in forma propria, le funzionalità che SQL espone. Se ne trova una traccia importante anche nei già citati Big Data dove Hive – uno strumento di analisi creato da Facebook – permette di accedere ai dati mediante HiveQL, un linguaggio praticamente identico a SQL. Come ultimo esempio, consideriamo che anche i cosiddetti database NoSQL – così chiamati perché propongono forme alternative di gestione di database rispetto a quella tradizionale – offrono spesso un proprio linguaggio di ispirato a SQL.

» VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI CORSI ONLINE E I NOSTRI VIDEO TUTORIAL «

Linguaggi di programmazione per Videogiochi

E se volessi creare videogiochi? Questo è un approdo che interessa molti neofiti. Un po’ perchĂ© le esperienze “informatiche” iniziano spesso da videogiocatori, un po’ perchĂ© – lavorativamente parlando – è uno degli ambiti con migliori margini di espansione nel tempo e minore dipendenza dalle crisi economiche. Eppure è uno dei settori piĂą confusi in assoluto. In primis, perchĂ© non vi entrano in gioco solo capacitĂ  di programmazione, ma anche di realizzazione di grafica (molto spesso 3D), fantasia, creativitĂ , scrittura: in fin dei conti inventare un gioco inizia come scrivere un racconto, soprattutto per quelli dotati di una trama articolata. Rimanendo nell’ambito della programmazione, si deve innanzitutto decidere che tipo di piattaforma deve supportarlo. Parliamo di un gioco mobile per Android o iOS? Di un gioco da utilizzare nel Web? O uno per PC e console varie (Nintendo Switch, PlayStation, Xbox e via dicendo)? I linguaggi che possono essere impiegati sono quelli tipici di queste varie piattaforme e nel settore trova spesso spazio il linguaggio C++. Un fattore importante è che molti videogame sono realizzati basandosi su engine ossia non si parte da un programma puro ma si realizza il gioco su una struttura che offre grafica e interattivitĂ . Uno degli engine piĂą famosi ed usati al mondo è Unity che permette di creare videogiochi di ogni genere e di fare tanto lavoro mediante la sua interfaccia utente ma che per sviluppare controllo ed interazione richiede comunque l’impiego di linguaggi di programmazione: nel suo caso, C# e Javascript. Ciò che c’è di sicuro è che sviluppare videogiochi è uno degli ambiti piĂą professionali e ardui da affrontare pertanto se ti interessa intraprendere questa strada e non sei ancora un buon programmatore, la prima cosa è fare esperienza con qualsiasi linguaggio di sviluppo e ciò ti preparerĂ , a livello di fondamenti, ad iniziare a studiare ciò che serve per diventare un game developer.

» VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI CORSI ONLINE E I NOSTRI VIDEO TUTORIAL «

Linguaggi di programmazione per applicazioni desktop

A questo punto ti potresti chiedere: ma le classiche applicazioni per PC, quelle con interfaccia utente, tanti pulsanti e che non usano per forza Internet, non le fa piĂą nessuno? In realtĂ , è un settore che si sta restringendo molto. Un po’ perchĂ© gli sviluppatori si concentrano su quelli che “tirano” di piĂą come Web e Mobile, un po’ perchĂ© sono state rimpiazzate da web app ossia applicazioni realizzate con le tecnologie dello sviluppo web client che funzionano direttamente nel browser. Comunque esistono molti ambienti per la realizzazione di applicazioni per PC. Uno dei piĂą eleganti al mondo è il framework .Net, giĂ  nominato, che la Microsoft ha realizzato per Windows ma che può funzionare anche su altre piattaforme. Ci sono poi tecnologie che si sono dotate di propri sistemi di interfacce come Java che è passata dal primitivo AWT, a Swing fino a JavaFX: questa opportunitĂ  permette di creare applicazioni con grafica per ogni sistema operativo. Infine tanti altri linguaggi di programmazione si sono messi in condizione di interagire con framework multipiattaforma come Qt.

» VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI CORSI ONLINE E I NOSTRI VIDEO TUTORIAL «

Conclusioni

Sei ancora qui o hai abbandonato l’articolo? Magari uno dei paragrafi ti ha illuminato così tanto che stai già frugando tra i nostri corsi per individuare quello più appropriato per avviarti alla nuova professione. Sicuramente per diventare un programmatore ci vogliono buone doti di curiosità, studio e interesse ma soprattutto ripetiamo il consiglio iniziale: scegli quello che fa per te davvero, prova a sviluppare qualcosa di assolutamente affine alle tue passioni e ciò ti darà la spinta necessaria per superare sempre ogni difficoltà.