В блоге T1 Cloud мы говорили о языке программирования Hare и суждено ли ему заменить Си в долгосрочной перспективе. Сегодня поговорим о другом нишевом ЯП — Ballerina. Он заточен под работу в облаке и разработку сетевых сервисов. Однако мнения об этом проекте довольно полярные — инженеры отмечают как удачные решения, так и серьёзные недостатки.
Что это за язык
Этот язык программирования заточен под облачную разработку. За его развитие отвечает команда интегратора 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 и других языках, но нативная поддержка такой функциональности серьёзно упрощает жизнь разработчикам. Они сразу видят диаграмму для кусочка программы, над которой работают. Посмотреть, как это выглядит, можно на сайте проекта.
Однако есть у этого ЯП и свои недостатки. Один пользователь рассказал, что первое время язык ему очень нравился. В основном из-за сетевых вызовов с бесшовной настройкой таймаутов, возможности работать с circuit breaker’ами и настраивать конечные точки на уровне исходного кода. Однако у подобной гибкости есть своя цена и приходится мириться с неудачным синтаксисом. Это — большое количество точек с запятой, которые мешают воспринимать код, а также чересчур длинными описаниями типов функций. Пожалуй, кто работал со старыми стеками Apache, Java и Axis столкнутся со знакомым количеством классов и сторонних зависимостей.
В мире, где существуют легкие и функциональные облачные библиотеки и фреймворки на базе Rust и Go, новому языку может быть сложно найти аудиторию. Проект довольно перспективный, но рискует остаться нишевым.
Если хотите протестировать самостоятельно
Желающие познакомиться с проектом поближе могут загрузить демо прямо в браузере. Параллельно стоит обратить внимание на документацию и руководства для быстрого старта на сайте проекта. Там же авторы опубликовали множество примеров, демонстрирующих различные возможности языка. И они не ограничены исключительно облаком — один из разработчиков показал, что на этом языке можно писать компоненты ПО для банкоматов.
В то же время все желающие могут принять участие в развитии проекта. Подробные инструкции о том, как это сделать, выложены в репозитории на GitHub.
В блоге T1 Cloud мы пишем об облачной разработке, полезных инструментах для системных администраторов и DevOps-инженеров, а также обсуждаем технологические тренды в России и мире. Подписывайтесь на наш блог, чтобы не пропустить свежие материалы:
Новое испытание для провайдеров — ситуация на облачном рынке
Начать путь в разработке — что почитать «молодому» программисту
Скрытые жемчужины — сетевые протоколы, о которых мало кто слышал