Новые языки для облачных вычислений — от управления конфигурациями до диалекта 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 без затрат на старте.


ссылка на оригинал статьи https://habr.com/ru/articles/847734/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *