• XSS.stack #1 – первый литературный журнал от юзеров форума

Virgil против Rust

Rehub

LARVA-466
Забанен
Регистрация
01.11.2020
Сообщения
3 957
Решения
1
Реакции
3 544
Пожалуйста, обратите внимание, что пользователь заблокирован
Разработчики представили Virgil — новый системный язык программирования, нацеленный на создание компактных и производительных приложений. Для работы с ним потребуется:
  • Виртуальная машина Java 1.3 или более поздней версии
  • Компьютер под управлением Linux x86
  • Компьютер под управлением MacOS X x86
По словам одного из создателей языка, Бена Тицера , который также принимал участие в разработке WebAssembly, Virgil не ставит своей целью конкурировать с другим молодым языком Zig, предназначенным для подобных задач.

Virgil лишен устаревших недостатков и обладает мощными возможностями для написания надежного системного кода. Среди потенциальных областей применения — виртуальные машины, компиляторы, ядра операционных систем, сетевые стеки и другие низкоуровневые компоненты.

Сейчас, наряду с Rust появляется много новых языков, ориентированных на создание легковесных высокопроизводительных систем с кроссплатформенными компиляторами. При этом, по утверждению Тицера, Rust не может выполнять некоторые задачи, которые под силу Virgil.

Запустив Warp — терминал на базе Rust, пользователю нужно клонировать репозиторий. Если вы давно не использовали GitHub, команду для клонирования можно найти на главной странице репозитория под вкладкой код:

l3yefnek2smukrt23530im3luqlci70y.png

Теперь мы просто клонируем репозиторий в командной оболочке:

xh2c2hhhfynf0pqxh7p4n5fa66g8v65t.png

За основу взята идея исключения устаревших элементов при проектировании высокопроизводительных систем. Вместо этого учитываются современные требования к оптимизации компиляторов, структурам кода, обработке ошибок, безопасности и другие факторы, важность которых менялась с течением времени. Например, сегодня память – довольно дешевый ресурс, но безопасность имеет первостепенное значение, в то время как 30 лет назад ситуация была обратной.

После установки Virgil можно сразу же приступать к написанию и запуску кода. Вот так будет выглядеть программа «Hello World»:

iyhcnmoewty4y18ubnoo3p5us6gkmqjr.png

Данный код можно запустить со встроенным интерпретатором Virgil:

owxs0ibaik82b0wdprshj38clfvnw84r.png

Однако для компиляции программы требуется указать целевую аппаратную архитектуру. К счастью, при запуске на локальной машине Virgil способен автоматически определить ее:

zcchkvf0bmpm7fhg5gw516jzs0f0eokc.png

После компиляции в текущем каталоге появляется исполняемый файл. (Следует учесть, что показанное в Warp время выполнения может не отражать реальную производительность).

Запуск скомпилированного кода выводит приветствие:

ykzl4c1sxr48zdpvtv6tag176ysu8nru.png

Таким образом, Virgil позволяет как интерпретировать, так и компилировать написанный код, адаптируясь к аппаратной платформе.

В языке также используется концепция изменяемых и неизменяемых переменных. Изменяемые переменные вводятся ключевым словом var, а неизменяемые — def:

h2vlkgtv24effs9lb4dkh36rdytdes8t.png

Функции объявляются с указанием типов параметров и возвращаемого значения, например:

w0znmlo2ovsf6g45k55vdc9xuwhot8dx.png

Классы в Virgil имеют схожий с другими ЯП синтаксис:

au1hkwpup9hgfse8qzy6riuwkl6u3eyx.png

Уникальной особенностью являются алгебраические типы данных — комбинация полиморфизма, конструкторов и сопоставления с образцом:

oedo6mebpuy5s5qlcjsqsoq3z16ftx0d.png

В Virgil есть поддержка многопоточности и асинхронного программирования с использованием ключевого слова async:

x18vht1jgulzv3oahr1v2h5yo1hx84nr.png

Язык позволяет напрямую работать с низкоуровневой памятью через опасные необработанные указатели:

c4wx85vjcynsp1myort8zjj209yfgavs.png

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

Это лишь вводное описание, и многие возможности языка остались за кадром. Очевидно, что проект активно развивается. Программировать можно как в объектно-ориентированном стиле, так и в функциональном, что иногда называют мультипарадигмальным подходом.


github.com/titzer/virgil?utm_source=the+new+stack&utm_medium=referral&utm_content=inline-mention&utm_campaign=tns+platform
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх