Quale linguaggio di programmazione imparare?

31 Luglio 2014 Silvio Marano

Quale linguaggio di programmazione imparare?

prog-languages
Molti si pongono questa domanda quando hanno intenzione di entrare nel mondo della programmazione. Ma esiste davvero una risposta?

Esistono allo stato attuale centinaia di linguaggi di programmazione, alcuni semi-sconosciuti altri che hanno affrontato momenti di gloria per poi finire nell’inesorabile declino e altri ancora che hanno appena visto la luce. Non tutti i linguaggi sono uguali, certamente esistono linguaggi piรน potenti e validi di altri e con piรน mercato, ma la prima cosa a cui un’aspirante programmatore dovrebbe pensare, prima di scegliere il linguaggio รจ: in che settore voglio lavorare? Se uno ha giร  confidenza con i paradigmi di una tipologia di linguaggio, passare da un linguaggio ad un altro รจ piuttosto semplice, e gli sforzi maggiori servono invece ad acquisire le basi teoriche, e tutte le conoscenze necessarie a lavorare nel settore e a padroneggiarne il relativo ecosistema. Perciรฒ apprendere un linguaggio “di tendenza”, ha senso solo dopo che uno si รจ indirizzato ad acquisire una formazione adeguata a lavorare nel settore in cui quel linguaggio sta riscuotendo popolaritร , altrimenti dovrete tenere in conto vi sarร  utile ad arricchire il vostro bagaglio culturale ma non potrete mai sfruttarlo in ambito lavorativo.

Se uno ha intenzione di lavorare con tecnologie Apple, avrร  bisogno di conoscere principalmente Objective-C, chi invece รจ orientato sulle tecnologie Microsoft avrร  maggiormente bisogno di C#, chi aspira a lavorare in un’azienda elettronica dove ci si occupa di ottimizzazioni a basso livello avrร  bisogno di Assembly, se uno vuol lavorare a un gioco 3D basato su OpenGL e DirectX invece C\C++, per programmare su Android e piattaforme web enterprise vecchia scuola, Java รจ la risposta, per lo sviluppo pagine web, JavaScript, per le analisi statistiche R e Python dominano il mercato, e cosรฌ via…

Perciรฒ, anche se certamente C\C++ e Java sono i linguaggi compilati piรน diffusi, come PHP e JavaScript sono i linguaggi interpretati con piรน mercato per il web, la risposta non รจ certo riducibile a un “impara quello piรน diffuso”, perchรฉ questo potrebbe essere inadatto alla strada che si vuole intraprendere, senza considerare che i linguaggi piรน diffusi hanno sรฌ maggiore richiesta di lavoro, ma hanno anche un maggior numero di sviluppatori di maturata esperienza con cui i novellini aspiranti programmatori si dovranno trovare a competere, e da questo ultimo punto di vista potrebbe essere un buon investimento puntare invece a linguaggi di nuova generazione (se ad esempio il linguaggio รจ comparso sul mercato da un paio di anni sicuramente non vi ritroverete a competere con gente che ci programma da 20 anni su quel linguaggio).

Le new entry piรน interessanti che mi limiterรฒ a citare tra i tanti nell’assortito mondo dei linguaggi sono Go, Rust, Swift, Kotlin e Scala (quest’ultimo proprio new non รจ a dire il vero, ma di recente sta prendendo sempre piรน piede).

Golang
Go noto anche come Golang รจ un nuovo linguaggio di programmazione general purpose creato da Google, tra le sue peculiaritร  principali abbiamo il fatto che viene compilato direttamente in codice nativo come C++ ma utilizza il Garbage Collector analogamente ai linguaggi compilati in bytecode tipo Java, ha una velocitร  di compilazione sorprendente ed รจ stato realizzato da Google per semplificare la programmazione in presenza di concorrenza. Viene giร  utilizzato da Google stesso per alcune delle sue stesse tecnologie e la gestione server.

Rust
Rust ha caratteristiche per certi versi simili a Go, abbiamo infatti anche qui la compilazione in nativo, la gestione efficiente della concorrenza e malgrado non sia presente un vero e proprio garbage collector come in Go, sono comunque presenti alcune caratteristiche di garbage collecting (come l’atomic reference counting), ma a differenza di Go, รจ stato concepito per offrire un maggior controllo a basso livello ed essere una reale alternativa ai linguaggi C e C++, oltre che piรน funzionale anche piรน consistente e meno error prone rispetto a questi. รˆ stato realizzato da Graydon Hoare del team di sviluppo di Mozilla ed รจ ancora piuttosto di nicchia ma si sta facendo strada rosicchiando terreno a C e C++, in quei settori dove รจ necessario per ragioni prestazionali avere accesso ai puntatori espliciti e codice compilato in linguaggio macchina.

Scala
Scala รจ un linguaggio creato dallo scienziato tedesco Martin Odersky, tra i 3 linguaggi in recente crescita presentati รจ quello piรน vecchio. Scala รจ un complesso linguaggio general purpose che opera sulla JVM (Java Virtual Machine) e che ha una completa interoperabilitร  con Java in quanto viene compilato nello stesso linguaggio in cui viene compilato Java. Da molti visto come il futuro della JVM e il vero successore di Java, e da molti denigrato a causa della sua maggiore complessitร  rispetto a quest’ultimo, Scala unisce il paradigma della programmazione a oggetti di linguaggi come Java al paradigma funzionale di linguaggi come Haskel. Di recente sta prendendo piede principalmente in ambito big data, anche se il mercato sembra essere sempre piรน dominato da Python in questo settore.


Kotlin รจ un altro linguaggio che opera sulla virtual machine ed รจ stato sviluppato da JetBrains come alternativa a Java e Scala. Anche questo รจ un linguaggio general purpose che ha una completa interoperabilitร  con Java e anche questo strizza l’occhio a un approccio ibrido che oltre al paradigma ad oggetti consente di sfruttare un approccio funzionale. Rispetto a Scala si presenta meno complesso ma con meno funzionalitร , questo per cercare d’indirizzare molte delle critiche a Scala, dovute al fatto che ci sono troppe vie percorribili, con il risultato che lavorare a grossi progetti scritti da numerosi sviluppatori, ognuno con le sue preferenze, puรฒ portare ad avere una codebase meno coesa e piรน difficile da gestire.

Apple_Swift_Logo
Swift รจ un linguaggio object oriented creato da Apple per sostituire il piรน obsoleto Objective-C per lo sviluppo software sulle sue piattaforme OS X e iOS. Questo linguaggio come molte delle recenti new entries, viene compilato in linguaggio macchina, dispone di un garbage collector e strizza l’occhio al paradigma di programmazione funzionale, pur non essendo un vero ibrido. A differenza degli altri linguaggi citati, รจ attualmente vincolato agli ecosistemi Apple ma essendo una ventata d’aria fresca rispetto al vecchio Objective-C, รจ stato accolto molto positivamente dagli sviluppatori al lavoro sulle tecnologie della “mela” e sta avendo una rapidissima espansione. Perciรฒ se volete sviluppare per piattaforme Apple, รจ una scelta obbligata per restare al passo, altrimenti meglio focalizzare l’attenzione altrove.

QUA รจ possibile vedere i trend di crescita dei linguaggi di programmazione open negli ultimi anni (perciรฒ Swift non sarร  incluso) mettendo a confronto tra loro i dati raccolti sul numero di aggiornamenti e progetti caricati sui principali repository. Per avere una panoramica dei linguaggi piรน usati รจ possibile consultare il Tiobe Index. Nota che sono comunque statistiche molto approssimate, dal momento che la natura dei linguaggi utilizzati in molti progetti closed non รจ conosciuta.

,

Lascia un commento

Il tuo indirizzo email non sarร  pubblicato. I campi obbligatori sono contrassegnati *

Entra in contatto

Compila il form con il tuo messaggio

Translate ยป