Решаем головоломки и настраиваем среды Kubernetes: подборка новых языков программирования

В блоге beeline cloud мы уже делились дайджестом свежих DIY-материалов о контейнерах, DevOps и архитектуре. Сегодня расскажем, кто и зачем разрабатывает новые языки программирования — выбрали те, что появились на свет за последние три года. Некоторые из них написаны энтузиастами для решения головоломок на конкурсах, а другие — разработчиками крупных организаций для боевых задач.

Изображение — Temple Cerulean — Unsplash.com

Изображение — Temple Cerulean — Unsplash.com

Noulith

Язык представил Брайан Чен из Anthropic, который также работал инженером в Zoom. На этот шаг его подтолкнуло увлечение головоломками puzzlehunt — обычно ответом на них является слово или фраза, которое нужно составить из определенных букв текста самой загадки. Условия для поиска решения могут быть специфичные, например, найти все слова из десяти букв, где А, B, C встречаются лишь один раз, а девятой по счету стоит К. Первое время для решения таких задач разработчик применял Python. Он даже собрал целую папку компактных скриптов, к которым обращался от случая к случаю. Однако Брайан хотел найти для себя более элегантное и удобное решение. В итоге он пустился во все тяжкие и написал собственный язык программирования. И он так увлекся этим проектом, что стал использовать Noulith на других соревнованиях вроде Advent of Code или Cryptopals.

Язык основан на Rust и похож на Python и С, например, в строке можно использовать одинарные и двойные кавычки, двоичные литералы. В то же время в языке нет методов, а вместо множеств есть словари с нулевым значением, например, {a} == {a: null}. В целом резиденты Hacker News оценили, как реализован приоритет операций — его можно настроить под себя. Есть мнение, что Noulith может стать хорошей альтернативой другим языкам для «грубых» вычислений. Однако некоторые считают, что он представляет собой не что иное, как продукт «диванной философии» — то есть не привносит ничего нового в мир программирования. Возможно так и есть, но стоит учитывать, что автор писал проект для души и не скрывает этого.

Если вы хотите познакомиться с Noulith, попробуйте начать с README в репозитории на GitHub. Там разработчик собрал описание операторов, типов и функций.

Winglang

Язык представила команда Wing Cloud — стартап из Израиля, который занимается продуктами для облачной разработки — в январе этого года. Цель Winglang — оптимизировать проектирование других приложений в экосистеме Wing. Язык упрощает процесс, где приходится иметь дело с целым стеком инструментов. Он выводит его на более высокий уровень абстракции и смещает фокус с реализации на бизнес-логику.

Главная особенность языка — два этапа работы с кодом, которые разработчики назвали preflight и inflight. На первом происходит конфигурирование инфраструктуры для распределенного приложения, а на втором — компиляция кода и его непосредственное исполнение. Такой подход позволяет разделить и унифицировать логику построения среды и приложения. Еще Winglang автоматически генерирует политики доступа и дает возможность писать переносимые сервисы для облачных сред, в нем предусмотрена совместимость с JavaScript, плагины для кастомизации.

Что касается синтаксиса, это — язык с сильной типизацией. Winglang поддерживает базовые логические операторы и операторы сравнения, но не работает с тернарными и унарными (за некоторыми исключениями). На форумах указывают, что для удобства облачной разработки было бы достаточно подключить подходящую библиотеку, а не строить новый язык с нуля. Другим интересно, как в дальнейшем будет развиваться синтаксис в контексте подхода cloud native. Плюс — Winglang упрощает тестирование благодаря локальному симулятору, чего не хватало некоторым специалистам.

Разработчики написали подробную документацию, которая поможет познакомиться с языком. В ней описаны не только базовые элементы, но и процесс настройки совместимости с JavaScript. В отдельном разделе есть руководство по подключению Wing. Спецификация, пакеты и локальный симулятор выпущены под лицензией MIT.

Crumb

Этот язык разработал студент из канадского Университета Британской Колумбии в сентябре этого года. Ему нужно было подготовиться к курсу по программированию. Он решил, что разработка собственного ЯП поможет глубже погрузиться в тему и станет неплохой практикой одновременно. Студент также предоставил несколько сценариев использования Crumb, например, для разработки простой игры.

