Да, да, все это чепуха, но это весело и имеет какую — то корреляцию с чем-то, и если вы поклонник Rust, рассчитывайте на меня, вы можете использовать его, чтобы запугивать других-Rust находится в двадцати лучших языках TIOBE!
В этом месяце вышел индекс TIOBE, и мы не собирались писать об этом в новостях, потому что на первый взгляд это скучно. Тройка лидеров, C, Java и Python, по-прежнему входят в тройку лидеров, но C отодвинул Java с первого места. Это лишь незначительно интересно, поскольку они настолько близки, что статистическая вариация вызовет такие свопы. Но если вы посмотрите на нижнюю часть таблицы, вы увидите новую запись — Ржавчина в позиции 20 по сравнению с 38.
Имейте в виду, что в абсолютном выражении награда не так уж велика — в 19 лет это классический Visual Basic, в 18-Scratch, который, как мы сообщали, снова вошел в топ-20 в апреле, а в 17-PL/SQL. Вряд ли существуют основные языки общего назначения. Вы можете видеть странный прогресс Ржавчины за десять лет:
Что вызвало пик и крах 2017 года?
Значит, ржавчина, похоже, вернулась на прежнее место? Не совсем, мы все, кажется, много вложили в ржавчину в эти дни. Люди, которые не знают языка, иногда будут ссылаться на него как на единственный способ написания безопасного кода. Конечно, это не единственный способ написать безопасный код, и даже если вы знаете и используете Rust, это не гарантирует, что ваш код будет безопасным. Это гарантия того, что вы будете тратить время на борьбу с правилами владения Rust, пока не узнаете, как правильно думать об этом.
Это трудно. Проблемы собственности могут со временем улучшиться, но в данный момент то, что не улучшается, — это прорывные изменения. Даже по прошествии десяти лет Ржавчина все еще не успокоилась настолько, чтобы вы могли чувствовать себя в безопасности, выбирая ее для производства — если только вы не были готовы приложить дополнительные усилия.
Так почему же вера в Ржавчину?
Ответ в основном сводится к языку номер один C. Это очень простой язык, и в то же время в нем очень легко совершать ошибки, требующие сложных решений. Например, мой любимый, потому что я так часто его вижу, — это:
структура MyStruct { int номер;};
struct MyStruct *pStruct(void) { struct MyStruct st; return &st;}
Эффект этого невинно выглядящего кода заключается в том, что у любого опытного программиста на языке Си волосы встают дыбом на затылке. Продвинутый новичок не видит ничего плохого — создайте структуру, верните указатель на структуру. Немного продвинулись в том, что мы работаем с указателями, адресами операторов и так далее — но совершенно учебник. За исключением, конечно, того, что все это происходит в функции и когда вы пишете:
struct MyStruct *ps = pStruct();
в основной программе вы получите предупреждение, и причина в том, что функция возвращает указатель на локальную структуру, которая, конечно, больше не существует, когда функция приходит. Ошибка проста и понятна программисту — посреднику, создавшему проблему, но решение включает в себя использование расширенного материала кучи. В C вы можете создавать проблемы с тем, что вы знаете, для решения которых требуется больше, чем то, что вы знаете.
С прост в принципе, сложен и утончен в применении. Ржавчина не особенно проста в принципе или применении, но, как правило, если вы понимаете ее достаточно хорошо, чтобы вызвать проблему, вы знаете достаточно, чтобы реализовать решение.
В настоящее время нам действительно нужно что-то вроде ржавчины в разработке программирования, и она уже прошла стадию восторженного принятия, и теперь она выходит с другой стороны с людьми, пишущими сообщения в блогах, которые говорят такие вещи, как «Ржавчина-это не ответ».
Я не знаю, является ли Ржавчина ответом или нет. Я даже не уверен, что точно знаю, в чем заключается вопрос, но я рад, что мой любимый язык — при всех его болевых точках — номер один, а мой второй любимый язык, при всех его болевых точках, наконец — то вошел в двадцатку лучших.
Гарри Фэрхед-автор книги «Фундаментальный Си», в которой он подробно рассматривает Си для использования в любом близком к аппаратному контексте. Его другие книги включают Raspberry Pi IoT в C, Micro:bit IoT в C и, Применяя C Для Интернета вещей с Linux-это книга, которая вам нужна, если вы программируете для одноплатных компьютеров, работающих под управлением Linux, или если вы выполняете какое-либо кодирование на C, которое взаимодействует с оборудованием.