18.06.2024 | Virgil против Rust: сможет ли новичок свергнуть звезду с пьедестала? |
Разработчики представили Virgil — новый системный язык программирования, нацеленный на создание компактных и производительных приложений. Для работы с ним потребуется:
По словам одного из создателей языка, Бена Тицера , который также принимал участие в разработке WebAssembly, Virgil не ставит своей целью конкурировать с другим молодым языком Zig, предназначенным для подобных задач. Virgil лишен устаревших недостатков и обладает мощными возможностями для написания надежного системного кода. Среди потенциальных областей применения — виртуальные машины, компиляторы, ядра операционных систем, сетевые стеки и другие низкоуровневые компоненты. Сейчас, наряду с Rust , появляется много новых языков, ориентированных на создание легковесных высокопроизводительных систем с кроссплатформенными компиляторами. При этом, по утверждению Тицера, Rust не может выполнять некоторые задачи, которые под силу Virgil. Запустив Warp — терминал на базе Rust, пользователю нужно клонировать репозиторий. Если вы давно не использовали GitHub, команду для клонирования можно найти на главной странице репозитория под вкладкой код:
Теперь мы просто клонируем репозиторий в командной оболочке:
За основу взята идея исключения устаревших элементов при проектировании высокопроизводительных систем. Вместо этого учитываются современные требования к оптимизации компиляторов, структурам кода, обработке ошибок, безопасности и другие факторы, важность которых менялась с течением времени. Например, сегодня память – довольно дешевый ресурс, но безопасность имеет первостепенное значение, в то время как 30 лет назад ситуация была обратной. После установки Virgil можно сразу же приступать к написанию и запуску кода. Вот так будет выглядеть программа «Hello World»:
Данный код можно запустить со встроенным интерпретатором Virgil:
Однако для компиляции программы требуется указать целевую аппаратную архитектуру. К счастью, при запуске на локальной машине Virgil способен автоматически определить ее:
После компиляции в текущем каталоге появляется исполняемый файл. (Следует учесть, что показанное в Warp время выполнения может не отражать реальную производительность). Запуск скомпилированного кода выводит приветствие:
Таким образом, Virgil позволяет как интерпретировать, так и компилировать написанный код, адаптируясь к аппаратной платформе. В языке также используется концепция изменяемых и неизменяемых переменных. Изменяемые переменные вводятся ключевым словом var, а неизменяемые — def:
Функции объявляются с указанием типов параметров и возвращаемого значения, например:
Классы в Virgil имеют схожий с другими ЯП синтаксис:
Уникальной особенностью являются алгебраические типы данных — комбинация полиморфизма, конструкторов и сопоставления с образцом:
В Virgil есть поддержка многопоточности и асинхронного программирования с использованием ключевого слова async:
Язык позволяет напрямую работать с низкоуровневой памятью через опасные необработанные указатели:
Таким образом, Virgil предоставляет возможность эффективной кросс-компиляции, генерируя машинный код или байт-код в зависимости от целевой платформы. Сам язык использует подобный кросс-компилятор, так что весь тулчейн написан на нем же. Это лишь вводное описание, и многие возможности языка остались за кадром. Очевидно, что проект активно развивается. Программировать можно как в объектно-ориентированном стиле, так и в функциональном, что иногда называют мультипарадигмальным подходом. |
Проверить безопасность сайта