5 nuovi linguaggi di programmazione che dovresti conoscere

Per alcune persone l’apprendimento di un nuovo linguaggio di programmazione è un eccesso che è meglio evitare. Perché, oh perché, sostengono, abbiamo bisogno di un’altra lingua?

Non ne abbiamo già abbastanza?

Gli strumenti esistenti non stanno portando a termine il lavoro?

E poi ci sono quegli instancabili ricercatori che colgono l’opportunità di provare cose nuove e di imbattersi in gemme. L’apprendimento è fine a se stesso e non hanno bisogno di molto convincere per bruciare i loro fine settimana costruendo un gioco di carte basato su console in quel nuovo linguaggio oscuro.

Non importa a quale campo appartieni, c’è qualcosa al di là di ogni discussione: tutti noi vogliamo dedicare del tempo a qualcosa che avrà un brillante futuro.

Per le persone nel campo dell’eredità, la loro lingua esistente preferita ha già un sacco di slancio e continuerà ad avere un brillante futuro. A loro, devo ricordare loro che la loro catena di strumenti di sviluppo preferita ormai matura era una volta “kool-aid” che molti si rifiutavano di bere. E così è oggi; nuove tecnologie vengono aggiunte per risolvere nuovi problemi o per alleviare il dolore dello sviluppo.

Se qualcosa lo fa abbastanza radicalmente, è probabile che continuerà a strappare la condivisione mentale e raggiungere la vetta. Quando ciò accade, non vuoi essere lasciato indietro. 🙂

E a chi ama correre con la roba luccicante, un avvertimento: divertirsi è fondamentale come programmatore, ma bisogna stare attenti a non sprecare le nostre energie senza meta.

Sicuro, Brainfuck è un piccolo linguaggio incredibilmente contorto, simile a un enigma e divertente, ma è improbabile che trarrai vantaggio dal perseguirlo seriamente. Vuoi qualcosa che sia nuovo, sensato e abbia una solida base.

Come sono state selezionate queste lingue

La selezione delle lingue è un lavoro intimidatorio, soprattutto quando si prendono in considerazione nuove lingue per ottenere benefici futuri in termini di occupazione e soddisfazione. Ogni autore di lingue è fermamente convinto di aver costruito il linguaggio perfetto possibile e di aver risolto tutti i problemi a cui rispondere. Come tagli, allora?

Per questo post, mi sono concentrato su alcuni parametri per mantenere la mia ricerca entro limiti ragionevoli.

Data di rilascio

Ho evitato specificamente le lingue che sono molto, molto nuove.

Nuovo, intendo le lingue che hanno meno di 5-6 anni al momento della scrittura, e soprattutto quelle che non hanno raggiunto la stabilità (versione 1.0, cioè). Questo, purtroppo, esclude alcune vere perle come Cristallo, Ma spero di tornare su questo e scrivere del suo successo un giorno. 🙂

Un frammento di codice in Crystal (“Fast as C, Slick as Ruby”)

Per me, 5-12 anni sono il punto debole, ovvero quando una lingua si è stabilizzata e vengono elaborati ulteriori perfezionamenti. Ora, ovviamente, ci sono delle eccezioni a questa regola e queste saranno considerate ove applicabili.

Questo è un gioco da ragazzi, ma spesso viene ignorato quando siamo entusiasti di qualcosa di nuovo. Ora, per molte persone, il sostegno di una grande azienda è un precedente sufficiente per il successo, ma non è sempre vero.

Sì, l’Objective-C di Apple e ora Swift hanno prosperato perché queste erano le uniche opzioni in un ecosistema altamente controllato, ma quello di Facebook D e Hack (una brutta interpretazione di un linguaggio già brutto, secondo me) restano poco più che esperimenti.

La combinazione ideale sarebbe un linguaggio supportato da un’azienda grande e stabile e che sta esplodendo in popolarità (come React).

Ma il fulcro della questione è ancora la comunità. Se una lingua non sta creando scalpore e non ci sono abbastanza sviluppatori per educare e rendere popolare, non uscirà dalla tomba di GitHub.

Per me, questo esclude linguaggi maturi e affascinanti come Racchetta e Erlangpoiché sono rimasti piatti sulla curva di crescita.

USP mirato e ben definito

La terza cosa che cerco è un obiettivo chiaro per la lingua. Ad esempio, una versione migliore di PHP che risolve i problemi di denominazione e compila in PHP nativo non funziona per me.

