Discussion:
Rust
(слишком старое сообщение для ответа)
Nil A
2023-07-18 04:35:32 UTC
Permalink
Hello, All!

Ну чё, есть кто пишет на расте? Другой эхи, наверное, более подходящей,
спросить нет.
Для себя или таки за деньги пишите?

Best Regards, Nil
Rinat H. Sadretdinow
2023-07-18 05:37:42 UTC
Permalink
Hello Nil!

18 Jul 23 07:35, you wrote to All:

NA> Hу чё, есть кто пишет на расте?

Я честно пытался в нём разобраться. Просто ради интереса и от нечего делать.
Потратил полгода, *ПОЛГОДА* Rust Book выучил практически наизусть. В результате
_уверенно_ могу написать "Hello, world!", а всё что сложнее -- это какое-то
мозгокрутство просто ужасное.

Понял что писать на rust это не "просто писать программы" как на других ЯП, а
сборник шарад, ребусов и головоломок в стиле: "Так. Тут вот так добавить, тут
вот это убрать, вот это переставить местами, может быть теперь borrow checker
это съест? Ан нет, значит тогда вот это вернуть, вот это закомментировать, а
вот эти определения переместить сюда, ну теперь-то borrow checker будет
доволен? Чёрт! Опять нет! Значит тогда вот это вообще убираем, а сюда просто
добавляем новый крейт, не знаю что там у этого крейта в пузе, но он лежит на
crates.io и [почему-то] компилируется, хотя у меня ведь то же самое, но не
компилируется! Блин. Теперь перестало собираться то, что собиралось до этого!"

Bye!
Nil A
2023-07-18 05:50:16 UTC
Permalink
Hello, Rinat!

Tuesday July 18 2023 08:37, from Rinat H. Sadretdinow -> Nil A:

NA>> Hу чё, есть кто пишет на расте?

RS> Я честно пытался в нём разобраться. Просто ради интереса и от нечего
RS> делать. Потратил полгода, *ПОЛГОДА* Rust Book выучил практически
RS> наизусть. В результате _уверенно_ могу написать "Hello, world!", а всё
RS> что сложнее -- это какое-то мозгокрутство просто ужасное.

Может ты ещё книжку по Haskell всю прочитал и на нём хеллоу-ворлды писал? :-)

Я слышал, что надо несколько месяцев потратить, чтобы его изучить, и то, хорошо
бы, чтобы в комманде кто-то был с опытом, чтобы "лучшие практики" показывал и
код ревьювил.

На этом фоне, Go я за неделю освоил, и через две уже что-то полезное начал
писать. Но Go таки оверхед имеет, а на Rust можно уже линуксовые ядерные модули
писать.

Best Regards, Nil
Rinat H. Sadretdinow
2023-07-18 06:43:38 UTC
Permalink
Hello Nil!

18 Jul 23 08:50, you wrote to me:

NA>>> Hу чё, есть кто пишет на расте?
RS>> Я честно пытался в нём разобраться. Просто ради интереса и от
RS>> нечего делать. Потратил полгода, *ПОЛГОДА* Rust Book выучил
RS>> практически наизусть. В результате _уверенно_ могу написать
RS>> "Hello, world!", а всё что сложнее -- это какое-то мозгокрутство
RS>> просто ужасное.

NA> Может ты ещё книжку по Haskell всю прочитал и на нём хеллоу-ворлды
NA> писал? :-)

Hет. Вот это вот нет.

Для меня [на данный момент] существуют два непонятных синтаксиса, это Rust и
Haskell. Причём если в [чужих] исходниках, написанных на Rust ещё можно
[иногда] что-то понять после до-о-о-олгого втыкания -- там видно что да, это
реально какой-то осмысленный код, структурированый, это явно программа, то
исходники на Haskell лично для меня выглядят как абсолютно бессмысленный набор
палочек, чёрточек, буковок и знаков препинания в хаотическом порядке, чистый

head /dev/random > my_program.hs

