Luca Corradi
Luca Corradi

Co-Founder

Immagine di copertina

Bosque

Il nuovo linguaggio di programmazione Open Source di Microsoft

Oggi il nostro blog post è dedicato al nuovo linguaggio di programmazione open-source rilasciato da Microsoft: Bosque. Il suo creatore, Mark Marron, fa parte della succursale Microsoft Research che si occupa di studiare e definire nuovi standard relativi all’innovazione tecnologica nel campo informatico.

Il nome scelto per questo linguaggio significa proprio foresta, ma non per indicarne una natura intricata e difficile, anzi lo scopo è proprio di facilitare la comunicazione uomo - macchina. Il nome Bosque è semplicemente stato suggerito da un naming tool proprietario di Microsoft ed è piaciuto subito a Marron ed il suo team, che lo hanno scelto per il loro progetto.

Vediamo dunque più in dettaglio le caratteristiche di questo linguaggio, gli obiettivi principali per i quali è stato proposto e qualche esempio per capirne la struttura.

Introduzione ed obiettivi principali

Questo recente linguaggio (uscito a Marzo 2019) prende ispirazione da altre tecnologie preesistenti, tra le quali TypeScript, Node, JavaScript e Machine Learning. Dal TypeScript eredita la sintassi ed i tipi, mentre dai restanti la componente semantica.

Il principale scopo per il quale Bosque è stato concepito è quello di andare oltre la programmazione strutturata introdotta già negli anni ’70, ritenendola causa di inutile complessità. Mark Marron introduce infatti il modello di programmazione regolarizzata per semplificare il lavoro dello sviluppatore ed avvicinare il ragionamento umano a quello macchina e descrive in profondità questo nuovo paradigma nella sua pubblicazione: "Regularized Programming with the BOSQUE Language Moving Beyond Structured Programming".
In questo documento Marron sottolinea l’esigenza di un nuovo modello, per migliorare la produttività e la qualità del software:

“We believe that, just as structured programming did years ago, this regularized programming model will lead to massively improved developer productivity, increased software quality, and enable a second golden age of developments in compilers and developer tooling.”

Nella documentazione ufficiale del linguaggio Bosque, fornita dal colosso americano vengono sottolineati 3 punti principali che fanno da pilastri al progetto:

  • Progettare un linguaggio di rappresentazione intermedio del codice (o bytecode) che permetta di ragionare in modo più lineare ed approfondito su codice automatizzati e sia utile per l’implementazione di strumenti di sviluppo, compilatori e sistemi runtime di nuova generazione.
  • Sfruttando la potenza di questa rappresentazione intermedia si fornisce agli sviluppatori un linguaggio di programmazione facilmente accessibile e un ricco set di funzioni linguistiche utili per lo sviluppo di applicazioni ad alta affidabilità e ad alte prestazioni.
  • Modificare la prospettiva di sviluppo cloud per affrontare le sfide emergenti, passando ad un modello di sviluppo cloud distribuito basato su microservizi, architetture serverless e RESTful.

Funzionalità

Una tra le principali caratteristiche del linguaggio Bosque è che tutti i valori sono immutabili, seguendo le tendenze di design di molti linguaggi funzionali e rendendo ancora più semplice la creazione di strumenti per sviluppatori. Supporta inoltre l’esecuzione di operazioni algebriche in blocco per letture in blocco e aggiornamenti ai valori dei dati, azione che in altri linguaggi di programmazione richiede l’utilizzo di una variabile d’appoggio. Con le operazioni di dati in blocco, è possibile eseguire l’aggiornamento come un’operazione atomica e senza estrarre e copiare manualmente i campi.

Uno degli obiettivi principali del linguaggio Bosque è semplificare il processo di creazione di software e renderlo più affidabile. Proprio per questo il linguaggio fornisce un supporto per errori e controlli e molte funzionalità dedicate a controlli di integrità e asserzioni diagnostiche.

L’elenco completo delle funzionalità è descritto nella documentazione presente sul repository.

Esempi di utilizzo

Somma di due numeri:
    function add2(x: Int, y: Int): Int { return x + y;}
    add2(2, 3) //5
    add2(x=2, y=3) //5
    add2(y=2, 5) //7
    
Moltiplicare tutti gli array per il valore 2:
    var a = List[Int]@{1, 2, 3, 4, 5};
    var b = a.map[Int](fn(x) => x*2);
    
Operazione algebrica in bulk:
    let x = {f=1, g=2, h=3};
    x.update(f=-1, g=-2); //{f=-1, g=-2, h=3}
    

Conclusioni

Bosque è un’interessante novità che entra a far parte dello stato dell’arte dei linguaggi di programmazione. Il nuovo paradigma introdotto ed i suoi obiettivi fanno assaporare un primo cambiamento nel campo informatico, che sarà sicuramente portato avanti nei prossimi anni.

Attualmente, come anche suggerito dal team che lo ha creato, si consiglia un utilizzo di Bosque solamente per piccoli progetti di ricerca e non come base per strutture più ampie.


Condividi l'articolo

Leggi altri articoli