Новые языки для облачных вычислений — от управления конфигурациями до диалекта Python
Языки программирования растут как грибы после дождя — чем больше задач у программиста, тем выше потребность в новых инструментах. Авторы этих языков стремятся переосмыслить статус-кво или создать специализированные ЯП, предназначенные для решения конкретных задач. Сегодня мы подготовили компактную подборку перспективных инструментов, ориентированных на работу с облачными технологиями.
Облачные языки позволяют эффективно управлять распределёнными ресурсами, учитывая необходимость обработки больших объёмов данных и обеспечения масштабируемости без потери производительности.
Clio
Clio — функциональный, параллельный и распределённый язык программирования, который компилируется в JavaScript. Он по умолчанию делит задачи между несколькими ядрами процессора и умеет работать с сетевыми ресурсами, поэтому код легко запускать на кластерах и в облаке.
Если говорить о возможностях Clio, то он поддерживает ленивые или отложенные вычисления, а также чистые функции. При этом язык в несколько раз быстрее JavaScript. Так, производительность Clio при поиске простых чисел методом перебора делителей составляет 139 операций в секунду, в то время как для JS этот параметр равен 41 операции в секунду. При этом на задаче по вычислению тысячного числа Фибоначчи скорость Clio сопоставима с языком C.
В Clio реализована система последовательной типизации, когда одни переменные обладают строгими типами, а другие — остаются нетипизированными, а ошибки отлавливаются во время выполнения. Проверка происходит с помощью декоратора @check. Декораторы в Clio также могут быть полезны для документирования функций в стиле JSDoc.
В целом можно отметить минималистичный и красивый синтаксис языка, например, интуитивное применение символа → для описания вложенности функций. Так, конструкцию h (g (f (a))) в контексте Clio можно записать как a → f → g → h. Для примера, параллельное вычисление ряда Фибоначчи можно оформить следующим образом:
fn fib n:
if n < 2: n
else: (fib n - 1)
+ (fib n - 2)
export fn main argv:
[39 40 41 42]
-> * [await] |fib|
-> * (console.log @item)
В то же время некоторые разработчики назвали недостатком компиляцию в JS. По их мнению, компиляция в двоичный формат расширила бы сферу применения языка, особенно в контексте высокопроизводительных приложений.
Ecstasy
Язык программирования для облачных вычислений, одним из авторов которого является бывший вице-президент Oracle. Проект распространяется под лицензией Apache 2.0, а его последняя версия на момент написания статьи (v. 0.4) вышла в 2022 году.
Ecstasy относится к семейству языков C и будет понятен разработчикам, пишущим код на Java или C#. Тем, кто работает с Kotlin, Erlang, Elixir или Ruby, также не составит труда в нём разобраться. Например, классический Hello, World на Ecstasy выглядит следующим образом:
module HelloWorld
{
void run()
{
@Inject Console console;
console.println("Hello, World!");
}
}
Как видно, Ecstasy не обрабатывает операции ввода-вывода напрямую. Вместо этого он полагается на сторонние зависимости, такие как интерфейс Console. Строка @Inject Console console обеспечивает доступ к консоли, позволяя коду console.println («Hello, World!») вывести текст на экран.
Разработчики проекта сделали упор на безопасность, масштабируемость и переносимость кода. Ecstasy использует типобезопасную модульную систему, минимизирующую количество инцидентов из-за изменений в программе. Также в проекте реализована контейнерная модель, которая защищает среду от выполняемого в ней кода.
Среди плюсов пользователи отмечают такие функции, как каррирование и автоматическое сужение типов.
Wing
Облачно-ориентированный язык программирования, который начинался как форк проекта AWS Cloud Development Kit (CDK). Распространяется под лицензией MIT. По словам авторов, Wing позволяет разработчикам сфокусироваться на написании кода, а не на настройке облачной инфраструктуры. После компиляции Wing генерирует пакет артефактов, готовых к развертыванию у облачного провайдера.
Основу проекта составляют сразу несколько продуктов. Wing Console — редактор для написания кода, отладки и тестирования, Wing SDK — набор инструментов для облачной и локальной разработки, и Wing Cloud Library — библиотека, позволяющая писать переносимый в облако код.
Код на Wing совместим с различными платформами благодаря использованию библиотеки CDKTF, которая позволяет описывать инфраструктуру с помощью языков программирования высокого уровня, а затем преобразовывать этот код в конфигурации Terraform. В целом для этих же целей можно применять фреймворки на JavaScript или Python — Pulumi и Shuttle.
К плюсам ЯП стоит отнести понятную документацию, которую можно найти в репозитории.
KCL
KCL — функциональный язык, представленный Cloud Native Computing Foundation (CNCF). Разработан для управления конфигурациями в облачных и масштабируемых средах. Распространяется под лицензией Apache 2.0. Последняя версия — v. 0.9, вышедшая в 2022 году.
Язык предлагает множество инструментов для форматирования, тестирования, документирования и управления пакетами — расширения IDE, мультиязычные SDK для Rust, Go, Python, Java и Node.js. KCL легко интегрируется с различными языками, форматами и облачными инструментами.
Например, инструмент kcl vet валидирует файлы планов Terraform, а import генерирует схемы KCL из различных источников.
Вот так может выглядеть генерация манифеста Kubernetes:
apiVersion = "apps/v1"
kind = "Deployment"
metadata = {
name = "nginx"
labels.app = name
}
spec = {
replicas = 3
selector.matchLabels = metadata.labels
template.metadata.labels = metadata.labels
template.spec.containers = [
{
name = metadata.name
image = "${metadata.name}:1.14.2"
ports = [{ containerPort = 80 }]
}
]
}
Для тех, кто желает поближе познакомиться с синтаксисом, разработчики подготовили песочницу, в которой можно запустить свою программу на KCL. А в репозитории есть несколько примеров кода для настройки облачных конфигураций.
Pycopy
Pycopy — легковесная альтернатива CPython, предназначенная для работы в микроконтроллерах и встраиваемых системах, но может использоваться и для работы в облаке.
Принципы языка — простота, минимализм и легкость. Проект распространяется под лицензией MIT.
Pycopy реализует весь синтаксис Python 3.4 и async/await из Python 3.5, а также предоставляет основные типы данных (например, bytes, tuple, list, dict). Он может выполнять скрипты как в виде текстового исходного кода, так и из предварительно скомпилированного байт-кода.
Ядро Pycopy, построенное на языке C, предоставляет набор встроенных модулей. Дальнейшее расширение экосистемы Pycopy обеспечивается библиотекой pycopy-lib, адаптируемой для различных платформ. Она поддерживает отдельные модули, которые можно использовать независимо. Многие библиотеки в Pycopy имеют префикс u (для micro), указывая на то, что они являются упрощенными версиями своих аналогов из CPython и подходят для сред с ограниченными ресурсами.
Chapel
Chapel — язык программирования, призванный упростить параллельные вычисления. Подходят для запуска программ как на ПК, так и на кластерах в облаке и суперкомпьютерах. Был разработан Hewlett Packard Enterprise и распространяется под лицензией Apache 2.0.
Chapel построен на основе философии мультипрограммирования (multi-resolution). Она позволяет писать код с высокоуровневых абстракций и по мере необходимости добавлять детализацию. Такой подход ускоряет прототипирование и упрощает переиспользование кода, подобно Python или MATLAB, при этом достигая производительности ЯП более низкого уровня (таких как C или Fortran).
Простая программа Hello, World на языке Chapel выглядит следующим образом:
chapel
writeln(«hello, world»);
Также Hello, World можно написать в более структурированном стиле, явно определив модуль, константу конфигурации и процедуру main ().
module Hello {
config const message = "Hello, world!";
proc main() {
writeln(message);
}
}
Один из проектов, написанный на Chapel — поисковик Chearch. Он предназначен для полнотекстового поиска по файлам и поддерживает расширенные функции поиска, такие как нечеткое сопоставление, регулярные выражения. Chearch оптимизирован для работы с большими кодовыми базами или текстовыми массивами данных.
Chapel достаточно мощный и может поменять представление о параллельных вычислениях.
Облачные сервисы бесплатно на 2 месяца — получите доступ к надёжной виртуальной инфраструктуре и запустите сервисы в облаке MWS без затрат на старте.