Так что за Haskell я никогда не возьмусь ни ради интереса, ни от нечего делать,
ни ради денег, причём даже ради *очень* больших денег не возьмусь, ни даже под
дулом автомата -- пусть лечше расстреляют сразу.

NA> Я слышал, что надо несколько месяцев потратить, чтобы его изучить, и
NA> то, хорошо бы, чтобы в комманде кто-то был с опытом, чтобы "лучшие
NA> практики" показывал и код ревьювил.

Я тоже такое слышал. Только вот где найти такого человека с опытом в Rust? У
меня ни в ближайшем, ни даже в далёком окружении таких нет.

NA> Hа этом фоне, Go я за неделю освоил, и через две уже что-то
NA> полезное начал писать.

Go мне показался элементарщиной. И я его тоже освоил буквально за неделю. Даже
для закрепления сваял бота в телеграме для игры в крестики-нолики ;-) Hо вот
где этот Go применять -- ума не приложу. В этих ваших интернетах вопят что Go,
дескать, идеален для микросервисов. Ха! Знать бы что такое эти ваши
"микросервисы" и нафиг они нужны вообще.

Из реальных программ на Go я видел только пресловутый "Golden Point". Hу и мой
телеграм-бот для игры в крестики-нолики.

NA> Hо Go таки оверхед имеет, а на Rust можно уже линуксовые ядерные
NA> модули писать.

Как, чёрт возьми, на Rust писать *ядерные* модули если этот $@^#*$ borrow
checker даёт по рукам при любой попытке полезть туда, куда реально _надо_ но
borrow checker решил что нет, вот туда как раз _не_ _надо_ ходить?

Bye!
Nil A
2023-07-18 06:55:06 UTC
Permalink
Hello, Rinat!

Tuesday July 18 2023 09:43, from Rinat H. Sadretdinow -> Nil A:

RS> исходники на Haskell лично для меня выглядят как абсолютно
RS> бессмысленный набор палочек, чёрточек, буковок и знаков препинания в
RS> хаотическом порядке, чистый

Потому что там монады :-)

RS> Hо вот где этот Go применять -- ума не приложу.

Там, где надо по-быстрому написать, но не на Python, а на чём-то, что
компилируется в нативный код, но при этом не увязнуть в разработке, как если бы
на C/C++/Rust/..

За такое удобство, правда, приходится расплачиваться рантаймом, т.е. некий
оверхед, по сравнению с чистым C-подобным языком.

RS> В этих ваших интернетах вопят что Go, дескать, идеален для
RS> микросервисов. Ха! Знать бы что такое эти ваши "микросервисы" и
RS> нафиг они нужны вообще.

Не важно, микро или нет, можно и монолитный написать, только потом рефакторить
сложнее :-)
Короче, имелось ввиду сервак, который по HTTP REST что-то отдаёт, если так
понятнее.
Есть фреймворки на Python для этого, но чтобы это крутить, надо много серваков
покупать. А на Go если писать сервисы, то серваков можно покупать меньше, и при
этом разработка ещё в адекватный срок получится, и программистов можно найти (а
то на C++ найти, чтобы ещё и код чистый писали, это сложнее и сложнее
становится).

RS> Из реальных программ на Go я видел только пресловутый "Golden Point".
RS> Hу и мой телеграм-бот для игры в крестики-нолики.

На Go я написал rss2pkt программулину, и ей 2:5023/24 фигачит много RSS эх.

RS> Как, чёрт возьми, на Rust писать *ядерные* модули если этот $@^#*$
RS> borrow checker даёт по рукам при любой попытке полезть туда, куда
RS> реально _надо_ но borrow checker решил что нет, вот туда как раз _не_
RS> _надо_ ходить?

Всегда же можно unsafe написать, но тогда теряется смысл раста ;-)
В каждом язычке есть свои какие-то паттерны, надо их изучить, тогда и
компилятор будет дружественнее.
Там вся идея в расте, чтобы компилятор по рукам давал :-)

