"Rust é o futuro da programación do sistema, C é o novo ensamblador" - un discurso dun dos principais enxeñeiros de Intel

No recente Open Source Technology Summi (OSTS) Josh Triplett, un enxeñeiro xefe de Intel, dixo que a súa empresa está interesada en que Rust alcance a "paridade" con C, que aínda é dominante no campo dos sistemas e desenvolvemento de baixo nivel, nun futuro próximo. Na súa intervención baixo o título "Intel and Rust: The Future of Systems Programming" tamén falou sobre a historia da programación de sistemas, como C se converteu na linguaxe de programación "por defecto" do sistema, que características de Rust lle dan unha vantaxe sobre C e como no no futuro podería substituír completamente a C nunha determinada área de programación.

"Rust é o futuro da programación do sistema, C é o novo ensamblador" - un discurso dun dos principais enxeñeiros de Intel

A programación de sistemas é o desenvolvemento e xestión de software que serve de plataforma para a creación de aplicacións de aplicacións, garantindo que estas últimas interactúen co procesador, a memoria RAM, os dispositivos de E/S e os equipos de rede. O software do sistema crea unha abstracción especial en forma de interfaces que che axudan a crear software de aplicación sen entrar nos detalles de como funciona o propio hardware.

O propio Triplett define a programación de sistemas como "todo o que non é unha aplicación". Inclúe cousas como BIOS, firmware, cargadores de arranque e núcleos de sistemas operativos, varios tipos de código integrado de baixo nivel e implementacións de máquinas virtuais. Curiosamente, Triplett cre que o navegador web tamén é software do sistema, xa que o navegador converteuse dende hai tempo en algo máis que "un só programa", converténdose nunha "plataforma independente para sitios web e aplicacións web".

No pasado, a maioría dos programas do sistema, incluíndo BIOS, cargadores de arranque e firmware, escribíanse en linguaxe ensamblador. Os experimentos comezaron na década de 1960 para proporcionar soporte de hardware para linguaxes de alto nivel, o que leva a linguaxes como PL/S, BLISS, BCPL e ALGOL 68.

Entón, na década de 1970, Dennis Ritchie creou a linguaxe de programación C para o sistema operativo Unix. Creado na linguaxe de programación B, que nin sequera tiña soporte para escribir, C estaba cheo de poderosas funcións de alto nivel que eran máis adecuadas para escribir sistemas operativos e controladores. Varios compoñentes de UNIX, incluído o seu núcleo, foron finalmente reescritos en C. Posteriormente, moitos outros programas do sistema, incluíndo a base de datos Oracle, a maior parte do código fonte de Windows e o sistema operativo Linux, tamén foron escritos en C.

C recibiu un gran apoio nesta dirección. Pero que fixo exactamente que os desenvolvedores cambiaran a el? Triplett cre que, para motivar aos desenvolvedores a cambiar dunha linguaxe de programación a outra, estes últimos deben primeiro proporcionar novas funcións sen perder as antigas.

En primeiro lugar, o idioma debe ofrecer novas características "o suficientemente impresionantes". "Non pode ser mellor. Ten que ser significativamente mellor para xustificar o esforzo e o tempo que leva os enxeñeiros facer a transición”, explica. En comparación coa linguaxe ensambladora, C tiña moito que ofrecer. Soportaba algo de seguridade de tipo, proporcionaba unha mellor portabilidade e rendemento con construcións de alto nivel e xeraba un código moito máis lexible en xeral.

En segundo lugar, a linguaxe debe proporcionar soporte para funcións antigas, o que significa que na historia da transición a C, os desenvolvedores tiñan que estar seguros de que non era menos funcional que a linguaxe ensambladora. Triplett explica: "Unha nova lingua non pode simplemente ser mellor, tamén debe ser igual de boa". Ademais de ser máis rápido e admitir calquera tipo de datos que puidese usar a linguaxe ensambladora, C tamén tiña o que Triplett chamou unha "escotilla de escape", é dicir, soporte para inserir código de linguaxe ensamblador nel.

"Rust é o futuro da programación do sistema, C é o novo ensamblador" - un discurso dun dos principais enxeñeiros de Intel

Triplett cre que agora C está a converterse no que era a linguaxe ensambladora hai moitos anos. "C é o novo montador", di. Os desenvolvedores buscan agora unha nova linguaxe de alto nivel que non só resolva os problemas persistentes de C que xa non se poden solucionar, senón que tamén ofreza novas funcións interesantes. Tal linguaxe debe ser o suficientemente convincente como para forzar aos desenvolvedores a cambiar a ela, debe ser seguro, proporcionar xestión automática da memoria e moito máis.

