> Если даже у Рэймонда от раста батхёртЯ чесслово лучше о нём думал. Не знаю даже почему, но почему-то я думал, что он в состоянии учиться. Очевидно, ошибался. Даже удивляюсь теперь, почему я сразу не подумал о том, что в его довольно почтенном возрасте, ЧСВ несомненно зашкаливает, и любые проблемы с новым воспринимаются как проблемы нового, а не проблемы блестящих мозгов носителя этого ЧСВ.
Но я, тем не менее, продолжаю верить, что с Go он справится. Там попроще, нет ничего существенно нового. Не должно быть ничего существенно нового для Рэймонда. Ну, кроме синтаксиса быть может.
> Even things that should be dirt-simple, like string concatenation, are unreasonably difficult.
Ага. Это он ещё не пробовал реализовать какой-нибудь список. Интересно, что он сказал бы, когда, потратив дня два, он бы справился с операцией insert и, утерев со лба пот, задумался бы о том, как можно реализовать remove.
Во всём это баттхёрте C/C++ программистов, меня особенно развлекает их святая убеждённость в том, что они лучше всех знают, какие вещи должны быть dirt-simple. Ну, а как иначе? Они ведь C/C++, элита программистов, они просто боги программирования и ручного управления памятью. Как они могут не знать этого? Но при чтении простыней текста, порождённых баттхёртом, у меня складывается впечатление, что они не от великого знания пришли к выводам о том, что должно быть простым, а гораздо более прямолинейно: простым должно быть то, что просто в C/C++. Забывая при этом, что rust не C/C++ и не ставит перед собою цели быть похожим на них (чего не скрывает, и о чём прямо сходу заявляет своим синтаксисом -- объявления типов переменных/функций явно слизаны с pascal, только что слова function/procedure заменили на краткое fn), но пытается сделать сложные вещи, потенциально приводящие к негативным нелокальным последствиям, сложными локально, на уровне грамматики.
> The language demands a huge amount of fussy, obscure ritual before you can get anything done.
Да-да, именно такие заявления меня и наводят на мысль о том, что такие личности пытаясь написать что-то на расте, не понимают, что делают. Не понимают зачем они делают то, что делают. Поэтому все эти телодвижения превращаются для них в загадочный, неприятный и сложный ритуал.
Ну, реально. Зачем rust заставляет нас засовывать элементы создаваемого нами списка в Rc, если в сишечке и без этого работает? Но если мы глянем в гайдлайны для написания ядерного кода linux, там почему-то тоже настоятельно рекомендуется использовать ref_count для элементов списков. Странное совпадение, да?
Наводит на еретическую мысль, что язык без gc -- кусок шита. Хотя нет, о чём это я...
Что список уродская структура, которой не место в репертуаре грамотного программиста. Опять что-то не то...
Что rust абсолютно прав в своих притязаниях, и конечно же, надо упаковывать элементы списка в Rc.
С другой стороны, если честно, я не очень понимаю, о чём говорит Рэймонд. Не вижу больших проблем конкатенировать строки. Я вот специально заглянул в официальную книжку по расту, и там действительно есть пример:
let mut s = "Hello".to_string(); // mut s: String
println!("{}", s);
s.push_str(", world.");
println!("{}", s);
Может он под строками понимает слайсы &str? Это похоже на правду -- похоже на того рода глупость, которую можно ожидать от C программиста, который четыре дня поигрался с rust'ом. Ну и да, слайсы сложнее конкатенировать, вероятно, ещё и ужасный unsafe придётся использовать.
Но если бы Рэймод был бы не только писателем, но и читателем, он бы прочитал в той же книге о том, что если хочется работать с mutable строками, то следует использовать String, а не &str. String инкапсулирует в себе все эти сложности и небезопасности, выставляя наружу полностью safe API. И прежде чем погружаться в изучение этих сложностей и небезопасностей, стоит хотя бы примерно освоить rust на задачках попроще. Но ЧСВ не позволяет -- если уж брать какую-нибудь учебную задачу для освоения языка, так надо сразу irc-сервер, да ещё и со всеми возможными сложностями и небезопасностями, вплоть до конкатенирования строк на стеке, контролируя каждую сгенерённую rust'ом машинную инструкцию. Честолюбивый план, но не для всех. Некоторым не дано с ним справиться. И не все готовы с этим смириться.
> Значит язык ещё очень сырой и не скоро будет готов для продакшена.
Если я угадал с тем, на какие грабли наступил Рэймонд, то сырой не язык, а Рэймонд.