Язык программирования Zig

Тема в разделе "WASM.LANGS", создана пользователем Rel, 7 фев 2019.

  1. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    случайно наткнулся на очень интересный проект нового языка программирования... думаю, что он окажется интересным адептам сишечки и ассемблера... из интересных фич языка... мануальное управление памятью (и это в эпоху заселья всяческих сборщиков мусора и борроу чекеров)... хороший три шейкер (хелой уорлд под венду собирается в 4кб для x86 и 5кб для x64, могло бы быть еще меньше, но линкер по неведомой причине генерит таблицу экспорта)... кросс компиляция из любой системы в любую (хотя с венды скомпилить под x86 линукс и макос у меня не получилось, судя по всему баг в компиле, но x64 под линукс и макос завелись)... простая обработка ошибок, контролируемая компилятором (без эксепшенов и всякой подобной чуши)... рефлексия и исполнение функций на этапе компиляции... автоматический импорт деклараций из сишных .h файлов (насколько я понимаю, с плюсами этот номер не пройдет, но все же) и в обратную сторону может генерить .h для использования в сишных/плючовых проектов... один существенный минус - проект очень молодой, до версии 1.0 еще долго лопатить...

    сайт языка: https://ziglang.org/
    документация: https://ziglang.org/documentation/master/
    хайлайт синтакса: https://marketplace.visualstudio.com/items?itemName=tiehuis.zig

    теперь запилим хеллоу уордл:
    Код (Text):
    1. const std = @import("std");
    2.  
    3. pub fn main() !void {
    4.     const stdout_file = try std.io.getStdOut();
    5.     try stdout_file.write("Hello World!\n");
    6. }
    и скомпилим его:
    Код (Text):
    1. zig build-exe test.zig --release-small --single-threaded --strip --target-os windows --target-arch i386  --target-environ msvc --output test-win32.exe
    2. zig build-exe test.zig --release-small --single-threaded --strip --target-os windows --target-arch x86_64 --target-environ msvc --output test-win64.exe
    --- Сообщение объединено, 7 фев 2019 ---
    единственная публичная презентация, где автор говорит о философии языка:


    статья и обсуждение на хабре:
    https://habr.com/en/post/435872/
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
  3. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    багрепорты на гитхабе, не? не думал?
     
  4. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Ссылка на гитхаб там глубоко спрятана, а патреном в лицо тычут.
     
  5. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    да, второй пункт в меню - это канеш марианская впадина среди веб страниц...
     
  6. sn0w

    sn0w Active Member

    Публикаций:
    0
    Регистрация:
    27 фев 2010
    Сообщения:
    958
    ничего гениальнее с++ и ооп еще не придумано, да и не будет придумано вообще, хоть там квантовый проц - хоть какой.
     
    Application нравится это.
  7. Aoizora

    Aoizora Active Member

    Публикаций:
    0
    Регистрация:
    29 янв 2017
    Сообщения:
    362
    C++ не для всех задач хорош, ООП само по себе ограничено. В действительно удобных языках есть элементы ФП типа стримов в Java 8, которые предсталяют собой декларативную цепочку вычислений (монаду). ФП-фичи позволяют писать меньше дрисни. При этом чистое ФП тоже не нужно. При попытке писать на ФП эффективный продакшен код получается дрисня.
     
  8. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    все дрова - это фп + чем фп в реале отличается от ооп??? если яп поддерживает указатели на варики и функи, то вот тебе и ооп - никто в той же сишечке не мешает впендюривать пойнтеры на функи в структуры. :) короче, фп есмь базовая штука.
     
  9. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.455
    Адрес:
    Россия, Нижний Новгород
    Неа, перепутал с процедурным. Функциональное - это про Хаскель и F#
     
    Rel нравится это.
  10. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    ФП предполагает отсутствие сайд-эффектов у функций, а это значит, что ты даже в файл записать без монады не можешь.
     
  11. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    можно заниматься всякой эквилибристикой слов, но в сущности процедура и функция есмь одно и тоже..
    upload_2023-7-12_0-48-26.png
    https://en.wikipedia.org/wiki/Monad_(functional_programming)

    и вот Вам обоим Вопрос: имеет ли всякая процедура аналогичную функцию? Вопрос №2: обычно мы контролируем тип переменной, её значение и статус операции - вот аким дикобразом можно эту цепочку полноценно заменить, не меняя архитектуру компа? :)
     
  12. KPG

    KPG Member

    Публикаций:
    0
    Регистрация:
    13 янв 2021
    Сообщения:
    121
    На rosettacode немного решённых задач на языке Zig (114)
    https://rosettacode.org/wiki/Category:Zig
    --- Сообщение объединено, 12 июл 2023 ---
    Так реализовано решение по токенизации строки использующей разделить в примере ","
    const std = @import("std");
    pub fn main() void {
    const string = "Hello,How,Are,You,Today";
    var tokens = std.mem.split(u8, string, ",");
    std.debug.print("{s}", .{tokens.next().?});
    while (tokens.next()) |token| {
    std.debug.print(".{s}", .{token});
    }
    }


    https://rosettacode.org/wiki/Tokenize_a_string#Zig
    --- Сообщение объединено, 12 июл 2023 ---
    А, так в варианте разных Бейсиков:

    https://rosettacode.org/wiki/Tokenize_a_string#BASIC
     
  13. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Можно заниматься всяческой эквилибристикой слов, но в сущности огурец и апельсин есмь одно и тоже, тк обычно заходят в одно и тоже человеческое отверстие и выходят из другого... обычно... если только это не "живой огурец, вот он" (с)...
     
  14. Application

    Application Active Member

    Публикаций:
    1
    Регистрация:
    15 окт 2022
    Сообщения:
    110
    Как отказаться от нового языка программирования:
    [​IMG]
     
    UbIvItS нравится это.
  15. KPG

    KPG Member

    Публикаций:
    0
    Регистрация:
    13 янв 2021
    Сообщения:
    121
    Интересно, что Zig язык представлен в списке языков для решения задач и в проекте code.golf https://code.golf/rankings/holes/all/zig/bytes
    (в этом проекте можно попробовать свои силы и в решении представленных задач на Ассемблере ...)

    P.S. Форт (gForth) язык на сайте был добавлен дней 10-ть назад и уже он пошёл в составление решений и на нём. (попробовал немного задач тоже решить на Форт :)
     
    Последнее редактирование: 24 июл 2023
    alex_dz нравится это.