"Calquera linguaxe que queira ser mellor que C debe ofrecer moito máis que unha protección contra desbordamento do búfer se realmente quere ser unha alternativa convincente. Os desenvolvedores están interesados ​​na usabilidade e no rendemento, en escribir código que se explica por si mesmo e que faga máis traballo en menos liñas. Tamén hai que abordar os problemas de seguridade. A facilidade de uso e o rendemento van da man. Canto menos código teñas que escribir para conseguir algo, menos oportunidades tes de cometer erros relacionados coa seguridade ou non", explica Triplett.

Comparando Rust e C

En 2006, Graydon Hoare de Mozilla comezou a escribir Rust como un proxecto persoal. E en 2009, Mozilla comezou a patrocinar o desenvolvemento de Rust para as súas propias necesidades, e tamén ampliou o equipo para desenvolver aínda máis a linguaxe.

Unha das razóns polas que Mozilla estaba interesado na nova linguaxe é que Firefox estaba escrito en máis de 4 millóns de liñas de código C++ e tiña bastantes vulnerabilidades críticas. Rust foi construído tendo en conta a seguridade e a concorrencia, polo que é a opción perfecta para reescribir moitos compoñentes de Firefox como parte do proxecto de Quantum para revisar completamente a arquitectura do navegador. Mozilla tamén está a usar Rust para desenvolver Servo, un motor de renderizado HTML que substituirá o motor de renderizado actual de Firefox no futuro. Moitas outras empresas comezaron a usar Rust para os seus proxectos, incluíndo Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu e moitos máis.

Rust resolve un dos problemas máis importantes da linguaxe C. Ofrece unha xestión automática da memoria para que os desenvolvedores non teñan que asignala manualmente e despois desasignala para cada obxecto dunha aplicación. O que fai a Rust diferente doutras linguaxes modernas é que non ten un colector de lixo que elimine automaticamente os obxectos non utilizados da memoria, nin ten un ambiente de execución para executalo, como o Java Runtime Environment para Java. Pola contra, Rust ten os conceptos de propiedade, préstamo, referencias e vida. "Rust ten un sistema para declarar chamadas a obxectos, que che permite especificar se o propietario o está a usar ou se só está a pedir prestado. Se só tomas prestado un obxecto, o compilador manterá un ollo nel e asegurarase de que o orixinal permaneza no seu lugar mentres fai referencia a el. E Rust tamén se asegurará de que o obxecto sexa eliminado da memoria en canto remate de usalo, inserindo a chamada apropiada no código en tempo de compilación sen tempo adicional ", di Triplett.

A falta dun tempo de execución nativo tamén se pode considerar unha característica positiva de Rust. Triplett cre que as linguaxes que funcionan con el son difíciles de usar como ferramenta para a programación de sistemas. Segundo explica, "Debes inicializar este tempo de execución antes de poder chamar a calquera código, debes usar este tempo de execución para chamar funcións e o propio tempo de execución pode executar código adicional ás túas costas en momentos inesperados".

Rust tamén se esforza por ofrecer unha programación paralela segura. As mesmas funcións que o fan seguro para a memoria fan un seguimento de cousas como que fío posúe que obxecto e que obxectos se poden pasar entre fíos e cales necesitan un bloqueo.

Todas estas características fan que Rust sexa o suficientemente atractivo para que os desenvolvedores elixan como a súa nova ferramenta de programación do sistema. Non obstante, en termos de computación paralela, Rust aínda está lixeiramente por detrás de C.

Triplett vai crear un grupo de traballo especial que implementará as funcións necesarias en Rust para que poida igualar, superar e substituír totalmente a C no campo da programación de sistemas. EN tema en reddit, dedicado á súa intervención, asegurou que "o grupo FFI/C Parity está en proceso de creación e aínda non comezou a traballar", aínda que está preparado para responder a calquera dúbida, e no futuro publicará definitivamente a máis próxima. planea o desenvolvemento de Rust como parte da súa iniciativa para todas as partes interesadas.

Pódese supoñer que, en primeiro lugar, o grupo FFI/C Parity estará dedicado a mellorar o soporte multithreading de Rust, introducindo soporte para BFLOAT16, o formato de punto flotante que apareceu nos novos procesadores Intel Xeon Scalable, así como estabilizar o código de montaxe. insercións.



Fonte: 3dnews.ru

Engadir un comentario