Изображение — Kevin Ku — Unsplash.com

Изображение — Kevin Ku — Unsplash.com

Crumb — язык общего назначения с динамической типизацией и сборщиком мусора. Он исключает побочные эффекты, когда операция, функция или выражение вносит изменения в среду выполнения. В Crumb также нет ключевых слов — все элементы являются функциями, которые вызываются с помощью S-выражений.

Язык написан на С и включает в себя стандартную библиотеку. Он лаконичен — можно описать в шести строках по системе определения синтаксиса EBNF (расширенная форма Бэкуса — Наура). На форумах разработчики отметили, что функции можно прописывать в виде блоков — и это хорошо. Некоторых участников сообщества беспокоит, что такой подход все же может приводить к побочным эффектам. Сам автор языка предупреждает, что только недавно изучил С и ему еще предстоит доработать Crumb — сейчас его вряд ли можно использовать в реальных проектах.

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

Onyx

Автор языка — Брендан Хансен, магистр компьютерных наук из Государственного университета Дакоты. Работа над Onyx началась в 2020 году, и сейчас обновления выходят примерно раз в месяц, например, в ноябре добавили поддержку MacOS. Этот язык подходит для разных задач: разработки веб-серверов, игр и приложений. Например, с помощью Onyx можно написать простую игровую механику в несколько этапов. Разработчик отмечает его удобство в системном программировании, для которого обычно используют С++ или Rust, а Onyx — что-то среднее.

Это — императивный язык с усовершенствованным синтаксисом C. Код компилируется в бинарный формат WebAssembly, который обеспечивает кроссплатформенность и хорошую производительность, так как преобразует код с языка высокого уровня в машинный код. Сама компиляция проходит быстро, например, для веб-сервера лендинга Onyx потребовалось 47 миллисекунд. Язык поддерживает С-библиотеки: Raylib, OpenGL, PostgresQL, OpenSS.

На форумах отмечают, что пока у языка недостаточно подробная документация, из-за чего возникает много вопросов и сложно принять решение об использовании Onyx. Также есть мнение, что синтаксис подойдет скорее опытным разработчикам, которые разделяют с автором стиль программирования. Опробовать ЯП на практике можно в специальном веб-редакторе. Гайд по установке пакетов есть на сайте Onyx, как и материалы по настройке среды или развертыванию HTTP-сервера.

KCL

Этот язык разработали в Ant Group. Он нужен, чтобы упростить настройку конфигураций для облачных сред. По сути, KCL представляет собой альтернативу YAML, HCL и CUE. Одно из преимуществ, которое дает язык — стабильность благодаря статической типизации и неизменяемости объектов. Также он расширяет возможности масштабирования с помощью механизма автоматического слияния изолированных конфигурационных блоков. KCL поддерживает OpenAPI, Kubernetes CRD, Kubernetes Resource Model (KRM) и интеграцию с инструментами для cloud native разработки — Helm, Argo CD и Terraform. Кроме самой Ant Group, язык используют в Huawei и разработчик платформы для аналитики бизнес-метрик Kyligence. В сентябре этого года CNCF (Cloud Native Computing Foundation) включил KCL в число своих проектов — это должно поспособствовать его развитию и привлечь больше разработчиков и пользователей.

В сообществе отмечают, что ЯП пригодится DevOps-инженерам, но некоторые ставят под сомнение его возможность к упрощению настройки инфраструктуры. Как пример, конфигурационный демофайл в KCL состоит из 18 строк, а обычный YAML-файл — из 21, и эта разница кажется незначительной. Синтаксис языка можно оценить в «песочнице», а на сайте разработчиков есть документация. В нее также входит информация о том, как использовать KCL в связке с другими инструментами, например, Terraform или KubeVella.

Нам в beeline cloud интересна тема разработки безопасных сервисов и удобных UI. Мы пишем об этом еще и в своем медиа. Например, здесь можно почитать о фреймворке Jmix, а вот тут — о том, как построить разработку, чтобы повысить качество ИТ-продуктов для банков, страховых компаний, ритейла и не только.

© Habrahabr.ru