I vantaggi sono semplicemente troppo piccoli per giustificare le crepe se tutti cercano di passarci. Con questo parametro, non posso fare a meno di respingere tentativi come CoffeeScripte molti altri linguaggi simili per la compilazione in JavaScript.

Onestamente, sono tenuto a respingere immediatamente i miglioramenti della sola sintassi. La storia ha dimostrato che l’utilità ha la meglio sulla cordialità quando si tratta di lingue, quindi se tutte le nuove lingue su cui concentrarsi è un’esperienza più piacevole, temo che non farà questo elenco.

Sintassi chiara e coerente

Si, lo so. Ho appena detto che la sintassi non ha importanza. Bene, per essere precisi, ho detto che i “miglioramenti della sola sintassi” non contano. Ma detto questo, la sintassi rimane uno dei fattori significativi nella produttività e manutenibilità del programmatore, quindi è qualcosa che è destinato a comparire nei miei calcoli qui.

Insieme alla sintassi arriva l’idea di coerenza. La denominazione delle funzioni, la strutturazione dei moduli, ecc., sono cose fondamentali che un linguaggio non può permettersi di sbagliare. Siamo nel 2018, per l’amor di Dio, e un altro design di linguaggio simile a PHP sarebbe un peccato per tutti noi. Quindi, senza ulteriori indugi, iniziamo con i nostri primi cinque consigli.

1. Giulia

Per la gente del MIT, le lingue disponibili per la scienza dei dati erano nella migliore delle ipotesi un compromesso. Python, nonostante tutta la sua chiarezza e popolarità, mancava di costrutti nativi per gestire gli oggetti dati. Inoltre, essendo un linguaggio interpretato, Python era lento per loro (non le librerie, intendiamoci, poiché sono per lo più scritte in C).

Ma forse la svolta più grande è stata l’ingombrante modello di concorrenza e la mancanza di un modello di calcolo parallelo, l’ultimo dei quali è un punto fermo nel super-calcolo.

Di conseguenza, Giulia sono nato.

Julia ha raggiunto la sua versione stabile il 29 settembre 2018, appena pochi giorni prima che questo articolo fosse scritto (parliamo di tempismo!). Ecco cosa ha da dire il sito ufficiale sulle sue capacità:

Julia eccelle nel calcolo numerico. La sua sintassi è ottima per la matematica, sono supportati molti tipi di dati numerici e il parallelismo è disponibile immediatamente. L’invio multiplo di Julia è un adattamento naturale per la definizione di numeri e tipi di dati simili a array.

Dal punto di vista della sintassi, Julia può essere vista come una combinazione di Python e C. Sì, è probabilmente la prima volta che un linguaggio ha puntato a entrambe queste qualità e ha avuto successo.

Per mantenere le cose semplici, Julia è velocissima e non impone una digitazione rigorosa. Ecco alcuni benchmark:

I benchmark ufficiali di Julia

Come puoi vedere, Julia è leggermente peggiore di C ma fa saltare Java e Python fuori dall’acqua. E che tipo di piacere per gli occhi offre Julia?

Bene, ecco l’implementazione di una funzione per calcolare l’ipotenusa di un triangolo rettangolo:

Infine, mentre la maggior parte della Julia ecosistema è fortemente orientato verso il lavoro matematico, credo che abbia un brillante futuro per tutti gli usi.

È il primo linguaggio, a mia conoscenza, che ha un supporto di prima classe per il calcolo parallelo, quindi non sarà una sorpresa vederlo guadagnare più popolarità nei domini Web e IoT.

2. Ruggine

Se hai provato le nuove versioni del browser Firefox, sai che finalmente, dopo anni di lavoro, sembra che potrebbero essere in grado di sottrarre una quota di mercato a Chrome.

Se il browser risulta leggero e scattante e esegue il rendering rapidamente, è tutto grazie al linguaggio appositamente sviluppato da Mozilla: Ruggine.

Dire che Rust ha un brillante futuro sarà una bugia; il linguaggio ha già un enorme successo e, se non ne hai ancora sentito parlare, è perché la sua area di applicazione è specializzata e il suo obiettivo è spaventoso: sostituire C++! Sì, finalmente abbiamo un linguaggio che non solo è in grado di farlo, ma lo sta già facendo.

