Как стать автором
Поиск
Написать публикацию
Обновить

Состоялся первый версионный релиз языка программирования Hare (0.24.0) и представлена новая политика выпуска версий

Время на прочтение2 мин
Количество просмотров7.4K
Всего голосов 16: ↑14 и ↓2+20
Комментарии15

Комментарии 15

Выглядит любопытной альтернативой C. Я для себя ещё zig рассматриваю, его разработка пораньше началась, выглядит постабильнее. Почему не взять оригинальный C и не выюживаться? :) Видимо избалованным современными тулчейнами разработчикам, как я, хочется больше комфорта в коде :) После ухода на Go перестал пользоваться C практически, но порой его легковесности не достаёт, не всегда требуется гошный рантайм с его горутинами и прочими изысками.

Можно взять Rust и много пользоваться unsafe указателями. Получится тот же С.

Именно что в расте это потребует много пользоваться ансейф и указателями. И он будет мешать как только может

По-моему Rust хорош именно без unsafe, но я бы не пытался им заменять C. А на замену C нужен такой же простой язык, как сам C, но с устранением накопившихся за десятилетия претензий по разным корявостям синтаксиса. Hare тут выглядит неплохой попыткой, по сути в нем обработку ошибок осовременили и сделали более безопасной работу с указателями, да и всё пожалуй, из того что сразу бросается в глаза, в остальном тот же С по виду. Но может больше ничего и не нужно? )

Оказуалили C! А так да, прикольная альтернатива получается

Да Харэ уже!

Понаделают 100500 языков, потом через 3 года на все забьют, а я потом опять наткнусь, что библиотека, которую я очень хотел интегрировать к себе, написана на какой-то всеми забытой экзотике.

Новые языки это всегда интересно (во всяком случае мне). Новые интересные концепции, языковые конструкции, приемы, устранение недостатков старых языков... Да и невозможно все библиотеки вечно писать на Си.

Новые интересные концепции, языковые конструкции, приемы, устранение недостатков старых языков...

Вот только ничего из этого в Hare нет.

Мегафича, конечно: язык влезает на дискету!

Кому нужна всякая скукота: стандартная библиотека уровня .Net, макросы вместо дефайнов и шаблонов, неупоротый синтаксис…

Нейминг std надо срочно править. Там кучу вещей то через подчеркивание то без него называется.

Местами вообще логики мало. То что в io ожидаешь увидеть в os лежит.

А куда я щас вставлю трёхдюймовую дискету-то? :-0 В неё щас разве что на солнечное затмение смотреть.

Для меня, по синтаксису больше на микс из С++ c Go похоже. Зачем fn вместо func заменили непонятно, другие токены всеравно длиннее, а так смысла больше будет.
В каждой стройке тип const это перебор имхо сделайто тогда по дефолту const зачем страдать :)

Из https://git.sr.ht/~sircmpwn/btqd/tree/master/item/bencode/reader.ha

Пример
@test fn dict() void = { const input = "d3:cow3:moo4:spam4:eggse"; const input = bufio::fixed(strings::toutf8(input), io::mode::READ); const read = newreader(&input); defer reader_free(read); const dict = next(read) as dict_reader; const item = dict_next(read) as (str, record); assert(item.0 == "cow" && strings::fromutf8(item.1 as []u8) == "moo"); const item = dict_next(read) as (str, record); assert(item.0 == "spam" && strings::fromutf8(item.1 as []u8) == "eggs"); assert(dict_next(read) is io::EOF); assert(next(read) is io::EOF); const input = "d4:spaml1:a1:bee"; const input = bufio::fixed(strings::toutf8(input), io::mode::READ); const read = newreader(&input); defer reader_free(read); const dict = next(read) as dict_reader; const item = dict_next(read) as (str, record); assert(item.0 == "spam"); const list = item.1 as list_reader; assert(strings::fromutf8(list_next(list) as []u8) == "a"); assert(strings::fromutf8(list_next(list) as []u8) == "b"); assert(list_next(list) is io::EOF); assert(dict_next(read) is io::EOF); assert(next(read) is io::EOF); };

В расте так и сделано, переменные по умолчанию не мутабельные, хочешь изменить переменную - укажи модификатор mut.

А на 5.25 дискету записать слабо? )

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости