В блоге T1 Cloud мы говорили о языке программирования Hare и суждено ли ему заменить Си в долгосрочной перспективе. Сегодня поговорим о другом нишевом ЯП — Ballerina. Он заточен под работу в облаке и разработку сетевых сервисов. Однако мнения об этом проекте довольно полярные — инженеры отмечают как удачные решения, так и серьёзные недостатки.

/ Unsplash.com / Nihal Demirci Erenay
/ Unsplash.com / Nihal Demirci Erenay

Что это за язык

Этот язык программирования заточен под облачную разработку. За его развитие отвечает команда интегратора open source технологий — WSO2, а текущая реализация работает поверх JVM.

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

Что касается синтаксиса, то это статически типизированный язык. Среди основных типов данных — привычные int, float, boolean и string. Так, если нужно определить условную строку, достаточно написать:

string grin = "T1";

Но вместо значения null, язык использует nil, обозначенный пустыми скобками — ().

Ниже представлен базовый код для печати ‘Hello World’. Здесь функция main является точкой начала выполнения программы.

import ballerina/io;
public function main() {
    io:println("Hello, World!");
} 

В формате простого HTTP-сервиса это выглядит следующим образом:

import ballerina/http;
service / on new http:Listener(9090) {
    resource function get greeting() returns string {
        return "Hello, World!";
    }
}

Что важно, Ballerina представляет собой не только ЯП, но и платформу для интеграции разрозненных веб-сервисов. Она предлагает встроенные библиотеки для чтения, пересылки и преобразования сообщений между протоколами. Есть поддержка HTTP, WebSockets, TCP, UDP и многих других.

Что говорит сообщество

Не так давно язык привлек внимание резидентов Hacker News, и на площадке разгорелось обсуждение. Один из участников отметил, что у языка есть шансы стать стандартом в сфере облачной разработки и создания веб-сервисов. В основном благодаря возможности из коробки определять сервисы как HTTP-эндпоинты, контейнеры Docker и ресурсы Kubernetes.

Помимо прочего, среди ключевых преимуществ участники дискуссии выделили встроенные инструменты визуализации. Да, на GitHub можно найти аналогичные утилиты для кода на Python, Java и других языках, но нативная поддержка такой функциональности серьёзно упрощает жизнь разработчикам. Они сразу видят диаграмму для кусочка программы, над которой работают. Посмотреть, как это выглядит, можно на сайте проекта.

/ Unsplash.com / Gez Xavier Mansfield
/ Unsplash.com / Gez Xavier Mansfield

Однако есть у этого ЯП и свои недостатки. Один пользователь рассказал, что первое время язык ему очень нравился. В основном из-за сетевых вызовов с бесшовной настройкой таймаутов, возможности работать с circuit breaker’ами и настраивать конечные точки на уровне исходного кода. Однако у подобной гибкости есть своя цена и приходится мириться с неудачным синтаксисом. Это — большое количество точек с запятой, которые мешают воспринимать код, а также чересчур длинными описаниями типов функций. Пожалуй, кто работал со старыми стеками Apache, Java и Axis столкнутся со знакомым количеством классов и сторонних зависимостей.

В мире, где существуют легкие и функциональные облачные библиотеки и фреймворки на базе Rust и Go, новому языку может быть сложно найти аудиторию. Проект довольно перспективный, но рискует остаться нишевым.

Если хотите протестировать самостоятельно

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

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


В блоге T1 Cloud мы пишем об облачной разработке, полезных инструментах для системных администраторов и DevOps-инженеров, а также обсуждаем технологические тренды в России и мире. Подписывайтесь на наш блог, чтобы не пропустить свежие материалы:

Комментарии (0)