Per le persone frustrate dal design sovraccarico del C++ e dalle sfide di gestione della memoria, Rust arriva come una boccata d’aria fresca.

Ecco come appare un programma Rust:

Sintetico ed elegante, secondo me. Rust segue l’approccio di programmazione funzionale, che rende il codice più componibile e non ci sono gerarchie orientate agli oggetti con cui lottare.

Quindi, cosa dà a Rust il coraggio di seguire il C++? È il nuovo modello di memoria. Invece di fare affidamento sulla vecchia danza new()/delete(), Rust introduce l’idea di Ownership.

Invece di allocare e accedere direttamente alla memoria, le variabili Rust “prendono in prestito” l’una dall’altra, con rigide restrizioni imposte dal compilatore. Il concetto generale è troppo complicato per essere spiegato in poche parole, quindi sentiti libero di dare un’occhiata al documenti ufficiali per saperne di più.

Il punto è che ciò si traduce in una sicurezza della memoria del 100% senza la necessità di un Garbage Collector, il che è un grosso problema.

Rust ha preso d’assalto il mondo della programmazione di sistema. È già supportato su alcune piattaforme, potenzia i browser e i motori di rendering stanno rapidamente sostituendo il codice C/C++ sui sistemi di produzione e viene utilizzato per scrivere i sistemi operativi.

Certo, non è una tazza di tè per tutti creare un altro browser o driver di dispositivo, ma Rust si sta già diffondendo ad altri domini. Abbiamo già diversi framework Web completamente funzionali e incredibilmente veloci in Rust e vengono sviluppate sempre più librerie di applicazioni.

Onestamente, se sei interessato a un futuro entusiasmante, Rust è la lingua perfetta e ora è il momento perfetto. Rust è un aereo che è decollato, ma c’è ancora tempo per salire a bordo mentre si dirige verso le stelle!

Imparare Ruggine di Dmitri Nesteruk.

3. Elisir

Tra i linguaggi incentrati sulla felicità degli sviluppatori, il primo posto è stato riservato in modo permanente a Ruby. È un linguaggio che si legge come una poesia e ha abbastanza scorciatoie per ridurre l’attrito mentale in ordine di grandezza.

Non c’è da stupirsi, quindi, che il framework Rails continui a dominare lo sviluppo dell’intero stack per sviluppatori e startup seri. Ma non tutti erano contenti di Rails, in particolare uno dei suoi sviluppatori principali – José Valim. Penso che il creatore stesso spieghi meglio la genesi di questo linguaggio in un colloquio:

È una lunga storia, ma cercherò di farla breve e dolce. Nel 2010, stavo lavorando per migliorare le prestazioni di Rails quando lavoravo con sistemi multi-core, poiché le nostre macchine e i nostri sistemi di produzione vengono spediti con un numero sempre maggiore di core. Tuttavia, l’intera esperienza è stata piuttosto frustrante poiché Ruby non fornisce lo strumento adeguato per risolvere i problemi di concorrenza. È stato allora che ho iniziato a guardare ad altre tecnologie e alla fine mi sono innamorato della Erlang Virtual Machine.

Ho iniziato a usare sempre di più Erlang e, con l’esperienza, ho notato che mi mancavano alcuni costrutti disponibili in molti altri linguaggi, compresi quelli funzionali. È stato allora che ho deciso di creare Elixir, come tentativo di portare costrutti diversi e strumenti eccellenti in cima alla Erlang VM.

Ed ecco, Elisir sono nato!

Proprio come Scala migliora il linguaggio Java ma prende di mira la stessa macchina virtuale sottostante (la JVM), Elixir sfrutta la macchina virtuale Erlang vecchia di decenni e collaudata in battaglia.

Ora, una discussione su Erlang va oltre lo scopo di questo articolo, ma il minimo che dovresti sapere è che è il segreto meglio custodito dell’industria delle telecomunicazioni: se le nostre reti telefoniche sono molto più affidabili dei nostri sistemi basati sul Web, è tutto grazie a Erlang.

In termini ancora più semplici, ciò che significa è questo. Se stai costruendo un sistema in tempo reale come la chat, Elixir è molto meno affamato di RAM e stabile rispetto a Ruby (o PHP, Python e Java, se è per questo).

Una macchina che esegue Ruby e raggiunge un massimo di 10.000 connessioni simultanee può facilmente gestirne 200.000 quando utilizza Elixir e ha ancora abbastanza RAM per eseguire giochi 2D!

