Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Практически сразу после анонса языку стали пророчить светлое будущее в качестве замены не только Си, но и других ЯП. Однако энтузиазм разделили далеко не все участники ИТ-сообщества. В лагере скептиков оказались даже сами разработчики Hare.
Мы в T1 Cloud предлагаем решения для бизнеса и разработки, поэтому решили разобраться в ситуации и обсудить аргументы сторон.
Что еще за Hare
Это — системный язык программирования, заточенный под написание компиляторов и сетевого ПО. Его разработала команда под руководством Дрю Деволта, создателя платформы SourceHut и mail-клиента Aerc. В основу языка положена идея ручного управления памятью и статическая типизация. Исполняемые файлы генерируются на бэкенде компилятора qbe. В стандартную библиотеку Hare входят модули для работы с сетью, криптографические реализации (хотя используемые функции пока не прошли независимый аудит), парсеры и лексические инструменты для POSIX. Есть привязки к OpenGL и SDL2, а также библиотеке libui для построения кроссплатформенных GUI.
Что касается синтаксиса, то вот так может выглядеть программа для вывода Hello World! на нескольких языках:
use fmt;
export fn main() void = {
const greetings = [
"Hello, world!",
"¡Hola Mundo!",
"Γειά σου Κόσμε!",
"Привет, мир!",
"こんにちは世界!",
];
for (let i = 0z; i < len(greetings); i += 1) {
fmt::println(greetings[i])!;
};
};
Для желающих познакомиться с языком поближе разработчики подготовили документацию и руководство. Оно последовательно переходит от разбора базовых параметров к более углубленным вещам — например, срезам (slices), типам, обработке ошибок. Также имеет смысл изучить исходники компилятора и стандартной библиотеки. Авторы передали их в open source под лицензиями GPLv3 и MPL соответственно.
(НЕ) замена другим
Когда авторы анонсировали Hare, то в своем блоге написали, что с функциональной точки зрения язык сильно напоминает Си, но значительно проще. Тогда крупные СМИ и тематические площадки подхватили идею о том, что Hare заменит известный язык общего назначения. На сложившуюся ситуацию даже пришлось отреагировать авторам Hare и внести ясность. По их словам, об отказе от Си речи пока не идет, по крайней мере, в обозримом будущем. Аналогичную мысль разделяют резиденты Hacker News. Один из пользователей площадки заметил, что для конкуренции с устоявшимися языками, Hare стоит обзавестись более богатой библиотекой. В качестве примера он привел Go, который позволяет относительно быстро построить веб-приложение «из коробки».
Помимо вопросов, связанных со стандартизацией, участники ИТ-сообщества отметили и другие «узкие места» нового языка программирования. Так, один из разработчиков NoSQL-решения RavenDB раскритиковал Hare за подход к структурам данных и хеш-картам в частности. По словам инженера, их построение — нетривиальная задача, которую редко можно решить в пару строк кода.
Авторов нового языка программирования также критикуют за позицию по работе с памятью. Hare продвигает концепцию полного доверия к действиям программиста. Но в ИТ-сообществе есть люди, которые убеждены, что разработчикам не стоит управлять памятью вручную — тогда резко возрастает риск ошибок, вызванных человеческим фактором. Работа с памятью — дискуссионный топик, и справедливости ради стоит заметить, что у создателей Hare была причина пойти по этому пути. Многие механизмы memory management отрицательно влияют на производительность кода, что противоречит концепции компактного и быстрого языка. В то же время авторы все же реализовали ряд защитных механизмов. Например, язык заставляет инициализировать все переменные, а в обработке ошибок применяются тип-суммы (tagged unions).
Что с перспективами
Хотя Hare во многом похож на старшего брата, можно ожидать, что ему еще предстоит столкнуться с «детскими болячками». Но разработчики планируют продолжать развитие продукта. В ближайшее время они закончат со спецификацией и будут вносить только обратно совместимые изменения в стандартную библиотеку.
Будут и другие изменения. В настоящий момент Hare поддерживает всего три архитектуры – это x86_64, riscv64 и aarch64, но этот список будет расширен 32-битными архитектурами. Также будут интегрированы функции для работы с TLS 1.2 и 1.3 и новые порты (они дополнят Linux и FreeBSD), но исключительно для свободных платформ. Хотя активные участники сообщества могут выпустить реализации для Windows или macOS.
Разработчики делают упор на формирование сообщества, в котором люди захотят общаться и обмениваться опытом — по их мнению, другим языкам еще предстоит много работы в этом направлении. Проекту Hare удалось вызывать интерес — обсуждению ЯП посвящен не один тред в социальных сетях, а программисты делятся мыслями в личных блогах. На Hare уже написано несколько простых инструментов — среди них, компактный движок для трассировки лучей, торрент-демон btqd и альтернатива cron — scheduled. Также можно выделить менеджер паролей Himitsu и микроядро Helios.
Но получится ли у языка набрать достаточно серьезную пользовательскую базу, станет видно в будущем. Поскольку ЯП ориентирован на разработчиков FOSS, он рискует остаться интересным, но нишевым проектом. Нам интересна дальнейшая судьба Hare, и мы продолжим следить за обстановкой в этой области, а также другими историями из мира open source — подписываетесь на блог T1 Cloud, где мы рассказываем про открытое программное обеспечение (и не только):
Что происходит с лицензиями в open source
Что там с OpenStack — все еще актуален или нет?
Любит или не любит: парное программирование