Друзья, есть такой вопрос.
Я тут выбираю какой новый ЯП выучить. Заинтересовался Rust-ом. Сейчас о нём много говорят и даже сам Линус (да святится имя его) осторожно допускает, что он может заменить С++. Много пишут о его преимуществах, о новой системе сборки мусора, о скорости работы и красиво организованной низкоуровневости. Читая это, я загорелся идеей его выучить. И всё бы хорошо, но вот наткнулся на эту статью некоего Алексея Вересова. В ней автор разносит Раст в пух и прах… И вера моя пошатнулась (или как там это говорится).
Да, я понимаю, естественно, что есть сторонники и ненавистники у всего нового, и у Раста в частности. И это правильно и нормально и так устроен мир и всё такое. Но! Информатика – это ведь не философия. Это наука вполне конкретная. Если есть сигнал, значит это единичка, и никак не нолик. И двух мнений тут быть не может. Это я к чему – к тому, что факты, которые товарищ Вересов упоминает в своём опусе – это именно что вполне конкретные факты, с которыми надо что-то делать. Последователям Раст надо как-то на них ответить. Например, если скомпилированный код получается слишком большой, то это либо факт, либо вымысел, двух мнений не может быть.
Конечно, возможно, автор чего-то не понимает, или вообще врёт. Он опасно молод (в 22 году окончил МГУ), так что кто его знает. По сему, хотел бы разобраться с теми отдельными негативными моментами, которые он высказывает в сторону Раста. А именно:
1. Макросы усложнили жизнь и принесли избыточность?
2. Типы указываются автоматически, но явное указание допустимо в тех случаях, когда автоопределение не срабатывает. Т. е. оно может не сработать? Но при этом по умолчанию тип не надо указывать… Если автоматика не идеальна, зачем делать её умолчальной?
3. Зачем сделана многопроходная компиляция, просто в угоду возможности объявить функцию после её вызова? И ради этого увеличивать время компиляции до нескольких часов? Не проще ли пролистать код в начало и вписать объявление туда?
4. Мы передаём в функцию значение, а потом не можем использовать его в основной программе? Серьёзно что ли? Ну это очень веская должна была быть причина, чтобы так сделать. Так это правда?
5. Про сборщик мусора – он всё-таки есть, и даже не один?
6. Раст – это параллелизм, прежде всего?
7. Получаемый после компиляции машинный код действительно больше, чем аналоггичный на плюсах? Ну т. е. это всегда так, или он просто пример такой подобрал? На 3 строки Раста 2779 строк Ассемблера! Если так, почему тогда Раст считается очень быстрым, что аж это его фишка?
8. Ну, про то, что сторонники Раста самые счастливые люди он ничего не объяснил. Каждый кулик своё болото хвалит. А вот как куликов сравнить объективно по уровню счастья – это уже сложнее.
В общем, если хотя бы половина из того, о чём он пишет, верно, то возникают серьёзные сомнения отностельно того, учить ли Раст.
P.S. Полезный, кстати, сайтик для себя открыл: Стрела Бога. Позволяет смотреть ассемблерное представление кода.