The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск языка программирования Rust 1.48, opennews (ok), 19-Ноя-20, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


196. "Выпуск языка программирования Rust 1.48"  +3 +/
Сообщение от Аноним (84), 20-Ноя-20, 13:05 
C удовольствием!
- zig имеет си-подобный синтаксис, намного проще его читать чем Rust
- модули у Zig - это просто файлы, берешь такой и const mything = @import("./relpath.zig");
- ленивая компиляция - компилятор пытается разобраться только в том, что реально используется в коде main либо в том, что экспортируется библиотекой
- обработка ошибок... Вы когда-нибудь программировали на Rust свою библиотеку? Вас бесила необходимость при любой обработке ошибок руками самому писать тип ошибок? В Zig есть интересный тип ошибки, который генерируется компилятором. Ты проходишься по нему через классический switch и компилятор гарантирует, что все возможные типы ошибок обработаны. Либо можно ошибку пробросить дальше с помощью оператора try! . Еще раз, для всего вышеописанного не придется написать ни одного класса и ни одной специальной структуры для ошибок
- dead code elimination - вот в Расте оно работает через оптимизации и компилятор медленно думает, а у Zig из-за ленивой компиляции ненужное даже не входит в процесс компиляции
- Вместе с компилятором zig в комплекте идут исходники libc для множества платформ, например есть mingw, glibc нескольких версий, для других архитектур всякая всячина. В случае с Rust нужно отдельно через rustup качать бинарные тулчейны с сайта мозиллы, если туда еще будет доступ. Нельзя доверять чужим бинарникам, особенно когда не дают инструкций как их собрать.
- Свои аллокаторы можно определять. Вообще язык с ручной работой с памятью, поэтому такие штуки как wasi, wasm писать на Zig одно удовольствие (да, биндинги на js приходится писать ручками, но оптимизация-то гарантированно на нашей стороне)
- В zig есть система сборки, которая умеет искать зависимости через pkg-config и... Было там майкрософтовское поделие такое, с телеметрией... vcpkg! точно.
- Вместо макросов в zig используются compile-time выражения на таком же языке, как и выражения в рантайме, что делает код читаемым! Для сравнения почитайте стандартную библиотеку Zig и например пакет serde/serde_json. Или стандартную библиотеку Раста.
- в Zig нет unsafe, потому что zig не лицемерит. Системный язык не может быть не-unsafe. Поэтому можно писать что угодно, а не безопасные обертки над unsafe, как это приходится делать в случае с Rust. Для примера попробуйте написать двусвязный список без использования стандартных примитивов-контейнеров Vector и List в Rust. Это больно. На Zig я написал двусвязный список строк динамического размера для своего небольшого проекта на webassembly за полчаса, и он работает на любых платформах и как и все остальное в Zig аллокатор передается туда как аргумент, то есть можно взять любой аллокатор без изменения кода
- для zig любители уже написали тулчейны чтобы программировать homebrew игры для psp и gameboy (Zig-PSP и ZigGBA)
- если вам мало, просто возьмите и попробуйте язык, в конце концов надо определять нужность вещи практикой работы с ней, а не баззвордами типа "безопасный язык"
Ответить | Правка | Наверх | Cообщить модератору

198. "Выпуск языка программирования Rust 1.48"  +/
Сообщение от Аноним (84), 20-Ноя-20, 13:20 
Забыл упомянуть, что у Zig намного лучше взаимодействие с си, что через ffi, что через импорт си-файлов напрямую, ну и конечно на Zig можно писать нормальные динамические библиотеки, которыми можно УДОБНО пользоваться из си, из Rust и из любых других языков, что умеют в ffi, а еще что Zig умеет компилировать си. Если бы у вас получилось в ваших сишных зависимостях переписать скрипт сборки чтобы он использовал `zig cc`, возможно с аргументом -target, то можно было бы обойтись вообще без компилятора си в системе.
Ответить | Правка | Наверх | Cообщить модератору

290. "Выпуск языка программирования Rust 1.48"  +/
Сообщение от Аноним (-), 21-Ноя-20, 16:17 
>  zig имеет си-подобный синтаксис, намного проще его читать чем Rust

О да, такое же уныло г:

> pub fn main() void {

Первое что там написано : в зависимостях llvm и gcc/clang.  Собственно, если у меня уже есть gcc или clang да еще и llvm для которой нужна полноценная ос и окружение - на какой черт мне эти все зиги фиги с растами всместе взятыми ? Дырень головного мозга какая-то и массовый психоз. Не решают эти хрусты с зигами ровно ни единой проблемы, а лишь создают их. И авторы у них безмозглые и недальновидные идиоты.

Ответить | Правка | К родителю #196 | Наверх | Cообщить модератору

299. "Выпуск языка программирования Rust 1.48"  +/
Сообщение от Аноним84701 (ok), 21-Ноя-20, 21:16 
>> bootstrap-zig
>> Stage 1: Build Zig from C++ Source Code
>> gcc >= 5.0.0 or clang >= 3.6.0
>> Stage 2: Build Self-Hosted Zig from Zig Source Code
> Первое что там написано : в зависимостях llvm и gcc/clang.  Собственно, если у меня уже есть gcc или clang да еще и llvm для которой нужна полноценная ос и окружение - на какой черт мне эти все зиги фиги с растами всместе взятыми ?

Вам? Вам оно действительно ни к чему. Ни то, ни другое.

> И авторы у них безмозглые и недальновидные идиоты.
> или clang да еще и llvm для которой нужна полноценная ос и окружение

А ведь так дышал, так дышал! (с)

Ответить | Правка | Наверх | Cообщить модератору

304. "Выпуск языка программирования Rust 1.48"  +/
Сообщение от Аноним (-), 21-Ноя-20, 21:57 
" реально используется в коде main либо в том, что экспортируется библиотекой "
и как это живет например с обработчиком прерывания, который вызывается "непонятно почему" сам по себе, железом? или с неочевидными механизмами типа call tables и динамического импорта из .so?

" dead code elimination - "
он случайно обработчик irq не выпилит в чем-нибудь сиситемном? потому что main и все остальные его нигде не вызывают, это железо делает!

" Вместе с компилятором zig в комплекте идут исходники libc для множества платформ "
если речь про бутлоадеры и проч - а без этого libc можно? или куда он будет в бутлоадере вызовы делать, вообще?

" в Zig нет unsafe, потому что zig не лицемерит. Системный язык не может быть не-unsafe. "
идея что системное программирование может быть safe вообще вилами по воде писана - я например неверный адрес в dma вкатил разок, и какая разница на каком яп это было сделано, яп же не знает что это число оказывается будет адресом памяти для той железяки и она танцуя от него половину памяти системы прострелит.

Ответить | Правка | К родителю #196 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру