"Rust és el futur de la programació del sistema, C és el nou assemblador" - un discurs d'un dels principals enginyers d'Intel

A la recent cimera de tecnologia de codi obert (OSTS) Josh Triplett, un enginyer líder d'Intel, va dir que la seva empresa està interessada que Rust assoleixi la "paritat" amb C, que encara és dominant en el camp dels sistemes i el desenvolupament de baix nivell, en un futur proper. En el seu discurs sota el títol "Intel i Rust: el futur de la programació de sistemes", també va parlar sobre la història de la programació de sistemes, com C es va convertir en el llenguatge de programació del sistema "per defecte", quines característiques de Rust li donen un avantatge respecte a C i com, en un moment proper, futur podria substituir completament C en una àrea determinada de programació.

"Rust és el futur de la programació del sistema, C és el nou assemblador" - un discurs d'un dels principals enginyers d'Intel

La programació del sistema és el desenvolupament i gestió de programari que serveix com a plataforma per crear aplicacions d'aplicació, assegurant que aquestes últimes interactuen amb el processador, la memòria RAM, els dispositius d'E/S i els equips de xarxa. El programari del sistema crea una abstracció especial en forma d'interfícies que us ajuden a crear programari d'aplicació sense entrar en els detalls de com funciona el mateix maquinari.

El mateix Triplett defineix la programació de sistemes com "qualsevol cosa que no sigui una aplicació". Inclou coses com la BIOS, el microprogramari, els carregadors d'arrencada i els nuclis del sistema operatiu, diversos tipus de codi integrat de baix nivell i implementacions de màquines virtuals. Curiosament, Triplett creu que el navegador web també és programari del sistema, ja que fa temps que el navegador s'ha convertit en més que "un simple programa", convertint-se en una "plataforma independent per a llocs web i aplicacions web".

En el passat, la majoria dels programes del sistema, inclosos la BIOS, els carregadors d'arrencada i el microprogramari, estaven escrits en llenguatge ensamblador. Els experiments van començar a la dècada de 1960 per proporcionar suport de maquinari per a idiomes d'alt nivell, donant lloc a idiomes com PL/S, BLISS, BCPL i ALGOL 68.

Aleshores, a la dècada de 1970, Dennis Ritchie va crear el llenguatge de programació C per al sistema operatiu Unix. Creat en el llenguatge de programació B, que ni tan sols tenia suport d'escriptura, C estava ple de potents funcions d'alt nivell que s'adaptaven millor per escriure sistemes operatius i controladors. Diversos components d'UNIX, inclòs el seu nucli, es van reescriure finalment en C. Posteriorment, molts altres programes del sistema, inclosa la base de dades Oracle, la major part del codi font de Windows i el sistema operatiu Linux, també es van escriure en C.

C va rebre un gran suport en aquesta direcció. Però, què va fer que els desenvolupadors hi canviessin exactament? Triplett creu que per motivar els desenvolupadors a canviar d'un llenguatge de programació a un altre, aquest últim primer ha de proporcionar noves funcions sense perdre les antigues.

En primer lloc, l'idioma ha d'oferir noves característiques "prou impressionants". "No pot ser millor. Ha de ser molt millor justificar l'esforç i el temps que els enginyers triguen a fer la transició”, explica. En comparació amb el llenguatge ensamblador, C tenia molt a oferir. Admetava una mica de seguretat de tipus, proporcionava una millor portabilitat i rendiment amb construccions d'alt nivell i generava un codi molt més llegible en general.

En segon lloc, el llenguatge ha de proporcionar suport per a funcions antigues, la qual cosa significa que en la història de la transició a C, els desenvolupadors havien d'assegurar-se que no fos menys funcional que el llenguatge assemblador. Triplett explica: "Un idioma nou no pot ser simplement millor, també ha de ser igual de bo". A més de ser més ràpid i suportar qualsevol tipus de dades que pogués utilitzar el llenguatge ensamblador, C també tenia el que Triplett va anomenar "escotilla d'escapament", és a dir, suport per inserir-hi codi de llenguatge ensamblador.

"Rust és el futur de la programació del sistema, C és el nou assemblador" - un discurs d'un dels principals enginyers d'Intel

Triplett creu que ara C s'està convertint en el que era el llenguatge assemblador fa molts anys. "C és el nou muntador", diu. Els desenvolupadors ara busquen un nou llenguatge d'alt nivell que no només resolgui els problemes persistents de C que ja no es poden solucionar, sinó que també ofereixi noves funcions interessants. Aquest llenguatge ha de ser prou convincent per obligar els desenvolupadors a canviar-hi, ha de ser segur, proporcionar una gestió automàtica de la memòria i molt més.

"Qualsevol llenguatge que vulgui ser millor que C ha d'oferir molt més que una protecció per desbordament de la memòria intermèdia si realment vol ser una alternativa convincent. Els desenvolupadors estan interessats en la usabilitat i el rendiment, en escriure codi que s'explica per si mateix i fa més feina en menys línies. També cal abordar els problemes de seguretat. La facilitat d'ús i el rendiment van de la mà. Com menys codi hagis d'escriure per aconseguir alguna cosa, menys oportunitats tindreu de cometre errors relacionats amb la seguretat o no relacionats amb la seguretat", explica Triplett.

Comparant Rust i C

L'any 2006, Graydon Hoare de Mozilla va començar a escriure Rust com a projecte personal. I el 2009, Mozilla va començar a patrocinar el desenvolupament de Rust per a les seves pròpies necessitats, i també va ampliar l'equip per desenvolupar encara més el llenguatge.

Una de les raons per les quals Mozilla estava interessat en el nou llenguatge és que Firefox estava escrit en més de 4 milions de línies de codi C++ i tenia moltes vulnerabilitats crítiques. Rust es va crear tenint en compte la seguretat i la concurrència, per la qual cosa és l'opció perfecta per reescriure molts components de Firefox com a part del projecte de Quantum per revisar completament l'arquitectura del navegador. Mozilla també està utilitzant Rust per desenvolupar Servo, un motor de renderització HTML que substituirà l'actual motor de renderització de Firefox en el futur. Moltes altres empreses han començat a utilitzar Rust per als seus projectes, com ara Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu i moltes més.

Rust resol un dels problemes més importants del llenguatge C. Ofereix una gestió automàtica de la memòria perquè els desenvolupadors no hagin d'assignar-lo manualment i després desassignar-lo per a cada objecte d'una aplicació. El que fa que Rust sigui diferent d'altres llenguatges moderns és que no té un col·lector d'escombraries que elimina automàticament els objectes no utilitzats de la memòria, ni té un entorn d'execució per executar-lo, com el Java Runtime Environment per a Java. En canvi, Rust té els conceptes de propietat, préstec, referències i vida. "Rust té un sistema per declarar les trucades d'objectes, que us permet especificar si el propietari l'està utilitzant o si només està en préstec. Si només feu prestat un objecte, el compilador el vigilarà i s'assegurarà que l'original es mantingui al seu lloc mentre us feu referència. I Rust també s'assegurarà que l'objecte s'elimini de la memòria tan bon punt acabi d'utilitzar-lo, inserint la trucada adequada al codi en temps de compilació sense temps addicional", diu Triplett.

La manca d'un temps d'execució natiu també es pot considerar una característica positiva de Rust. Triplett creu que els llenguatges que s'executen amb ell són difícils d'utilitzar com a eina per a la programació de sistemes. Segons explica, "Has d'iniciar aquest temps d'execució abans de poder trucar a qualsevol codi, has d'utilitzar aquest temps d'execució per cridar funcions i el mateix temps d'execució pot executar codi addicional a la teva esquena en moments inesperats".

Rust també s'esforça per oferir una programació paral·lela segura. Les mateixes característiques que el fan segur per a la memòria fan un seguiment de coses com ara quin fil té quin objecte i quins objectes es poden passar entre fils i quins necessiten un bloqueig.

Totes aquestes funcions fan que Rust sigui prou convincent perquè els desenvolupadors escullin com a nova eina de programació del sistema. Tanmateix, pel que fa a la computació paral·lela, Rust encara està lleugerament per darrere de C.

Triplett crearà un grup de treball especial que implementarà les característiques necessàries a Rust perquè pugui igualar, superar i substituir completament C en el camp de la programació de sistemes. EN tema a reddit, dedicat a la seva intervenció, ha assegurat que "el grup FFI/C Parità està en procés de creació i encara no ha començat a treballar", mentre que està disposat a respondre qualsevol dubte, i en el futur definitivament publicarà el més proper. plans per al desenvolupament de Rust com a part de la seva iniciativa per a totes les parts interessades.

Es pot suposar que, en primer lloc, el grup FFI / C Parity es dedicarà a millorar el suport multithreading de Rust, introduint el suport per a BFLOAT16, el format de punt flotant que va aparèixer als nous processadors Intel Xeon Scalable, així com l'estabilització del codi de muntatge. insercions.



Font: 3dnews.ru

Afegeix comentari