> Питон, Си и Си++.Ну с сями понятно - там меньше символов потому, что меньше фич. Фичи-то надо как-то в синтаксисе отображать. В питоне тоже фич меньше - дженериков нету например.
Какие в расте необычные или просто вездесущие символы?
1. "!" - что бы отделять макросы от функций. Какой-то спец-символ всё равно для этого нужен. Читая код надо видеть, т.к. внутри вызова макроса может быть собственный под-синтаксис, определённый в описании самого макроса. Пример: println!("abc") - выглядит как функция. А вот другой: lazy_static! { ... } - уже вообще ни на что не похоже, блок какой-то.
2. "::" - разделение имён в пути к чему-то через модули (неймспейсы, пакеты). Пример: std::path::Path. Мне привычнее "." для этого - оно так в жаве, в котлине, в скале, да и много где. Хз зачем они так сделали, но вроде не бесит.
3. "T::<type_parameters>::function()" - так называемый turbofish. У самих пользователей раста притензия только к этому и эта конструкция многих бесит. Но убрать её пока не получается, см. https://github.com/varkor/rust/blob/b188c2a4eb7a3eede8477e3f... . Попытка указывать дженерики после имени фукнции, как это обычно делается в других языках, приводит к неоднозначности обработки туплов.
4. Описание дженериков в сигнатуре фукнции. Оно во всех языках, что я видел - многословно и турдночитаемо. Но в отличии от жавы и котлина тут хотябы есть под-секция "where", где можно отдельно от основного определения сигнатуры развернуть условия.