Rust è il linguaggio di programmazione che sta emergendo tra tutti gli altri grazie alla capacità di costruire software reliable, vale a dire sicuro, strutturato, scalabile e resistente. Come ogni linguaggio ha i suoi vantaggi e svantaggi che vanno valutati per poter scegliere di utilizzarlo per i propri software e applicazioni.
I vantaggi di usare Rust
Si parte senza librerie
Molti linguaggi come Java, C#, .NET, PHP hanno bisogno di librerie e framework per poter fornire realmente valore alle applicazioni ed ogni funzionalità spesso comprende una serie di layer astratti messi insieme per processare i dati. Anche funzionalità semplici come la verifica di un token nascondono dietro, per lo sviluppatore, numerosi aspetti come verifica degli input, gestione delle eccezioni e gestione delle risposte che sono inserite come minimo in più file ed in più funzioni granulari; ciò comporta che, se dovessimo fare reverse engineering e comprendere cosa è stato sviluppato, magari per prendere in mano del codice di un altro sviluppatore, dovremmo impegnare un sacco di tempo per scovare tutta la struttura.
In Rust invece esistono le traits, una sorta di interfacce che costruiscono uno dei pilastri del linguaggio: “Abstraction without overhead“.
State Machine
Comprendere gli stati durante l’utilizzo di un software è un aspetto essenziale per qualsiasi applicazione di livello enterprise ed è anche uno degli elementi più critici perchè qualsiasi errore potrebbe comportare gravi problemi di sicurezza. Controllare gli stati è complesso e soprattutto, con qualsiasi linguaggio, è complicata la gestione dinamica degli stati. Generalmente si cerca di mantenere gli stati in un insieme finito di possibilità ma se per un cambiamento dello scenario avessimo l’esigenza di aggiungere uno stato cosa dovremmo fare? Nella maggioranza dei casi si dovrebbero riscrivere parti di pezzi di codice correndo il forte rischio di lasciare qualcosa da parte generando errori e problemi.
Mentre in Rust esiste il supporto per gli “algebraic data types” resi concreti attraverso la struttura Enum che può essere usata per astrarre il concetto degli stati. Inoltre attraverso il compiler refactoring puoi aggiornare, per esempio a causa dell’aggiunta di un nuovo stato, tutta l’applicazione evitando errori comuni.
Performance prevedibili
In un esperimento del 2020, il team di Discord, la popolare applicazione di messaggistica per gruppi, ha riscontrato che Rust riesce a mantenere le performance stabili nel tempo nonostante eventuali picchi di utilizzo. Ciò non vuol dire che le performance siano tra le migliori tra i vari linguaggi ma che Rust ti permette di prevedere cosa succederà in qualsiasi scenario. Questo è reso possibile grazie alla gestione della memoria in maniera sicura e senza garbage collector; da una parte questa funzionalità garantisce la sicurezza del software e permette di non avere picchi che nel caso della memoria si posso trasformare in vulnerabilità, dall’altra rende le performance leggermente peggiori ma stabili.
Community e Crescita
Una community molto attiva rende Rust moderno e completamente aderente al progresso delle tecnologie, il codice è disponibile su GitHub e ciò permette praticamente test continui in grado di garantirne la sicurezza e l’affidabilità. La traiettoria tracciata è verso un continuo miglioramento ed una crescita delle funzionalità e della struttura orientando Rust anche verso l’utilizzo in applicazioni business critical, oggi anche in componenti singole del back-end come nei casi di Firefox e CloudFare.
Gli svantaggi di utilizzare Rust
Curva di apprendimento
Rust mette in campo concetti nuovi come ownership, borrows e lifetimes che non si trovano nel classico sviluppo ad oggetti, teoria comune ai più. Inoltre Rust ha all’interno elementi propri dei linguaggi funzionali come Scala e C++ che unisce ad aspetti moderni come API e moduli per essere scalabile. In pratica Rust richiede competenze avanzate praticamente in tutto lo scibile dello sviluppo per essere utilizzato appieno ma Rust è talmente modulare che è possibile adottarne solo una parte quindi rendendo la curva dell’apprendimento un pò più morbida.
Maturità del linguaggio
Rust è un linguaggio giovane, la prima versione stabile è stata rilasciata nel maggio del 2015, ed ha conusciuto un’esplosione solo negli ultimi anni, pertanto il suo ecosistema presente alcune lacune come la mancanza di framework solidi che magari avrebbero semplificato alcuni moduli standard di sviluppo. Ciò lo rende adatto, almeno al momento in cui scriviamo, per logiche di backend ed in sostituzione di linguaggi come Go, C e C++.
Sviluppo e Assistenza
La sommatoria della giovane età del linguaggio e della sua complessità di utilizzo fanno sì che sia complicato trovare sviluppatori senior e supporto specialistico, chiaramente questo svantaggio tenderà a mitigarsi nel tempo. Contattaci subito e senza impegno per assistenza e supporto sul linguaggio Rust.
Conclusioni
Adottare un linguaggio è una scelta strategica che deve tenere in considerazione tantissime variabili, per questo motivo abbiamo reso disponibile la consulenza del Solution Architect. Nel caso di Rust, oggi ci sentiamo di consigliarti la sua adozione per moduli in cui devi essere certo di avere la massima sicurezza possibile e dove un problema di performance potrebbe esporti a rischi. Inoltre puoi valutare Rust per backend ed interazioni con hardware in modalità embedded.
Contattaci subito e senza impegno per assistenza e consulenza su Rust.
Glue Labs e Rust
Orientati verso il progresso e l’innovazione, grazie all’esperienza maturata in tantissimi settori, con numerosi Clienti e con un solido gruppo aziendale ti forniamo assistenza e supporto nella progettazione, building e delivery di soluzioni con Rust con garanzia 12 mesi da qualsiasi bug. Contattaci subito e senza impegno per maggiori informazioni.