Rust

| рубрика: Заметки | автор: st
Метки: ,

Разработка ядра Линукса понемногу переходит с Си на Раст (Rust). И это правильно.

Попытки стандартизации начиная с С++11, разумные по замыслу, привели к тупому копированию кода из Boost в стандартную библиотеку и рождению новых монстров в виде рекомендаций "современного" стиля "а-ля Александреску", превращающих исходники с активным использованием такого подхода из 50К строк в исполняемый модуль "весом" в 300-500 Мб -- запредельная масса кода, многократно перекопированного шаблонами.

Да, многие из нас еще с первого курса вуза помнят, что цикл из 100 итераций с одним вызовом функции внутри выполнится медленнее, чем 100 строк подряд из вызовов той же функции. Но мы также помним, что такой код может в 100 раз может увеличить размер данного модуля.

Люди всерьёз пишут про какой-то RAAI в С++, зная что уже 30 лет не могут решить проблему исключений в деструкторах!

Введение к необходимым всем unique pointers еще и shared мгновенно превращает ваш код в подобие сборщика мусора без каких-либо гарантий "зависания" зацикленных на себя через цепочки объектов. Кроме того, оказалось, что для оптимальной работы с такими структурами, как кэш, к ним требуются еще и weak pointers. И это только один пример из сотен нововведений.

Скотт Мейерс в "Effective Modern С++" тратит десятки страниц просто для того, что понять "как это вообще работает" и как не выстрелить себе в ногу!

Спецификация новых стандартов 14 и 17 занимает две тысячи страниц! Но в этом "талмуде", нет даже намёка на сетевые коммуникации и работу с базами данных в стандартной библиотеке. Как такое может быть в двадцать первом веке после 35 лет развития?

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

"Его пример - другим наука" (ц)

P.S. Даже такие динозавры системного программирования понимают ситуацию