login LOGIN
CHIUDI chiudi
Il mio profilo

mostra
Hai dimenticato la password?
Inserisci l'indirizzo email di registrazione per reimpostare la password.
Segui le istruzioni che ti abbiamo inviato per posta elettronica.

Rust, il linguaggio di programmazione memory safe che sfida C e C++

Ascolta l'articolo

Come funziona e cosa si può fare con Rust: il linguaggio di programmazione ad alte prestazioni, che alza la sicurezza delle operazioni legate alla memoria

Rust Shutterstock

Rust è uno dei linguaggi di programmazione che si stanno più facendo largo tra appassionati e addetti ai lavori. Realizzato da Mozilla, Rust permette di programmare in ambiti diversi, garantendo un livello di sicurezza superiore a quello di C++ e di tanti altri competitor. 

Uno degli elementi maggiormente distintivi di Rust (e più apprezzati dallo sviluppatore) è la sua natura di linguaggio memory safe. Un presupposto che permette di ridurre al minimo le vulnerabilità più diffuse figlie delle operazioni legate alla memoria

Caratteristiche distintive di Rust, il linguaggio di programmazione di Mozilla

Rust

Shutterstock

Tutti sanno che Rust è un linguaggio di programmazione sviluppato da Mozilla Foundation: più precisamente dal reparto Research. Quello che però viene spesso ignorato, è che Rust è il frutto della volontà e l’impegno di un singolo dipendente

Tutto nasce infatti dal progetto personale di Graydon Hoare. Poi, nel 2009, Mozilla nota la qualità del suo lavoro e decide di sostenerlo, arrivando ad annunciare Rust dopo neanche un anno. 

Col passare del tempo e degli aggiornamenti, Rust ha aggiunto paradigmi, estensioni e tipizzazioni. Arrivando addirittura a una versione compilatore che ha compilato sé stesso

Inoltre, per volontà di Mozilla, l’intero progetto è opensource. E dunque ha potuto contare sul supporto della comunità internazionale

Non a caso in diverse occasioni Rust è stato premiato come uno dei linguaggi di programmazione più amati in assoluto. E in questo momento storico capita spesso che uno sviluppatore scelga di far migrare a Rust progetti realizzati con Go o C++.

Rust è un linguaggio memory safe, che tutela lo sviluppatore dalle vulnerabilità più comuni, permettendogli di programmare software sicuri

Le ragioni dietro questa scelta variano di caso in caso, ma in molti casi Rust viene scelto per la sua natura di linguaggio memory safe. Il problema delle vulnerabilità legate alla memoria è comune a molti linguaggi di programmazione. 

Un linguaggio memory safe è un linguaggio progettato appositamente per provare a prevenire questo genere di vulnerabilità. O quanto meno per minimizzarle.

Gli errori più diffusi legati alla gestione della memoria sono legati ai riferimenti a dati non validi, piuttosto che ad accessi non legali alla memoria stessa. 

Un linguaggio memory safe garantisce che le principali operazioni legate alla memoria siano controllate. E in questo modo riduce sensibilmente il rischio di errori critici: quelle problematiche che possono portare a vulnerabilità della sicurezza, o a crash completi del programma. 

Grazie alle sue caratteristiche, Rust è in grado di tutelare uno sviluppatore dagli errori di programmazione più comuni. Mettendolo nella condizione di poter programmare software più stabili e meno esposti ad attacchi esterni. 

Come è stato progettato Rust

Rust

Shutterstock

Rust è stato progettato da Mozilla per garantire un livello adeguato di prestazioni. Puntando sul controllo dell’allocazione di memoria e tenendo conto delle impostazioni dei programmi competitor: ad esempio C, C++ o Python.

Nei capoversi precedenti si è già parlato di come Rust garantisca una sicurezza mediamente superiore rispetto a quella di C++, per via della sua natura di linguaggio memory safe.

Allo stesso tempo C++ è (almeno ad oggi) più veloce di Rust. Soprattutto se si prendono in considerazione i tempi di compilazione, al di là della semplice esecuzione delle applicazioni. 

Un altro elemento peculiare di Rust è l’allocazione di memoria. Il linguaggio di programmazione prevede infatti un numero di bit definito. Anche se lo sviluppatore ha la possibilità di definire l’allineamento

Parallelamente Rust rinuncia alla cosiddetta garbage collection: la modalità che porta i sistemi operativi e i compilatori a liberare automaticamente determinati slot di memoria, nel momento in cui viene chiusa un’applicazione.

Dal punto di vista della sintassi e della programmazione, Rust presenta diversi elementi comuni ai linguaggi C e C++

In questo modo lo sviluppatore ha la possibilità di deallocare deterministicamente tutta la memoria a disposizione. Un processo reso possibile dall’intervento del compilatore ogni qual volta una variabile esca dal suo ambito di visibilità. 

Dal punto di vista sintattico, Rust non è molto diverso dal linguaggio C. Entrambi racchiudono istruzioni o strutture all’interno di graffe. Lo stesso discorso vale per le parole chiave di controllo e per i diversi operatori logici o aritmetici

Allo stesso tempo programmare con Rust è molto diverso da programmare con C o C++: soprattutto dal punto di vista della semantica. Il linguaggio infatti non consente l’ereditarietà di implementazione.

Al contrario le classi (struct) possono essere parametrizzate in maniera simile a come accade in C++. Con la differenza che in Rust i parametri devono essere vincolati ai cosiddetti trait: costrutti ispirati dal celebre linguaggio di programmazione Haskell. 

Cosa si può programmare con Rust

 

Rust

Shutterstock

Rust può essere considerato un linguaggio di programmazione object-oriented, ma presenta diverse scelte progettuali caratteristiche, che lo rendono particolarmente interessante agli occhi di uno sviluppatore. Ad esempio permette di programmare il tempo di vita (lifetime) degli oggetti gestiti. 

Così come permette di definire la loro proprietà (ownership) o il loro prestito (borrowing). Inoltre Rust non prevede l’esistenza delle metaclassi. E le stesse classi non sono dotate di eredità implicita a partire dall’interfaccia. 

Questi presupposti aiutano a capire come mai Rust venga utilizzato in tanti ambiti differenti: a partire dallo sviluppo web, fino ad arrivare alle applicazioni server, l’implementazione di back-end o di interpreti TCP/IP. 

Rust viene poi usato da tanti professionisti che stanno imparando a programmare videogiochi. Così come può contribuire allo sviluppo di interi sistemi operativi e al cosiddetto sviluppo embedded: la scrittura e la compilazione per target vari (ad esempio il core ARM Cortex-M) ricorrendo al codice binario.

Per saperne di più: I linguaggi di programmazione più usati

A cura di Cultur-e
Addestramento IA non consentito: É assolutamente vietato l’utilizzo del contenuto di questa pubblicazione, in qualsiasi forma o modalità, per addestrare sistemi e piattaforme di intelligenza artificiale generativa. I contenuti sono coperti da copyright.
Whatsapp
Segui le ultime notizie sul nostro canale Whatsapp
Immagine principale del blocco
Segui le ultime notizie sul nostro canale Whatsapp
Fda gratis svg
Iscriviti al canale gratuito

Iscriviti
all'area personale

Per ricevere Newsletter, scaricare eBook, creare playlist vocali e accedere ai corsi della Fastweb Digital Academy a te dedicati.