Как стать автором
Обновить

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

Очень классный проект. Особенно радует то, что он не опирается на монстров, вроде gcc и llvm, и его можно полностью охватить одним человеческим мозгом )

Отмечается, что Hare очень сильно похож на C, и почти все программы на C могут быть переписаны на Hare.

Кроме синтаксиса - на С особо не похоже (мне построение кода Паскаль\Оберон напоминает). И переделывать большинство С программ под модули - это почти писать их заново.

Звучит вкусно и интересно. В мире вообще не так много статически типизированных языков, а целенаправленного под написание осей давно не хватало

Разработчики отмечают, что Hare доверяет программисту и явно выполняет написанный код без скрытых манипуляций.

Означает ли это, что на уровне компилятора нет никаких оптимизаций? А если они есть, то что означает это "без скрытых манипуляций"?

fn example(x: int, y: int = 34) void = { // ... };

example(12); // Equivalent to example(12, 34);

Встроенные грабли, когда без чтения текста функции не разобраться. В Perl есть вызов функции с переменным количеством параметров, но такое не видел.

дэфолтные значения параметров/аргументов функций много где реализованы: в C++, JavaScript, Python

Классов не вижу. Это by design?

Ну написано - си. Очевидно что там нет классов. Но наверно Вы хотели спросить - зачем?

Написано не так.

Отмечается, что Hare очень сильно похож на C

Ранний C++ тоже был похож на Си, что не мешало ему иметь классы. Его так и называли: «Си с классами».

Да, всё верно, C++ имеет классы, С не имеет, поэтому Hare похож на С, а не С++, не?

То есть, я их не просмотрел, их в самом деле нет? (Про «похож, не похож» пусть будет, как скажете).

Да, в Hare нет классов как и в С о чем разрабы даже недвусмысленно намекают заявляя что он похож на С, а это значит во всем включая и отсутствие классов, ибо если бы классы в нем были бы - он был бы похож на С++, очевидно как по мне...

А какие в нем интересные языковые фичи?

use crypto::sha256;

use encoding::hex;

use fmt;

use hash;

use io;

use os;

export fn main() void = {

const hash = sha256::sha256();

const file = os::open("main.ha")!;

defer io::close(file);

io::copy(&hash, file)!;

let sum: [sha256::SIZE]u8 = [0...];

hash::sum(&hash, sum);

hex::encode(os::stdout, sum)!;

fmt::println()!;

};

(© Пример с https://www.linux.org.ru/news/development/16854262)

Вот это похоже на C? 🤔

defer io::close(file);

О, суррогат деструктора.
Автоматизм, между прочим.

Вот это похоже на C?

В C нет автоматизмов, что — наиболее существенно.
Также там нет namespace'ов.

Этим Hare напоминает C++.
А декларации напоминают Pascal/Golang.

Что интересно сейчас все современные языки используют такие декларации (начинающиеся с имени а не с типа). Go, Rust, Swift, Scala, Kotlin, Zig, Carbon... Может оно действительно чем-то лучше и удобнее чем стиль C/C++/C#/Java?

Грамматика более простая и строгая, легче парсить и анализировать.

Может оно действительно чем-то лучше и удобнее чем стиль C/C++/C#/Java?

Очевидно, что так легче читать и писать декларации/определения любой сложности.

У меня первая мысль была что этот язык похож на Rust

Да харэ уже новые языки придумывать, старые починити!

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

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

Истории