Назревает большая революция
May. 30th, 2021 11:14 amМногие вещи в шелле хороши и создают ощущение, что в этой области всё хорошо и правильно. Условный binutils. Маленькие программы с простыми ясными идеями, которыми удобно пользоваться.
Но... Стоит только на секунду задуматься об их изменении, как архаичный autotools ждёт вас. Причём, он ждёт вас почти всюду. От binutils до cpython.
Моё чувство прекрасного страдает при виде m4. При виде поддержки достандартного С (и макросов вокруг этого). При виде невероятного объёма хаков, написанных с софте, у которого модель garbage in - garbage out, и поверх которого пытаются "сохранить инварианты" в более приличном софте.
У меня ощущение, что это революционная ситуация.
Если раньше у нас не было критической массы софта, который бы решал те, низкоуровневые проблемы, которые раньше решал C (т.е. хочешь системно - вот тебе, падаван, m4, automake, и шуруй воевать с ./configure), и особо вариантов не было, то теперь я вижу альтернативы с более адекватным lore. Это и go, и rust, и (может быть?) swift. Хотя ладно, кого я обманываю. Rust. Его красота - не в "borrow-checker'е", как любят описывать неофиты. Его красота в разумности базовых предположений до самого низа. Спускаясь с красот "асинхронного веб-сервера с job-stealing многозадачностью" до скучных вопросов "каким образом бинарник знает какой номер у сисколла для записи в fd" (если вы этот путь проделаете на условной node, вам будет очень печально), так вот, проделав этот путь, не ощущаешь острого диссонанса от "ненадлежащих средств". (Если что, там снизу libc, так что финальный слой у Rust такой же как у всех, но всё над ним - весьма добротно).
Так вот, революция начнёт происходить из-за awk-дисфории при соприкосновении с внутренностями существующих программ.
Я не знаю, сможет ли сообщество выдержать высочайший уровень инженерной продуманности Rust, но пока что от знакомства с его потрошками (и потрошками всего, что рядом) нет того же ощущения, как от доисторического Си.
Но... Стоит только на секунду задуматься об их изменении, как архаичный autotools ждёт вас. Причём, он ждёт вас почти всюду. От binutils до cpython.
Моё чувство прекрасного страдает при виде m4. При виде поддержки достандартного С (и макросов вокруг этого). При виде невероятного объёма хаков, написанных с софте, у которого модель garbage in - garbage out, и поверх которого пытаются "сохранить инварианты" в более приличном софте.
У меня ощущение, что это революционная ситуация.
Если раньше у нас не было критической массы софта, который бы решал те, низкоуровневые проблемы, которые раньше решал C (т.е. хочешь системно - вот тебе, падаван, m4, automake, и шуруй воевать с ./configure), и особо вариантов не было, то теперь я вижу альтернативы с более адекватным lore. Это и go, и rust, и (может быть?) swift. Хотя ладно, кого я обманываю. Rust. Его красота - не в "borrow-checker'е", как любят описывать неофиты. Его красота в разумности базовых предположений до самого низа. Спускаясь с красот "асинхронного веб-сервера с job-stealing многозадачностью" до скучных вопросов "каким образом бинарник знает какой номер у сисколла для записи в fd" (если вы этот путь проделаете на условной node, вам будет очень печально), так вот, проделав этот путь, не ощущаешь острого диссонанса от "ненадлежащих средств". (Если что, там снизу libc, так что финальный слой у Rust такой же как у всех, но всё над ним - весьма добротно).
Так вот, революция начнёт происходить из-за awk-дисфории при соприкосновении с внутренностями существующих программ.
Я не знаю, сможет ли сообщество выдержать высочайший уровень инженерной продуманности Rust, но пока что от знакомства с его потрошками (и потрошками всего, что рядом) нет того же ощущения, как от доисторического Си.
no subject
Date: 2021-05-31 04:33 pm (UTC)no subject
Date: 2021-05-31 06:00 pm (UTC)a = b[i++] компилировалось в 1 машинную операцию на PDP11.
Так-же как a = b[++i]
Впрочем, мы не об этом. У всех компиляторов Си, которые я видел, есть инструкция asm. Это, конечно, читерство. Но как по мне - не большее, чем unsafe в Rust. Так что стеком, при желании, порулить можно.
no subject
Date: 2021-05-31 06:03 pm (UTC)asm в Rust есть, так же как и naked functions (в которых компилятор не управляет стеком).
no subject
Date: 2021-06-01 04:00 pm (UTC)Говорите уж полностью - не к ассемблеру вообще, а к ассемблеру PDP-11. Архитектура которой с современными имеет довольно мало общего. Разумеется, на современные архитектуры С ложится просто отвратительно.
> У всех компиляторов Си, которые я видел, есть инструкция asm. Это, конечно, читерство. Но как по мне - не большее, чем unsafe в Rust.
только unsafe в Rust работает консистентно между платформами, а asm-вставки платформозависимы.