Вчера, в результате обсуждения в Facebook-е двух вариантов одного и того же кода на Rust-е довелось таки воспользоваться Rust-овским playground-ом и набросать на Rust-е пару-тройку собственных вариантов.
С учетом того, что к Rust-у я не прикасался, наверное, с апреля прошлого года (когда мне пришлось проштудировать доку по Rust-у для участия в панельной дискуссии на C++ CoreHard-е), было, скажем так, любопытно.
Стало понятно, что имеют в виду растоманы, когда говорят, что компилятор им помогает писать код.
Ну реально. В Rust-е, с одной стороны, драконовские ограничения и жесткий контроль за программистом. С другой совершенно криптографический синтаксис, более-менее сложные конструкции приходится разбирать очень внимательно, обращая внимание на каждый символ. Так что хрен поймешь, что именно ты пишешь и что на это скажет компилятор. А потом приходит этот самый компилятор и говорит: вот тут ты херню написал, перепиши вот так, а вот этот символ, в принципе, есть, но я тебе не дам его использовать, пока ты вот такой use не напишешь.
Поэтому не остается ничего другого, как делать то, что тебе говорит компилятор. А потом оно раз! И работает.
Ну понятно, почему у людей крышу-то сносит. Особенно у тех, кто на Rust с динамики, вроде JS, Python или Ruby приходит.
Имхо, здесь есть сильная аналогия с тем, какую серьезную роль в разработке софта в середине-конце 1990-х годов произвели IDE. Сперва Delphi, затем IDE для Java (при этом IDE для C++, имхо, в те времена, да и потом, сильно недотягивали до Java-аналогов, что обуславливалось особенностями языка). Можно сказать, что в 1990-х сформировался IDE-driven development, который пышным цветом расцвел в 2000-х. Да и сейчас, наверное, цветет и пахнет.
А вот Rust, похоже, делает доступным для широких масс такую штуку, как compiler-driven development.
Что, как мне кажется, неизбежно скажет свое веское слово в индустрии софтостроения.
Но знаете, что по-прежнему удивляет меня сильнее всего касательно Rust-а? Это то, что не смотря на всю крутотень Rust-а и толпы писающих кипятком фанатов для Rust-а еще не появилось ни одного сколько-нибудь заметного GUI-фреймворка. За 3.5 года после выхода стабильного Rust 1.0. За три с половиной, мать его за ногу, года.
Да в 1990-е на первых версиях C++ GUI-фреймворки в одно рыло клепались только в путь и росли как грибы после дождя. Первая версия Qt была сделана за четыре года. В 1990-е, на древнем C++. Маленькой командой. Без GitHub-а. Только вдумайтесь. Да и сейчас люди делают вещи вроде ImGui и Nana. Для C++, не для Rust-а. Загадка, однако.