«Rust é o futuro da programação sistêmica, C é o novo Assembly» — apresentação de um dos engenheiros principais da Intel

No recente Summit de Tecnologia de Código Aberto (Open Source Technology Summit - OSTS) Josh Triplett, engenheiro-chefe da Intel, comentou que sua empresa está interessada em que o Rust alcance em breve "paridade" com a ainda dominante linguagem C, que é usada para desenvolvimento de sistemas e de baixo nível. Em sua apresentação intitulada "Intel e Rust: o futuro da programação de sistemas", ele também abordou a história da programação de sistemas, como o C se tornou a linguagem de programação de sistemas "por padrão", quais vantagens o Rust oferece em relação ao C e como ele poderá totalmente substituir o C nessa área da programação no futuro.

«Rust é o futuro da programação sistêmica, C é o novo Assembly» — apresentação de um dos engenheiros principais da Intel

Programação de sistemas é o desenvolvimento e a gestão de software que serve como plataforma para a criação de aplicativos, facilitando a interação destes com o processador, a memória RAM, os dispositivos de entrada e saída e o hardware de rede. O software de sistema cria uma abstração especial na forma de interfaces que ajudam a desenvolver software aplicativo, sem a necessidade de detalhar como funciona o "hardware".

O próprio Triplett define a programação de sistemas como "tudo que não é um aplicativo". Isso inclui coisas como BIOS, firmwares, carregadores e núcleos de sistemas operacionais, diferentes tipos de código embarcado de baixo nível, assim como implementações de máquinas virtuais. Curiosamente, Triplett acredita que um navegador web também é software de sistema, uma vez que o navegador se tornou muito mais do que "apenas um programa", transformando-se em uma plataforma autônoma para sites e aplicativos web.

No passado, a maioria dos programas de sistema, incluindo BIOS, carregadores e firmwares, era escrita em linguagem de montagem. Na década de 1960, começaram os experimentos para fornecer suporte de hardware para linguagens de alto nível, o que levou à criação de linguagens como PL/S, BLISS, BCPL e ALGOL 68.

Então, na década de 1970, Dennis Ritchie criou a linguagem de programação C para o sistema operacional Unix. Desenvolvido a partir da linguagem de programação B, que não tinha nem mesmo suporte para tipagem, o C foi recheado de poderosas funções de alto nível que eram ideais para a criação de sistemas operacionais e drivers. Vários componentes do UNIX, incluindo seu núcleo, foram eventualmente reescritos em C. Posteriormente, muitos outros programas de sistema, incluindo o banco de dados Oracle, a maior parte do código-fonte do Windows e o sistema operacional Linux, também foram escritos em C.

O C ganhou um enorme suporte nessa direção. Mas o que exatamente levou os desenvolvedores a migrarem para ele? Triplett acredita que, para motivar os desenvolvedores a mudar de uma linguagem de programação para outra, esta última deve principalmente oferecer novas funcionalidades sem perder as capacidades antigas.

Em primeiro lugar, a linguagem deve oferecer novas funcionalidades "suficientemente impressionantes". "Ela não pode ser apenas um pouco melhor. Deve ser significativamente melhor para justificar o esforço e o tempo dos engenheiros necessários para a transição", explica ele. Em comparação com a linguagem de montagem, o C tinha muitas coisas que poderia oferecer. Ele suportava, em certa medida, tipagem segura, oferecia melhor portabilidade e desempenho com construções de alto nível, além de gerar um código geral muito mais legível.

Em segundo lugar, a linguagem deve oferecer suporte a funcionalidades antigas, o que significa que, na história da transição para o C, os desenvolvedores deveriam ter certeza de que ela era tão funcional quanto a linguagem de montagem. Triplett explica: "Uma nova linguagem não pode ser apenas melhor, também não deve ser pior". Além de ser mais rápida e suportar todos os tipos de dados que uma linguagem de montagem poderia usar, o C também possuía o que Triplett chamou de "porta de emergência", pois suportava inserções de código em linguagem de montagem.

«Rust é o futuro da programação sistêmica, C é o novo Assembly» — apresentação de um dos engenheiros principais da Intel

Triplet afirma que C está se tornando o que a linguagem Assembly foi há muitos anos. "C é o novo Assembly", declara ele. Agora, os desenvolvedores buscam uma nova linguagem de alto nível que não apenas resolva os problemas acumulados em C, cujas correções já são impossíveis, mas que também ofereça novas e impressionantes capacidades. Tal linguagem deve ser convincente o suficiente para levar os desenvolvedores a migrarem para ela, deve ser segura, oferecer gerenciamento automático de memória e muito mais.

"Qualquer linguagem que queira ser melhor que C deve oferecer muito mais do que apenas proteção contra estouros de buffer, se realmente quiser se tornar uma alternativa convincente. Os desenvolvedores estão interessados na usabilidade e desempenho, em escrever um código que não requer explicações e que realiza mais trabalho com menos linhas. Também é necessário resolver problemas de segurança. A simplicidade de uso e o desempenho estão inextricavelmente ligados a isso. Quanto menos código você precisa escrever para alcançar algo, menores são suas chances de cometer erros de segurança ou outros erros", explica Triplet.

Comparação entre Rust e C

Já em 2006, Graydon Hoare, um funcionário da Mozilla, começou a escrever Rust como um projeto pessoal. Em 2009, a Mozilla começou a patrocinar o desenvolvimento do Rust para suas próprias necessidades e também ampliou a equipe para o desenvolvimento contínuo da linguagem.

Uma das razões pelas quais a Mozilla se interessou por uma nova linguagem é que o Firefox foi escrito em mais de 4 milhões de linhas de código C++ e tinha várias vulnerabilidades críticas. Rust foi criado com foco em segurança e paralelismo, tornando-se a escolha ideal para reescrever muitos componentes do Firefox como parte do projeto Quantum, que visa uma renovação completa da arquitetura do navegador. A Mozilla também está usando Rust no desenvolvimento do Servo, um mecanismo de renderização HTML que substituirá o atual mecanismo de renderização do Firefox no futuro. Muitas outras empresas começaram a usar Rust para seus projetos, incluindo Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu e muitas outras.

O Rust resolve um dos problemas mais importantes da linguagem C. Ele oferece gerenciamento automático de memória, portanto, os desenvolvedores não precisam alocar manualmente e liberar memória para cada objeto no aplicativo. O que diferencia o Rust de outras linguagens modernas é que não possui um coletor de lixo que remove automaticamente objetos não utilizados da memória, nem um ambiente de execução necessário para sua operação, como o Java Runtime Environment para Java. Em vez disso, o Rust tem conceitos de propriedade, empréstimos, referências e duração. "No Rust, há um sistema de declaração de chamadas de objeto que permite especificar se o proprietário está usando o objeto ou se é apenas um empréstimo. Se você está apenas emprestando o objeto, o compilador irá monitorar isso e garantir que o original permaneça no lugar enquanto você ainda estiver referenciando-o. Além disso, o Rust garantirá que o objeto seja removido da memória assim que terminar de ser utilizado, inserindo a chamada apropriada no código durante a compilação, sem custos temporais adicionais", explica Triplett.

A ausência de um ambiente de execução próprio também pode ser considerada uma característica positiva do Rust. Triplett acredita que as linguagens que são executadas com a ajuda dele são difíceis de usar como ferramentas para programação de sistemas. Como ele explica: "Você deve inicializar esse ambiente de execução antes de poder chamar qualquer código, deve usar esse ambiente de execução para chamar funções e o próprio ambiente de execução pode executar código adicional nas suas costas em momentos inesperados."

O Rust também busca garantir programação paralela segura. As mesmas funções que garantem a segurança da memória monitoram coisas como a que thread pertence a qual objeto e quais objetos podem ser transferidos entre threads, enquanto outros necessitam de bloqueio.

Todos esses recursos tornam o Rust bastante convincente para que os desenvolvedores o escolham como uma nova ferramenta para programação de sistemas. No entanto, do ponto de vista do processamento paralelo, o Rust ainda está um pouco atrás do C.

Triplette está se preparando para criar um grupo de trabalho especial que será responsável pela implementação no Rust das funções necessárias para que ele possa igualar, superar e substituir o C na área de programação de sistemas. No tema do Reddit, dedicado à sua apresentação, ele informou que "o grupo FFI/C Parity está em processo de formação e ainda não começou a trabalhar". Por enquanto, ele está disponível para responder a quaisquer perguntas e no futuro certamente publicará planos futuros de desenvolvimento do Rust em torno de sua iniciativa para todos os interessados.

Pode-se supor que, em primeiro lugar, o grupo FFI/C Parity estará focado em melhorar o suporte à multithreading no Rust, implementando suporte ao BFLOAT16, um formato de representação de números de ponto flutuante que surgiu nos novos processadores Intel Xeon Scalable, além de estabilizar as inserções de código em Assembly.



Fonte: 3dnews.ru
Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster