Per què els científics recorren a Rust

El 2015, el bioinformàtic Johannes Köster va ser el que va anomenar “una mena de noi de Python a temps complet”. Ja havia escrit una eina popular, el gestor de flux de treball Snakemake, en el llenguatge de programació. Ara estava contemplant un projecte que requeria un nivell de rendiment computacional que Python simplement no podia oferir. Així que va començar a buscar alguna cosa nova.

Köster, ara a la Universitat de Duisburg-Essen a Alemanya, buscava un llenguatge que oferís l'”expressivitat” de Python però la velocitat de llenguatges com C i C++. És a dir, “un llenguatge d’alt rendiment i encara, diguem-ne, ergonòmic d’utilitzar”, explica. El que va trobar va ser Rust.

Creat per primera vegada el 2006 per Graydon Hoare com a projecte paral·lel mentre treballava al desenvolupador de navegadors Mozilla, amb seu a Mountain View, Califòrnia, Rust combina el rendiment de llenguatges com C++ amb una sintaxi més amigable, un enfocament en la seguretat del codi i conjunt d’eines dissenyades que simplifiquen el desenvolupament. Parts del navegador Firefox de Mozilla estan escrits en Rust i, segons es diu, els desenvolupadors de Microsoft l’utilitzen per recodificar parts del sistema operatiu Windows. L’enquesta anual per a desenvolupadors de Stack Overflow, que aquest any va enquestar a prop de 65.000 programadors, ha classificat Rust com el llenguatge de programació “més estimat” durant 5 anys consecutius. El lloc de codi compartit GitHub diu que Rust va ser el segon llenguatge amb més creixement a la plataforma el 2019, un 235% més que l’any anterior.

Els científics també estan recorrent a Rust. Köster, per exemple, el va utilitzar per crear una aplicació, anomenada Varlociraptor, que compara milions de lectures de seqüències amb milers de milions de bases genètiques per identificar variants genòmiques. “Aquestes dades són enormes”, diu. “Això ha de ser el més ràpid possible”. Però aquest poder té un cost: la corba d’aprenentatge de Rust és pronunciada.

“Es necessita una mica de temps inicial”, diu Carol Nichols, membre de l’equip principal de Rust i fundadora de la consultora Integer 32 a Pittsburgh, Pennsilvània. “Però m’ha permès fer coses que d’una altra manera no seria capaç de fer. Veig aquest temps també gastat”.

Atenció: no hi ha guies

Els fluxos de treball per analitzar dades científiques solen utilitzar llenguatges com Python, R i Matlab. Aquests interpreten les línies de codi una per una i després les executen, un estil de programació que és bo per explorar dades, però no a velocitat.

C i C++ són ràpids, però “no tenen guies”, diu Ashley Hauck, una programadora de Rust (o “Rustacean”, com es coneix als membres de la comunitat) a Estocolm. Per exemple, no hi ha controls que impedeixin que un programador C o C++ accedeixi de manera inadequada a la memòria que ja s’ha alliberat de nou al sistema operatiu, o que impedeixi que el programa alliberi la mateixa peça dues vegades. En el millor dels casos, això provocaria que el programa es bloquegi. Però també pot retornar dades sense sentit o exposar vulnerabilitats de seguretat. Segons els investigadors de Microsoft, el 70% dels errors de seguretat que l’empresa corregeix cada any es relacionen amb la seguretat de la memòria.

Regles de memòria

El model de Rust utilitza regles per assignar cada peça de memòria a un únic propietari i fer complir qui hi pot accedir. El codi que infringeix aquestes regles mai té l’oportunitat de fallar, no es compilarà. “Tenen un sistema de gestió de memòria que es basa en aquest concepte de temps de vida que permet al compilador fer un seguiment en temps de compilació quan s’assigna la memòria, quan s’allibera, qui la posseeix, qui hi pot accedir”, explica Rob Patro, un investigador informàtic. biòleg de la Universitat de Maryland, College Park. “Hi ha una gran classe d’errors de correcció que desapareixen simplement en virtut de la manera com està dissenyat el llenguatge”.

Les mateixes garanties ajuden a garantir que el codi paral·lelitzat (programari escrit per executar-se en diversos processadors) es pugui executar de manera segura, per exemple, eliminant la possibilitat que diversos fils computacionals accedeixin a les mateixes dades al mateix temps.

El resultat és un llenguatge més fàcil de mantenir i depurar, però més difícil d’aprendre. “Cap altre llenguatge convencional té aquests conceptes, i són realment fonamentals per entendre molt de com cal escriure codi a Rust”, diu Nichols. Stephan Hügel, que estudia la visualització de dades geogràfiques al Trinity College de Dublín, estima que va passar dos o tres mesos a portar un algorisme de Python per convertir les coordenades geoespacials d’un sistema de referència a un altre a Rust, aconseguint una execució quatre vegades més ràpida. Richard Apodaca, fundador de l’empresa de programari de cheminformatic Metamolecular a La Jolla, Califòrnia, diu que li va trigar uns sis mesos a ser competent en l’idioma.

Centra’t en la usabilitat

Per compensar, els desenvolupadors de Rust han optimitzat l’experiència de l’usuari, diu Manish Goregaokar, que dirigeix ​​l’equip d’eines de desenvolupadors de Rust i té la seu a Berkeley, Califòrnia. Per exemple, el compilador produeix missatges d’error especialment informatius, fins i tot destaca el codi ofensiu i suggereix com solucionar-ho. “Si el vostre llenguatge introdueix un concepte nou, millor que sigui agradable treballar-hi”, explica Goregaokar.

La comunitat Rust també ofereix una àmplia documentació i ajuda en línia, inclosa una referència en línia popular anomenada Llibre i un “Llibre de receptes” de receptes per resoldre problemes habituals. Els usuaris lloen la cadena d’eines Rust: les aplicacions que utilitzen els programadors per convertir el codi en aplicacions (vegeu “Oxidem-nos”). “Les eines i la infraestructura al voltant de Rust són realment fenomenals”, diu Patro. A diferència dels molts compiladors i utilitats auxiliars que utilitzen els programadors per crear codi C, Rustaceans pot utilitzar una única eina, anomenada Cargo, per compilar codi Rust, executar proves, generar documentació automàticament, carregar un paquet a un repositori i molt més. També baixa i instal·la paquets de tercers automàticament. Un connector de Cargo anomenat Clippy marca els errors comuns i el codi Rust “no idiomàtic”, una característica que Patro anomena “absolutament fenomenal”.

Anem a oxidar

A continuació s’explica com crear un lector de fitxers GenBank perquè pugueu explorar algunes de les característiques de Rust.

• Instal·leu Rust a www.rust-lang.org/learn/get-started

• Clonar el dipòsit de GitHub a https://github.com/jperkel/gb_read

• Executeu “execució de càrrega” des de la línia d’ordres per descarregar dependències externes i crear l’aplicació. De manera predeterminada, l’aplicació analitza el fitxer GenBank ‘nc_005816.gb’ al repositori de GitHub, però podeu especificar un fitxer d’entrada alternatiu amb ‘cargo run

• Executar les proves incloses mitjançant la prova de càrrega.

• Creeu i visualitzeu documentació amb ‘cargo doc –open’.

Hi ha complements Rust per a entorns de desenvolupament populars, com ara Visual Studio Code de Microsoft i IntelliJ de JetBrains, així com un “pati de jocs” Rust que proporciona un entorn Rust en línia en directe per a l’experimentació de codi. I David Lattimore, un desenvolupador de programari a Sydney, Austràlia, va crear un “nucli” per utilitzar Rust als quaderns computacionals Jupyter, així com un entorn interactiu d’estil Python anomenat REPL (read-evaluate-print bucle).

L’ajuda al desenvolupament és l’ecosistema de paquets de tercers de Rust, o “caixes”, que actualment són prop de 50.000 (vegeu “L’augment de l’òxid”). Aquests encapsulen algorismes en disciplines com la bioinformàtica (Köster’s Rust-Bio), les geociències (el projecte Geo-Rust) i les matemàtiques (nalgebra). Tot i així, diu Nichols, “això definitivament podria inclinar la balança lluny de Rust, si les biblioteques que necessiteu no estan a Rust”. Tanmateix, de vegades, els programadors poden salvar aquesta bretxa utilitzant la “interfície de funció estrangera” de Rust.

RUST RISING: gràfic de línies que mostra l'augment dels paquets de codi en diversos repositoris en línia.

Font: http://www.modulecounts.com

Codi oxidat

A part de la logística de codificació, el que és innegable és que Rust és ràpid. Al maig, el bioinformàtic Heng Li del Dana-Farber Cancer Institute de Boston, Massachusetts, va provar diversos idiomes en una tasca de biologia computacional que implicava analitzar 5,7 milions de registres de seqüències. Rust va superar C per ocupar el primer lloc. “Quan volem escriure un programa d’alt rendiment amb diversos fils, i també si necessiteu que sigui molt ràpid i compacte a la memòria, llavors Rust és l’opció ideal”, diu Li.

Luiz Irber, un bioinformàtic de la Universitat de Califòrnia, Davis, va utilitzar Rust per recodificar (o “oxidar”, en el llenguatge Rust) una eina anomenada Sourmash, que realitza cerques genòmiques i perfils taxonòmics, per facilitar el manteniment del programari i accedir al llenguatge modern. característiques i fer que el codi funcioni en un navegador web, diu.

Dirigit per l’estudiant de postgrau Hirak Sarkar, l’equip de Patro va utilitzar Rust per construir una eina d’anàlisi d’expressió gènica anomenada Terminus després que el membre de l’equip Avi Srivastava tornés d’una pràctica a 10x Genomics, una empresa de biotecnologia a Pleasanton, Califòrnia, que utilitza Rust per desenvolupar codi obert. eines. “La bellesa de Rust és que fa que la tasca de depuració sigui molt fàcil, perquè la gestió de la memòria és molt, molt millor”, explica Srivastava, que ara és al New York Genome Center.

Però per a molts rústacis, l’element humà és igual de convincent. Hauck, membre de la comunitat LGBT+, diu que els usuaris de Rust han fet tot el possible per fer-la sentir benvinguda. La comunitat, diu, “sempre ha fet un esforç per ser extremadament inclusiva, com, molt conscient de com la diversitat afecta les coses; molt conscient de com escriure un codi de conducta i fer complir aquest codi de conducta”.

“Aquesta és probablement la majoria de la raó per la qual encara estic escrivint Rust”, diu Hauck. “És perquè la comunitat és tan fantàstica”.

Leave a Comment

Your email address will not be published. Required fields are marked *