Учимся программировать на Rust на базе Debian sid
programming
Rust — это современный, эффективный, продвинутый и модный язык программирования. Последнее время он практически на равных конкурирует по эффективности и быстродействию разработанных на нём программ с такими "мастодонтами" отрасли, как языки программирования C и C++. Написанные на Rust программы перед исполнением необходимо компилировать, и поэтому я обходил его стороной до недавнего времени. Когда у вас в хозяйстве есть только AMD e1 — усталая, закостенелая черепашка в корпусе морально устаревшего лэптопа Acer, поверьте мне, вам будет не до Rust... Но всё меняется. У меня появился новый инструмент, аппаратные ресурсы которого вполне позволяют заняться изучением нового для меня языка программирования. А почему нет? Короче.., в этом выпуске своего программерского блога я расскажу, как подготовиться к изучению Rust и сделать с ним свои первые шаги на базе операционной системы Debian sid...
Почему Debian sid
Debian sid наилучшим образом подходит для разработки всего нового. В нём всегда свежие инстументы и библиотеки. Кроме всего прочего, с Debian sid вам не нужно следить за версиями установленных программ, вы просто делаете регулярный full-upgrade с помощью apt и ни о чём больше не заботитесь, это удобно.
Что касается Rust... В Debian sid есть всё необходимое для изучения этого языка программирования и разработки на нём собственных авторских решений, в том числе девелоперские библиотеки почти на все на многие случаи жизни. И всё это великолепие становится доступным после весьма несложных манипуляций с пакетным менеджером и сразу после установки и распаковки соответствующих задаче пакетов.
C Debian sid я учился программировать на Python, JavaScript Client Side. И с Rust на Debian sid мне будет комфортно, я в этом практически уверен.
Установка Rust в систему Debian sid
Rust — это сранительно молодой обитатель программерского мира, но он уже имеет достаточно обширную аудиторию и активную команду разработчиков и исследователей. Инструменты Rust достаточно часто обновляются, а их прежние версии довольно быстро устаревают. В этом есть и плюсы, и минусы.
Как известно, сообщество Debian отличается от других сообществ своим здоровым консерватизмом. При этом цикл разработки каждой последующей стабильной версии операционной системы растянут на два долгих года. Команда разработчиков Rust обновляет свой продукт намного чаще, и поэтому, используя стабильную ветку Debian, вы вряд ли угонитесь за частой сменой релизов Rust. С Debian sid эта характерная особенность нивелируется простым и регулярным apt full-upgrade.
Поскольку конечным продуктом сообщества Debian является дистрибутив операционной системы и сетевое хранилище пакетов, сообщество действует дистрибутивно и аккуратно собирает пакеты каждого нового релиза Rust. На это уходит определённое время, в связи с чем дистрибутивный релиз в сетевом хранилище Debian sid слегка отстаёт от свежего стабильного релиза Rust. Но есть хорошая новость... В Debian sid предусмотрено два способа установки инструментов Rust в систему:
-
Посредством установки пакетов из сетевого хранилища Debian sid пакетным менеджером apt;
-
Посредством установки пакетов из сетевого хранилища Rust пакетным менеджером rustup.
Сейчас я продемонстрирую оба способа конкретными командами и снимками экрана штатного терминала Debian sid, в котором эти команды исполню.
Установка Rust пакетным менеджером apt
Сетевое хранилище Debian sid в своём составе имеет следующие инструменты Rust:
-
cargo — система сборки написанных на языке программирования Rust программ;
-
rustc — компилятор Rust;
-
прикладные динамические библиотеки для решения типовых и повторяющихся задач.
Поскольку в рамках этого топика я говорю о первых шагах, и рассматриваю саму возможность изучения языка программирования в домашних условия, прикладные динамические библиотеки я пока оставлю в покое, до них время пока не дошло. А cargo и rustc являются искомыми, неободимыми и достаточными на начальном этапе изучения инструментами.
Установить cargo в Debian sid можно следующей командой.
$ sudo apt install cargo
Предлагаю вам взглянуть на выхлоп этой команды в моём терминале, вот как он выглядит, внимание на следующий снимок экрана.
Как видно на снимке экрана, установкой cargo пакетный менеджер apt подтягивает по зависимостям несколько прикладных библиотек и, собственно, сам компилятор — rustc. На начальном этапе изучения этого будет вполне достаточно. Жму enter
и дожидаюсь завершения процесса установки всех запрошенных пакетов.
Давайте посмотрим на версии только что установленных пакетов, меня конечно же интересуют cargo и rustc.
Как мы видим, версия обоих инструментов (1.85.0
) в хранилище Debian sid слегка отстаёт от официальной стабильной версии в хранилище сообщества Rust. На мой взгляд это отставание для начального этапа изучения языка программирования не является критичным, при этом версии инструментов будут поступательно обновляться с каждым выполненным apt full-upgrade, но всё равно с приличным отставанием. Конечно же, если категорически хочется быть на острие атаки, никто не помешает...
Установка Rust пакетным менеджером rustup
На официальном сайте сообщества Rust установку набора инструментов этого языка программирования рекомендуют выполнять при помощи rustup — специализированного менеджера для установки и обновления так называемого toolchain-а Rust.
Сообщество Debian предусмотрело и такой метод установки, при этом rustup можно не искать где-то ещё, а установить прям из официального хранилища Debian при помощи всё того же, всемогущего apt.
$ sudo apt install rustup
Мы помним, что я только что установил cargo и rustc из сетевого хранилища Debian. Так вот, при установке rustup эти только что установленные пакеты будут удалены. Вот как выглядит выхлоп команды в моём терминале, внимание на следующий снимок экрана.
Опять жму enter
и дожидаюсь завершения процесса установки и удаления всех запрошенных пакетов. И сразу после этого у меня появляется возможность установить в систему текущий стабильный релиз toolchain-а Rust из официального сетевого хранилища команды разработчиков Rust. Делается это следующей, довольно простой командой.
$ rustup default stable
Здесь следует иметь ввиду, что весь этот toolchain установлен в домашний каталог текущего пользователя, в его вложенный каталог с именем .rustup
. Тем не менее, ссылки на исполняемые файлы уже прописаны в соответствующих каталогах переменной окружения PATH
, и доступ к только что установленным утилитам можно получить без указания абсолютного адреса. Давайте взглянем на версии установленных инструментов.
Как видно на снимке экрана выше, 1.87.0
является текущей стабильной версией популярного языка программирования Rust. Увы, но такой способ установки предлагает пользователю самостоятельно обновлять установленный таким образом toolchain Rust.
Методология изучения программирования, делюсь опытом
Rust — не первый язык программирования, с которым мне придётся иметь дело в событийном ряде ближайших нескольких месяцев. И для изучения программирования у меня выработана собственная методология.
Процесс программирования, если смотреть на него более пристально, в основе своей раскрывается как набор текста — кода программы, тестирование этого набранного кода и, по результатам тестирования, редактирование этого кода — отладка. Сам по себе код является слегка запутанным англоязычным текстом со строго определённым синтаксисом. Все современные и популярные языки программирования являются производными от английского языка. Отсюда можно сделать вывод, что программируя, вам придётся набирать и править англоязычный текст. А это значит, что навык ритмичной работы с клавиатурой без опечаток является основополагающим. И слепой десятипальцевый набор текста не помешает, по-крайней мере с ним вырабатывается правильная моторика и навык писать код, не задумываясь о его синтаксических конструкциях.
Программируя, текст придётся набирать на английском языке. Более того, программируя, очень часто придётся обращаться к справочной литературе, которая, вся, будет на английском языке. И уже это, в свою очередь, значит, что умение обращаться с английским языком (в основном беглое чтение без словаря) будет вторым основополагающим навыком.
А теперь вспоминаем школу... Как нас учили родному языку? Чтение. Мы много читали, нам много читали. Письмо. Мы писали сначала диктанты, потом изложения, и вишенкой на торте были школьные сочинения. Проецируем на программирование. Чтобы вникнуть в суть науки на начальном этапе следует:
-
читать и детально разбирать чужой код, в основном это будет код из учебника по выбранному языку программирования;
-
набирать чужой код в текстовом редакторе собственными пальчиками, допуская ошибки и делая опечатки;
-
компилировать набранный собственноручно код, обращая внимание на допущенные ошибки, исправляя их в процессе отладки и устраняя все сделанные компилятором (или интерпретатором) отчёты об ошибках.
Как правило, за начальным этапом что-то следует или не следует ничего. В рамках этого повествования я нахожусь на начальном этапе изучения Rust, поэтому...
У меня есть учебник по Rust в электронной форме — файл pdf-формата. Открываю его в соответствующей программе и окно этой программы ставлю в правую часть экрана, разворачивая примерно на половину ширины рабочего стола. Начинаю вдумчиво читать этот учебник детально визуализируя в своём воображении изложенное в нём повествование. В учебниках по языкам программирования авторы обычно делают вставки кода, описывая на примере ту или иную концепцию. Как только встречаю в тексте код, запускаю текстовый редактор, открываю в нём файл с заданным расширением и собственными пальчиками аккуратно перепечатываю этот код в окно текстового редактора. Вот как это выглядит на рабочем столе моей операционной системы.
В данном случае автор учебника предложил код с заведомыми ошибками и неточностями, дабы продемонстрировать реакцию программы-компилятора Rust на эти ошибки и неточности. Более того, в тексте учебника показан вероятный выхлоп компилятора. Поскольку код я набрал своими пальчиками, комплятор Rust у меня уже есть, ни одна полиция не запретит мне этот код попытаться скомпилировать и прочесть все сообщения компилятора. Собственно для этого я обычно открываю терминал в ещё одном соседнем окне и в нём запускаю процесс компиляции. Вот как это выглядит обычно на моём рабочем столе.
Как видно на снимке экрана, компилятор обильно и красочно отругал предложенную ему программу. И моя основная задача — исправить все допущенные в коде ошибки и опечатки, а затем запустить процесс компиляции снова. Всё это я обычно делаю в бесконечной последовательности итераций до полного устранения всех ошибок. Как только программа скомпилировалась, иду читать учебник дальше, до объяснения следующей концепции и следующего листинга с кодом. И процесс повторяется снова и снова.
Подводим итоги
Последнее время многие представители поколения next предпочитают учиться по видео роликам. Я не знаю... Нужно ли так делать. Для меня лучшим подарком всегда была книга.
Учебник по языку программирования лучше выбирать англоязычный. Англоязычные учебники лишены внесённых переводчиком неточностей. Переводчики обычно плохо разбираются в программировании и при переводе затаскиваю в текст собственные заблуждения, искажая ваш визуальный ряд при чтении. Чтение англоязычного учебника само по себе совершенствует навыки работы с английским текстом, а они являются основополагающими при программировании.
Программируя, вам придётся очень много набирать англоязычный текст, иногда этот текст рождается из прочитанных в документации фрагментов, иногда он бывает плодом вашего собственного воображения, иногда его диктует вам непознанная потусторонняя сущность — так тоже бывает. Набирать текст лучше всего эффективными методами, не глядя при этом на клавиатуру. Такой способ набора кода формирует у начинающего программиста правильную моторику и даёт возможность той сущности войти... Не торопитесь крутить пальцем у виска, попробуйте прислушаться к рекомендации.
И это всё, чем я хотел поделиться на текущий момент времени.