- PVSM.RU - https://www.pvsm.ru -
Я почти 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/ [1] по поводу и без, которое уже иногда напоминает паранойю. Я не умею запоминать, я умею понимать. Rust для меня интуитивно понятен и прост, а C++ - неинтуитивно сложен и утомителен.
Когда я это понял, не произошло ничего особенного. Мир остался прежним, я тоже остался прежним. Просто я осознал, почему мой выбор — правильный для меня. И почему он, конечно, не подойдет всем.
Поэтому когда вам в очередной раз доведется слышать стандартный спор C++ vs Rust, вспомните эту заметку и определите для себя: вы либо синий воротничок, либо — белый. И когда напротив вас появляется человек другой окраски воротничка — перестаньте напрягаться. Диалога все равно, скорее всего, не выйдет.
Автор: deso2
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/c-3/439152
Ссылки в тексте:
[1] http://en.cppreference.com/: http://en.cppreference.com/
[2] Источник: https://habr.com/ru/articles/977100/?utm_source=habrahabr&utm_medium=rss&utm_campaign=977100
Нажмите здесь для печати.