C++, Rust и цветовая дифференциация воротничков

в 4:40, , рубрики: c++, Rust

Я почти 20 лет пишу код на С++ за деньги, и почти все это время ощущаю неприязнь к инструменту, который позволяет мне безбедно жить. К тому же я занимаюсь системным программированием, а это налагает дополнительные требования к знанию языка.

Я долго не мог выразить вербально, что меня так отталкивает в C++. Однажды из любопытства меня заинтересовал Rust. Я влюбился в него не сразу, сделав не менее 3х подходов к снаряду изучению, пока наконец-то не нащупал интуитивное понимание. С этого момента Rust превратился для меня в эталон инструмента для системного программирования.

Так что и где не так?

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

Я всегда пытался понять истинный мотив этой ненависти, потому что люди часто сами не могут осознать свои чувства. Это особенно относится к программистам, замкнутым по своей природе.

Я также пытался проанализировать свою неприязнь к C++. Заодно пытался поставить себя на место хейтеров Rust и понять их мотивацию. Это долго не получалось, но вдруг...

Картинка сложилась

Для меня C++ является языком, требующим колоссального внимания в силу неимоверного количества правил, исключений и просто абсолютно нелепых конструкций с точки зрения языкостроения.

Я сейчас даже не говорю о тяжелом наследии C, достаточно одной такой вещи современного C++: стандартизационный комитет придумал семантику перемещения и ввел в язык, помимо физического use-after-free, еще и логический use-after-free, возникающий в результате доступа к объекту, из которого выполнено перемещение. Думаю, понятно, что подобного и близко нет в Rust.

Почему воротнички

Так вот получается, что для овладения C++ вам нужны в первую очередь хорошая память и исключительная концентрация внимания. В противовес этому, Rust позволяет запомнить относительно небольшой набор аксиом и далее пользоваться правилами вывода для конструирования всех остальных утверждений языка. Это то, что делает язык логичным, ибо описанное напрямую подчиняется законам формальной логики.

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

Именно поэтому одним разработчикам комфортна полная свобода C++ и не нравятся рамки Rust. Они просто любят полагаться на память и внимание, а не на логику. Я сейчас абсолютно серьезен: для меня написание кода на плюсах давно превратилось в постоянное подглядывание в http://en.cppreference.com/ по поводу и без, которое уже иногда напоминает паранойю. Я не умею запоминать, я умею понимать. Rust для меня интуитивно понятен и прост, а C++ - неинтуитивно сложен и утомителен.

Заключение

Когда я это понял, не произошло ничего особенного. Мир остался прежним, я тоже остался прежним. Просто я осознал, почему мой выбор — правильный для меня. И почему он, конечно, не подойдет всем.

Поэтому когда вам в очередной раз доведется слышать стандартный спор C++ vs Rust, вспомните эту заметку и определите для себя: вы либо синий воротничок, либо — белый. И когда напротив вас появляется человек другой окраски воротничка — перестаньте напрягаться. Диалога все равно, скорее всего, не выйдет.

Автор: deso2

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js