Читал статью, что в стартапе одном, решили с самого начала писать на Rust, типа
модно-молодёжно. Оказалось, что на нём прототипировать сложно, т.е. быстро
говнокод набрасать не получается, компилятор не пропускает, а это уже не
прототипирование получается. Так этот стартап и бросил идею с Rust через
полгода.

Best Regards, Nil
Rinat H. Sadretdinow
2023-07-18 07:38:24 UTC
Permalink
Hello Nil!

18 Jul 23 09:55, you wrote to me:

RS>> исходники на Haskell лично для меня выглядят как абсолютно
RS>> бессмысленный набор палочек, чёрточек, буковок и знаков
RS>> препинания в хаотическом порядке, чистый

NA> Потому что там монады :-)

"В моём доме попрошу не выражаться!" (C)

RS>> Hо вот где этот Go применять -- ума не приложу.

NA> Там, где надо по-быстрому написать, но не на Python, а на чём-то, что
NA> компилируется в нативный код, но при этом не увязнуть в разработке,
NA> как если бы на C/C++/Rust/..

Hе знаю как кто, но я в таком случае пишу на _pure_ C. И быстро, и дёшево, и
нативно-кодово получается.

RS>> Как, чёрт возьми, на Rust писать *ядерные* модули если этот
RS>> $@^#*$ borrow checker даёт по рукам при любой попытке полезть
RS>> туда, куда реально _надо_ но borrow checker решил что нет, вот
RS>> туда как раз _не_ _надо_ ходить?

NA> Всегда же можно unsafe написать, но тогда теряется смысл раста ;-)

Вот именно, смысл теряется полностью. Можно абсолютно всё в unsafe обернуть,
borrow checker будет спокоен, но какой тогда смысл? Просто для того чтобы
использовать синтаксис Rust? Какой-то армянский комсомол получается -- сначала
создать себе трудности, а после героически их преодолевать.

NA> В каждом язычке есть свои какие-то паттерны, надо их изучить, тогда и
NA> компилятор будет дружественнее. Там вся идея в расте, чтобы компилятор
NA> по рукам давал :-)

Да ну нафиг. Я уже не в том возрасте чтобы подстраиваться под какие-то ЯП,
менять свой образ мышления, который зарождался ещё тогда, когда не только Rust,
а даже C++ в тогда ещё СССР толком не было, одни сплошные бейсики, паскалии
*изредка* pure C.

NA> Читал статью, что в стартапе одном, решили с самого начала писать на
NA> Rust, типа модно-молодёжно. Оказалось, что на нём прототипировать
NA> сложно, т.е. быстро говнокод набрасать не получается, компилятор не
NA> пропускает, а это уже не прототипирование получается. Так этот стартап
NA> и бросил идею с Rust через полгода.

И правильно поступили в том стартапе. Я считаю.

Bye!
Nil A
2023-07-20 02:47:26 UTC
Permalink
Hello, Rinat!

Tuesday July 18 2023 10:38, from Rinat H. Sadretdinow -> Nil A:

RS>>> Hо вот где этот Go применять -- ума не приложу.

NA>> Там, где надо по-быстрому написать, но не на Python, а на чём-то,
NA>> что компилируется в нативный код, но при этом не увязнуть в
NA>> разработке, как если бы на C/C++/Rust/..

RS> Hе знаю как кто, но я в таком случае пишу на _pure_ C. И быстро, и
RS> дёшево, и нативно-кодово получается.

Не льсти себе. Тыж писал телеграммного бота на Гоу, значит прочувствовал каково
оно - взять и одной строчкой сходить в HTTP REST, а потом, естественно,
проверить на Nil. А второй строчкой ан-маршировать (типа десерилизовать, только
смешнее) этот самый джейсон сразу в сруктурку, и проверить на Nil потом ;-)

И ты бы взял пюрешку_C? Тыж не будешь изобретать велосипеды, тыж, как минимум,
возьмёшь libcurl, так? Он за тебя там HTTP, и даже HTTPs GET/POST сделает, но
это строчек несколько там всё вызвать же.

