Выбирай : Покупай : Используй

Вход для партнеров

Вход для продавцов

0

Создатель Linux Ubuntu подарит миру переводчик с самого главного языка программирования на модный язык зумеров


Переводчик для программистов

В Бристольском университете (Великобритания) ведется разработка автоматического транслятора программного кода с языка C на Rust. Спонсором проекта стала компания Canonical – разработчик Ubuntu, самого известного и популярного в мире дистрибутива Linux.

Canonical объявила на своем сайте, что будет финансировать разработку на протяжении ближайших трех лет. Компания не уточняет, успеют ли специалисты университета выполнить работу за этот срок, и не раскрывает размер своих вложений в этот проект.

Также к моменту выхода материала не было известно, как именно будет распространяться будущий транслятор – бесплатно или за деньги. Ubuntu, как и подавляющим большинством дистрибутивов Linux, можно пользоваться бесплатно и при этом легально, но в 2024 г. Canonical внедрила схему платных обновлений.

В настоящее время Canonical позиционирует проект исключительно как исследовательский. Она уточняет, что транслятор должен будет упростить перевод кода с C на Rust, поскольку ручное переписывание – это не только огромный объем работы, но еще и потеря накопленных исправлений и оптимизаций.

Новое решение может в разы упростить переход с С на Rust

Отдельно Canonical прошлась по традиционным трансляторам кода с C на Rust. По ее мнению, они генерируют небезопасный и одновременно неидиоматичный код.

Основа компьютерного мира

Новый транслятор создается в первую очередь для перевода на код Rust больших репозиториев с сотнями тысяч строк кода, написанных на C. Выбор Rust в качестве конечной цели сделан не случайно.

C – это очень старый язык программирования, он появился в 1972 г., ему 54 года. На момент своего дебюта это был весьма прогрессивный язык, вследствие чего на нем написаны все самые популярные настольные ОС – код на C является основой Windows, macOS и даже ядра Linux.

Rust появился в 2006 г., 20 лет назад, и его очень часто позиционируют как полную противоположность всех языков семейства C (С, С++, C#) за его умение безопасно работать с памятью. К примеру, одним из фундаментальных недостатков C является ручное управление памятью – если вручную не выделять и не очищать ее при помощи функций malloc и free, то это приведет к утечке, что делает C очень небезопасным языком.

Два противоборствующих лагеря

Самые серьезные споры о том, какой язык все же лучше, C или Rust, разгорелись в стане разработчиков Linux. Адепты C стоят за него горой и отказываются переходить на Rust. Создатель Linux Линус Торвальдс (Linus Torvalds) годами был на их стороне и открыто оскорблял пишущих на Rust участников сообщества, но не так давно переметнулся и теперь очень тепло отзывается как о самом Rust, так и о тех, кто предпочитает его другим языкам. А в конце 2025 г. поддержка Rust вошла в перечень основных возможностей ядра Linux, хотя до этого на протяжении многих лет она считалась всего лишь экспериментом.

Apple пока не заявляла о переводе своих ОС на код Rust, а вот в Microsoft движение в этом направлении уже идет. Например, в начале 2024 г. софтверный гигант решил переписать на Rust ключевой серверный компонент, обеспечивающий работу набора облачных сервисов Microsoft 365 (ранее именовался Office 365). Под эту задачу он начал формировать отдельную команду разработчиков.

В декабре 2025 г. разработчик Microsoft Гален Хант (Galen Hunt) со стажем работы в этой корпорации почти 30 лет поставил перед собой цель к 2030 г. заменить каждую строку кода на C++ и C в программах Microsoft комбинацией вручную написанного кода на языке Rust и вайб-кодинга,

Нейросети в помощь

Транслятор, финансируемый Canonical, по праву можно будет считать гибридным. Разработчики намерены внедрить в него как классические методы анализа, проверки и верификации кода, так и алгоритмы машинного обучения.

Обзор смартфона VERTU METAVERTU 2: первый тест в России

Чтобы повысить эффективность работы ИИ-алгоритмов, авторы проекта собираются обучить их на примере уже существующих репозиториев, переведенных с C на Rust классическими методами.

Новый транслятор будет разделять код на фрагменты, которые будут переводиться с C на Rust по отдельности. Разработчики обещают сохранить общий контекст кода и не поломать учет типов и зависимостей.

В дополнение к транслятору разработчики выпустят инструмент проверки результирующего кода. Он будет использовать fuzzing?тестирование наряду с элементамив формальной верификации.