Python a Rust Sconfiggere 3 grandi ostacoli

Il trionfo di Python su Rust superando 3 grandi ostacoli

Pro di Python a rookie di Rust – il racconto della transizione di un data scientist

Figura 1: Il serpente e il granchio. (Granchio: Romina BM; Serpente: Mohan Moolepetlu; composizione dell'autore).

Tutti intorno a me sanno che sono un grande fan di 🐍 Python. Ho iniziato ad usare Python circa 15 anni fa quando mi sono stancato di Mathworks Matlab. Sebbene l’idea di Matlab sembrasse carina, dopo aver padroneggiato Python non ho mai guardato indietro. Sono diventato persino una sorta di evangelizzatore di Python alla mia università e “ho diffuso la parola”.

Sapere programmare non ti fa un programmatore di software.

Nella mia attuale azienda TenneT, un grande operatore di sistema di trasmissione nei Paesi Bassi e in Germania, stiamo costruendo una soluzione di analisi e validazione documentale con un team di circa 10 persone. Costruire una tale soluzione, soprattutto in team, è molto più difficile di quanto pensassi. Questo mi ha anche reso più interessato ai paradigmi corretti dell’ingegneria del software. Ho sempre pensato che il mio codice non fosse troppo male, ma dopo aver visto il lavoro dei miei amici ingegneri del software: oh, c’è così tanto da imparare!

Mentre imparavo argomenti come il tipaggio forte, i principi SOLID e le architetture di programmazione in generale, ho anche gettato uno sguardo ad altri linguaggi e a come risolvono il problema. In particolare, Rust ha attirato la mia attenzione in quanto spesso ho visto pacchetti Python basati su Rust (ad esempio Polars).

Per avere una corretta introduzione a Rust ho seguito il corso ufficiale di Rustlings che è un repository Git locale con 96 piccoli problemi di programmazione. Sebbene sia stato abbastanza fattibile, Rust è molto diverso da Python. Il compilatore Rust è un tipo molto severo che non accetta forse come risposta. Di seguito elenco le tre principali differenze tra Rust e Python che ho riscontrato.

Avviso: anche se sono abbastanza competente in Python, le mie altre lingue sono un po’ arrugginite (gioco di parole voluto). Sto ancora imparando Rust e potrei aver compreso parti in modo errato.

Figura 2: Ce l'abbiamo fatta alla linea del traguardo (screenshot dell'autore).

1. Ownership, Borrowing e lifetimes

La proprietà e il prestito sono probabilmente gli aspetti più fondamentali del linguaggio di programmazione Rust. È progettato per garantire la sicurezza della memoria senza la necessità di un cosiddetto garbage collector. Questo è un concetto unico…