А джейсон потом разгребсти, тыж пойдёшь ещё библиотеку искать, не руками же на
пюре_си пейсать?

А если тебе там вектора (aka динамический массив), или чего доброго
хешь-табличка какая-то потребуется завести, тыж чё, потянешь glib какой-нибудь?
Или не, дай угадаю, у тебя на макросах на пюре_си заготовлены заранее весь STL
прям. Хотя, я одно время тупо из линукс-кернела дата стракчерсы брал, там на
голом-си.

Такшта, ещё раз, не льсти себе.

Best Regards, Nil
Rinat H. Sadretdinow
2023-07-20 04:49:10 UTC
Permalink
Hello Nil!

20 Jul 23 05:47, you wrote to me:

RS>>>> Hо вот где этот Go применять -- ума не приложу.
NA>>> Там, где надо по-быстрому написать, но не на Python, а на
NA>>> чём-то, что компилируется в нативный код, но при этом не
NA>>> увязнуть в разработке, как если бы на C/C++/Rust/..
RS>> Hе знаю как кто, но я в таком случае пишу на _pure_ C. И быстро,
RS>> и дёшево, и нативно-кодово получается.

NA> Hе льсти себе. Тыж писал телеграммного бота на Гоу, значит
NA> прочувствовал каково оно - взять и одной строчкой сходить в HTTP REST,
NA> а потом, естественно, проверить на Nil.

Проверить на "Nil A".

NA> А второй строчкой ан-маршировать (типа десерилизовать, только смешнее)
NA> этот самый джейсон сразу в сруктурку, и проверить на Nil потом ;-)

Hет. Мне это *не* понравилось.

NA> И ты бы взял пюрешку_C? Тыж не будешь изобретать велосипеды, тыж, как
NA> минимум, возьмёшь libcurl, так? Он за тебя там HTTP, и даже HTTPs
NA> GET/POST сделает, но это строчек несколько там всё вызвать же.

Вот libcurl это да, но когда закрыто абсолютно практически всё, когда для
написания программы из программирования остаётся только:

int main() {
coolfunc();
return 0;
}

где coolfunc неизвестно *мне* как делает [вроде бы то] что мне надо -- нет,
такое я не люблю.

NA> Такшта, ещё раз, не льсти себе.

Я и не льстю. Я констатирую факт что я смог, но тем не менее не отрицаю тот
факт, что мне это не понравилось, совсем.

Bye!
Yuriy Khashev
2023-08-04 18:56:18 UTC
Permalink
Hello, Nil A.
On 20.07.2023 5:47 you wrote:

NA> А джейсон потом разгребсти, тыж пойдёшь ещё библиотеку искать, не
NA> руками же на пюре_си пейсать?

Кстати, кто чем пользуется в сях? В идеале, что бы в структуру размаршалить :-)


--
Bye. Yuriy.
Nil A
2023-08-04 20:47:34 UTC
Permalink
Hello, Yuriy!

Friday August 04 2023 21:56, from Yuriy Khashev -> Nil A:

NA>> А джейсон потом разгребсти, тыж пойдёшь ещё библиотеку искать, не
NA>> руками же на пюре_си пейсать?

YK> Кстати, кто чем пользуется в сях? В идеале, что бы в структуру
YK> размаршалить :-)

Вот ты сейчас реально сленгом гоу-ленга сказал, хаха, размаршалить.

А знаешь в чём прикол? Если это гоу - то размаршализация (есть такое слово?)
происходит в рантайме, а если это c++20, то можно на constexpr/consteval
написать, т.е. в компайл-тайм, но есть нюанс [тут был анекдот]. Где-то в районе
~c++26 может, или c++29 (скорее всего), случится интроспекция на уровне языка,
а до этого это костыли в лице макросов и шаблонов.

Про эти все constexpr. Std::format придумали давно, но поддержки нет почти
нигде (давайте ещё вспомним ranges, async, фигня, вот модули только в
Мелкомягких), но мы то https://github.com/fmtlib/fmt пользуемся ещё со времён
c++17. В c++20 прям зыкинско, всё превращается в компайл тайм, прям printf
отдыхает. А этот, iostreams - недоразуменее времён cront.

Про твой вопрос, сорян за оффтов, я не знаю за Си, но в плюсах (современных),
принято "размаршалить" джейсон https://github.com/nlohmann/json

Best Regards, Nil
Eugene Muzychenko
2023-08-04 20:07:43 UTC
Permalink
Привет!

04 Aug 23 21:56, you wrote to Nil A:

NA>> А джейсон потом разгребсти, тыж пойдёшь ещё библиотеку искать

YK> Кстати, кто чем пользуется в сях? В идеале, что бы в структуру
YK> размаршалить :-)

Если мне вдруг приспичит, сам по-быстрому накидаю, равно как какой-нибудь
табличный парсер. Еще не хватало из-за такой мелочи библиотеку искать, изучать,
подключать, искать глюки... :)

Всего доброго!
Евгений Музыченко
fi-***@muzy-chen-ko.net (все дефисы убрать)
Nil A
2023-08-05 02:22:32 UTC
Permalink
Hello, Eugene!

Friday August 04 2023 23:07, from Eugene Muzychenko -> Yuriy Khashev:

NA>>> А джейсон потом разгребсти, тыж пойдёшь ещё библиотеку искать

YK>> Кстати, кто чем пользуется в сях? В идеале, что бы в структуру
YK>> размаршалить :-)

EM> Если мне вдруг приспичит, сам по-быстрому накидаю, равно как
EM> какой-нибудь табличный парсер. Еще не хватало из-за такой мелочи
EM> библиотеку искать, изучать, подключать, искать глюки... :)

Узнаю Сишников, в их стиле. Надо, например, сходить по REST API, забрать там
json, ну и потом что-то с этим сделать. Ну так, у нас есть сокеты? Сокеты есть.
HTTP заголовок сформируем? Нивапрос. Джесон потом папарсим? Да руками, как
нефиг делать...

Best Regards, Nil
Rinat H. Sadretdinow
2023-08-05 06:46:10 UTC
Permalink
Hello Nil!

05 Aug 23 05:22, you wrote to Eugene Muzychenko:

NA>>>> А джейсон потом разгребсти, тыж пойдёшь ещё библиотеку искать
YK>>> Кстати, кто чем пользуется в сях? В идеале, что бы в структуру
YK>>> размаршалить :-)
EM>> Если мне вдруг приспичит, сам по-быстрому накидаю, равно как
EM>> какой-нибудь табличный парсер. Еще не хватало из-за такой мелочи
EM>> библиотеку искать, изучать, подключать, искать глюки... :)

NA> Узнаю Сишников, в их стиле. Hадо, например, сходить по REST API,
NA> забрать там json, ну и потом что-то с этим сделать. Hу так, у нас есть
NA> сокеты? Сокеты есть. HTTP заголовок сформируем? Hивапрос. Джесон потом
NA> папарсим? Да руками, как нефиг делать...

Я хотя далеко не сишник, но у меня тоже нет никакого доверия ко всяким
библиотекам, фреймворкам и т.д., которые тянут за собой мегабайты может быть и
нужного, но абсолютно неиспользуемого в конкретный момент мной кода -- просто
без него в этом фреймворке не будет работать тот кусок кода, который мне нужен,
в придачу к этим мегабайтам тянут какие-то дополнительные ошибки (может они
есть, а может нет -- понятия не имею, но разбираться и искать ошибки в пузе
*чужого* мне кода абсолютно нет никакого желания), принуждают использовать
всякие соглашения "Вызываем именно вот так, а не как-нибудь по-другому! Потому
что в этом фрейворке *так* *принято*!) и т.д. Я лучше быстренько напишу сам. И
мне всё будет понятно. И ошибки уж в своём коде я точно найду. И я сам
установлю в каком стиле что вызывать и какие параметры куда передавать.

