LINUX.ORG.RU

История изменений

Исправление wandrien, (текущая версия) :

Чем больше курю документацию на Zig, тем больше он мне нравится.

В целом это ровно то, как я себе представлял идеальный ЯП для ниши системного ЯП.

Разница только в том, что я бы делал язык в Ada-подобном синтаксисе, а здесь сделали в Си-подобном.

Похожее впечатление у меня было, когда в нише динамических ЯП я познакомился с Ruby.

Вот в таком выражении:

pub fn main() void {
    print("here is a string: '{s}' here is a number: {}\n", .{ a_string, a_number });
}

Форматирующая строка раскрывается в код с проверками типов во время компиляции, и в рантайме не парсится. Исключительно силой вычислений времени компиляции на самом ЯП, без привлечения макросов и чего-либо еще.

Это очень мощно.

Я в своих черновиках проектировал именно так – код на самом ЯП является кодом, который компилятор способен исполнять при компиляции программы.

Дженерики реализуются аналогично – как функции, возвращающие типы или принимающие типы как аргументы.

Исходная версия wandrien, :

Чем больше курю документацию на Zig, тем больше он мне нравится.

В целом это ровно то, как я себе представлял идеальный ЯП для ниши системного ЯП.

Разница только в том, что я бы делал язык в Ada-подобном синтаксисе, а здесь сделали в Си-подобном.

Похожее впечатление у меня было, когда в нише динамических ЯП я познакомился с Ruby.

Вот в таком выражении:

pub fn main() void {
    print("here is a string: '{s}' here is a number: {}\n", .{ a_string, a_number });
}

Форматирующая строка раскрывается в код с проверками типов во время компиляции, и в рантайме не парсится. Исключительно силой вычислений времени компиляции на самом ЯП, без привлечения макросов и чего-либо еще.

Это очень мощно.

Я в своих черновиках проектировал именно так – код на самом ЯП является кодом, который компилятор способен исполнять при компиляции программы.

Дженерики реализуются аналогично – как функции, возвращающие типы.