Frammento di codice elisir

Per quanto riguarda la sintassi, Elixir copia senza vergogna Ruby e il suo framework Web dominante, Phoenix, copia spudoratamente Rails. Direi che è anche una buona cosa, perché insieme a Laravel, Grails, Masonite, ecc., stiamo raggiungendo un punto in cui tutti i linguaggi hanno framework simili a Rails che possono facilitare la transizione. Alcuni potrebbero deridere la “mancanza di originalità”, ma almeno non mi lamento.

Infine, Elisir è una di quelle tecnologie rinfrescanti, piacevoli e dannatamente pratiche. Diversi negozi Ruby (e anche non Ruby) si stanno spostando su Elixir e grandi aziende come Pinterest lo stanno utilizzando nella produzione con risultati estremamente soddisfacenti.

Molte persone pensano che Node.js sia stato un tentativo improvvisato di concorrenza e che presto sarebbe stato sostituito da Elixir. Devo dire che sono d’accordo con loro. 🙂

4. Kotlin

Nel 2017 I/O, Google ha lanciato una bomba sulla folla ignara. Lo ha annunciato formalmente la società Kotlin come linguaggio principale per lo sviluppo di Android, inviando onde d’urto attraverso il settore.

Ora, che Google abbia cercato attivamente di sostituire Java non sorprende dopo essere stato morso da una causa Oracle; tuttavia, l’adozione di Kotlin è stata alquanto inaspettata e ci sono ancora buone possibilità che Google esca presto con la sua macchina virtuale. Per il momento, però, Kotlin si sta godendo un’impennata.

Kotlin è stato sviluppato da JetBrains, una società meglio conosciuta per la sua suite di editor di codice follemente bravi. Uno di questi, IntelliJ IDEA, costituisce la base di Android Studio. Gli obiettivi di progettazione di Kotlin sono sicurezza, concisione e interoperabilità al 100% con Java.

Più di ogni altra cosa, il compilatore Kotlin lavora molto duramente per eliminare qualsiasi eccezione di puntatore nullo che è così comune nel mondo Java. Riduce anche un po’ la proverbiale verbosità di Java, il che sarà un sollievo per molti.

Ecco un meraviglioso confronto di codice tra Java e Kotlin:

Credito immagine: hype.codes

Il codice Kotlin è significativamente più breve e ha molto meno sovraccarico cognitivo da affrontare.

Ma chiariamo una cosa: è estremamente improbabile che Kotlin sostituisca Java, anche se sta rapidamente diventando uno dei preferiti. Credo che dieci anni dopo, i team di piccole e medie dimensioni non guarderanno oltre Kotlin, mentre i grandi gruppi continueranno a utilizzare Java esclusivamente per motivi legacy.

Detto questo, Kotlin ha un futuro estremamente luminoso in quanto fa tutto ciò che fa Java, può fondersi con il codice Java senza che nessuno se ne accorga ed è molto più piacevole!

5. Dattiloscritto

Dio sa che dovevo trattenermi per questo posto! Tutto dentro di me urlava “Elm! Elm!”, ma non importa quanto siano rivoluzionarie le sue idee o quanto divina sia la sintassi, Elm deve ancora essere visto come un’alternativa mainstream per il lavoro front-end. 🙁 Ad ogni modo, passiamo a ciò che è mainstream: TypeScript.

JavaScript è come i frutti di bosco: brutto e sgradevole, ma devi sopportarlo se vuoi sopravvivere alla giungla dello sviluppo del front-end. Sono stati fatti molti tentativi per sostituirlo (e molto probabilmente il nuovo standard WebAssembly avrà successo), ma ciò che ha davvero catturato l’attenzione di tutti è stato il superset sviluppato da Microsoft.

Ci sono ottime possibilità di cui hai sentito parlare Dattiloscritto: Angular è stato il primo framework ad abbracciarlo dalla versione 2 in poi e le persone si sono affrettate a prenderne nota. Questo perché TypeScript aggiunge alcuni super poteri tanto necessari e fantastici al linguaggio di programmazione più famoso del mondo.

Sì, è finalmente possibile scrivere codice JavaScript nativo senza soffrire e maledire la propria nascita!

Ecco i miglioramenti che TypeScript apporta alla tabella:

✓ Digitazione forte: Infine, una stringa non è un numero e un numero non è un oggetto, che non è un array vuoto!

✓ Verifica del tipo in fase di compilazione: se il codice viene compilato correttamente, è più o meno garantito che sia privo di verruche del runtime JavaScript.

✓ Classi e moduli: Sì, le classi sono standard in ES6, ma sono incluse anche in TypeScript, oltre a un sistema di moduli ordinato.

✓ Inferenza del tipo: per i tipi complessi, il tipo può essere facilmente individuato dal compilatore, risparmiandoti un po’ di mal di testa.

✓ Async/await: le parole chiave e i pattern async/await sono fondamentali, quindi non dovrai più scherzare con Promise e Callback!

Spazi dei nomi, generici, tuple. . . Potrei andare avanti all’infinito, ma dovrebbe essere sufficiente dire che TypeScript converte una delle peggiori esperienze di sviluppo in una delle migliori.

Frammento di codice TypeScript

L’impatto di TypeScript non può essere negato. Ha spinto fuori dal campo tentativi simili come Dart di Google (sebbene stia tentando un ritorno attraverso Flutter, un framework di sviluppo mobile) e ha aperto gli occhi degli sviluppatori JS sui vantaggi di tipi più forti.

Di conseguenza, librerie significative come React, D3, Vue (anche jQuery!) Ora hanno una versione TypeScript e nei migliori negozi di software del mondo tutto il codice JavaScript viene scritto come codice TypeScript. Le intestazioni TypeScript sono ora disponibili anche per Node.js (onestamente, se un nodo può migliorare la sua storia di concorrenza e correggere la sua pessima gestione della memoria, durerà per sempre).

Potresti essere sorpreso di sapere che il creatore di Node.js, dopo pubblicamente rimpiangere sua creazione, sta lavorando su a nuovo tempo di esecuzione (al momento non esiste un sito Web ufficiale; solo il repository GitHub) che ha TypeScript come lingua principale.

La migliore notizia? TypeScript è un piccolo lingua da imparare con notevoli vantaggi in futuro. Se sei uno sviluppatore JavaScript intermedio, raccoglierai abbastanza TypeScript entro due giorni per trasferire tutto il tuo codice esistente!

Conclusione e disclaimer

Lingue specifiche stanno guadagnando la stessa popolarità di quelle in questo articolo, ma non sono state incluse nell’elenco per vari motivi. Ecco una rapida occhiata:

  • Golang: già affermato come lingua tradizionale, se non molto popolare. Credo che a questo punto Golang abbia diversi concorrenti che manterranno bassa la sua quota di mercato.
  • R: R è già popolare tra i data scientist ed è improbabile che attiri molto gli sviluppatori di applicazioni. Inoltre, non dobbiamo dimenticare che le librerie di machine learning si stanno lentamente diffondendo in tutte le principali lingue (per l’amor di Dio, anche PHP le ha ora!), quindi tutto ciò che devi fare è aspettare un po’ di tempo. 🙂
  • Swift: Apple ha una presa ferrea sul suo ecosistema e Swift è l’unica lingua disponibile lì. In precedenza, l’Obiettivo C era di moda, come lo è adesso Swift. Lo considero un imbroglio e quindi mi rifiuto di includerlo qui. 😀

Il futuro è sempre incerto e un modo per portare avanti la tua carriera è attenersi a ciò che già funziona e rifiutarsi di “distrarsi”. Se lo fai, Java, PHP, Python, Ruby, ecc., Sono tutti linguaggi eccellenti con cui attenersi. Tuttavia, per alcuni di noi, la norma non è sufficiente. Vogliono uscire ed esplorare e scommettere in grande sul futuro. Se rientri in quest’ultimo campo, una di queste cinque lingue dovrebbe essere in cima alla tua lista di cose da fare.

Infine, quando provi a valutare una lingua, non lasciarti sopraffare dallo sforzo perché non è poi così tanto. Se conosci già alcuni linguaggi di programmazione, puoi impararne uno entro due mesi al massimo, trascorrendo 5-6 ore a settimana. Considerando che la felicità e i rendimenti monetari che possono essere generati in futuro saranno molte volte di più.

Mi sono perso qualche linguaggio critico qui? O forse ho qualcosa che non va sulle lingue elencate qui? Se è così, per favore, per favore, lascia un commento e aiutami a migliorare. 🙂