Я не сишник, я просто программист старой школы. Мне абсолютно не надо чтобы
программа была вида (утрирую):

main(int argc, char **argv) {
VeryCoolNameForVeryCoolVar *app = new
VeryCoolFrameworkDoesAbsolutelyAll(argc, argv);
// тут устанавливается куча непонятных свойств созданного объекта 'app':
// ...
app->isAppDoesEverything = true;
app->variableControlsSomething = 0xDEADCAFE;
// ...
// и вызывается куча методов:
// ...
app->thisCoolMethodShouldBeInvoked(true, false, false, COOL_CONST_0 |
app->COOL_CONST_128);
// ...

// и непосредственно делаем что надо
return app.run();
}

мне надо самому знать что, где, когда и почему происходит.

Bye!

Yuriy Khashev
2023-08-04 18:52:55 UTC
Permalink
Hello, Nil A.
On 18.07.2023 8:50 you wrote:

NA> Может ты ещё книжку по Haskell всю прочитал и на нём хеллоу-ворлды
NA> писал? :-)

Надеюсь не оффтоп. На хаскель писал. Точнее переписывал немного готовый код. Не
могу сказать, что прям все легко давалось, но видимо сказался опыт erlang.
Но точно могу сказать, что сейчас без доки hello world не напишу.


--
Bye. Yuriy.
Nil A
2023-08-04 20:10:56 UTC
Permalink
Hello, Yuriy!

Friday August 04 2023 21:52, from Yuriy Khashev -> Nil A:

NA>> Может ты ещё книжку по Haskell всю прочитал и на нём
NA>> хеллоу-ворлды писал? :-)

YK> На хаскель писал.

Прям продакшен код, или таки пет-проджект на два вечера дома?

YK> Точнее переписывал немного готовый код.

Крутотень. Я знаю только, что в ФБ у них спамфильтр на Хаскеле. Зачем на нём -
ХЗ.
<offtop>ФБ ваще прогрессивные - мои бывшие сотрудники там на Расте фигачут и
<offtop>счастливы. Так то там в основном мои друзья на плюсах фигачат.</offtop>

YK> Не могу сказать, что прям все легко давалось,

Синтаксис? Я, лично, рад, что я не пойду в Хаскель за функциональным
программированием, потому что его уже в современные плюсы завесли в том объёме,
в котором мне комфортно пейсать.

Кстати, Раст прям красавчик в этом плане. Как в гоу синтаксис почти. Нет
наследования, но есть трейты, т.е. имплементация интерфейса. Нету эксепшенов,
но есть из C++23 std::expect из-коробки, плюс эти boost:asio с async в лице
tokio или mio.

И вот, если функция возвращает std::expect, то можно дальше chain её, типа
and_then(), transform(), or_else(), а в Расте вообще switch/case написать.

Но, признаюсь, монады - это снос башки. На хабре были статьи, как можно монады
на плюсах, но я так не хочу. ;-)
Про сайд-эффект. Так не используйте глобальные переменные, или статик
переменные со стейтом, и будет вам счастье. А так то, все файловые операции,
вся сеть - сплошной сайд-эффект, только функция синуса без онова.

YK> но видимо сказался опыт erlang.

Ты, случаем, не работал в Мере в нулевых, которые были контрактрером погибшего
Канадского Нортеля? ;-) У них АТС'ка была на собственном языке и много-много
эрланга.

YK> Но точно могу сказать, что сейчас без доки hello world не напишу.

Основая фича сегодняшнего ChatGPT-версия, в том, что он тебе может забацать
темплейт на любом ЯП, прям если тебе нужен хеллоу-ворд, и далее уровня Джуна.
Даже мои на работе сознались, что из питона в гоу конвертили отдельные функции
с помощью ChatGPT, с дальнейшей доработкой напильноком. Типа, так ты потратишь
часа 2, чтобы перефигачить, а так бот тебе за 5 секунд выдаст и дальше
поправить.

Best Regards, Nil
Loading...