Как стать автором
Обновить

Rust для самых маленьких

Предупреждения:

1). Данный пост - моя первая кровь.

2). Данный пост предназначен для людей, плохо знакомых с ЯП-ами в принципе, оказавшимися на хабре случайно, ну или для тех, кто хочет поучить Rust и посмотреть на мои измышления.

3). Также, если будут какие-либо OS-specific штуки, всё будет представлено для линукса(если конкретнее - Linux Mint 19.3).

Кто готов прочитать это - добро пожаловать под кат(одолжим данное приветствие у старожилов :>)

Что такое "ЯП"?

Если говорить простыми словами, то представьте, что у вас есть автомобиль.

Хороший такой, любимый, вы им часто пользуетесь.

Но бац - и вдруг функционала автомобиля стало не хватать, хочется и кресло помягче, и мотор новый, и тонировку, и вторую пару фар и т.д..

Что делать?

Можно вызвать мастера, он сделает вам всё, что захотите. Но вы - человек гордый, или же сами хотите стать таким мастером. И тут вам приходится постигать азы "жонглирования" гаечными ключами, ковыряться в машине - словом, страшно.

Так вот, автомобиль - это компьютер, а инструменты - язык программирования или ЯП.

Если взять всё вышесказанное и выжать самую суть - ЯП - это инструмент для расширения функционала компьютера, в основном за счёт написания ПО(программного обеспечения).

И тут возникает вопрос - а что такое этот ваш "ЯП"? Ну, на самом деле, ЯП-ы это такое же ПО(т.е. одни ЯП-ы написаны на других ЯП-ах), а самих ЯП-ов - как ключей: ключ на 6, на 10, на 8 и т.д.. На данный момент их больше 5000, но популярны далеко не все. Ах да, забыл сказать, что же всё-таки это такое.

ЯП - это набор правил... Тьфу, в топку это определение из википедии. Простыми словами, ЯП - это как язык, как русский, английский, только понятный для компьютера.

Т.е. что-то вроде такого:

10101010111101011000111100010110

Бу, страшно)?

Не пугайтесь, это самый низкий уровень - машинный язык, который напрямую понятен компьютеру. Современные ЯП-ы очень похожи на простой английский текст, типа "take this stuff and do blah-blah". Ну, это утрированно, конечно.

Как это работает?

Вы пишете код программы в какой-то файл, затем скармливаете его компилятору, а затем запускаете. Просто? Нет. Но придётся разобраться.

Что такое компилятор?

Компилятор - некая программа, написанная тыщей умных дядек и тётек, которая читает ваш файл и переводит(компилирует) его в те страшные нолики и единички, что были выше. То есть, по факту ЯП-ы понятны не для компьютера, а для компилятора.

А теперь - хватит теории, даёшь практику!

Если вы пользуетесь Линуксом(а я напомню, что выше я уже говорил, что будет под Линукс), то у вас есть так называемый терминал. Если же у вас, например, Винда - айда гуглить как он там называется в Винде(cmd?) и открывается.

Кста, для Non-Linux - я буду описывать, что делает какая команда, так что можете гуглить по сути и переписывать под вашу ОС.

Так вот, на Линуксе есть терминал, который открывается сочетанием клавиш Ctrl + Alt + T. перед вами появится окошко, где можно что-то писать, например, команды.

Это - первый пример ЯП-а(это - это не терминал, а то, что в нём можно писать).

Попробуйте написать echo hello - вам выведется "hello". Выглядит как-то так:

Ура! Вы написали что-то и это сработало! Теперь вы программист!

...Кхем-кхем, простите эту "старческую" шутку. Скорее всего, сейчас вы сидите с непонимающим лицом и думаете "Что произошло? Что он вообще несёт?" Объясню.

То что вы сейчас написали - это называется команда. Терминал использует язык программирования, называемый Bash(если интересно, про баш можно прочитать здеся - https://ru.wikipedia.org/wiki/Bash)

Эта команда состоит из двух слов - "echo" и "hello".

Синтаксис баша таков, что первое слово - собственно команда, а всё остальное - аргументы. Тогда "echo" - это команда, а "hello" - аргумент.

Команда echo выводит на экран то, что ей передали, что мы сейчас и увидели - самая простая команда.

Таких команд - мириады, но конкретно сейчас нас интересует только парочка.

Команды

  • "sudo" - спец-команда, в качестве аргументов принимает другую команду и её аргументы и запускает их под root-правами(root-права - это когда без них ты ребёнок, которому нельзя пить алкоголь и водить машину, а с ними - можно, т.е. они наделяют тебя возможностью делать на компьютере то, что ты не мог делать раньше). Для использования нужно ввести пароль вашего пользователя, т.е. если вы - user123 и пароль, соответственно, 1234, то "sudo echo hello" потребует пароль, и если он правильный, то выведет "hello". В данном примере использование sudo ненужно, но есть команды, которые без root-прав не работают.

  • "apt" - та самая команда, которой нужны рут-права. Она отвечает за установку пакетов(в большинстве случаев под 'пакетом' подразумевают "ПО", но не всегда). Синтаксис примерно такой - "sudo apt install <имя пакета>". Обратите внимание - install - это подкоманда команды apt, коих довольно много.

Пока что всё, но в дальнейшем будут ещё команды.

Фууух, слишком много информации, постарайтесь её переварить.

Я подожду.

Подожду.

Подожду...

Итак, теперь(наконец-то) можно приступать к Rust. Rust - это тоже ЯП(кстати, мой самый любимый :>, но не нужно спорить какой ЯП лучший, они все решают разные задачи).

Чтобы вы могли программировать на Расте, сначала нужно выполнить команду "sudo apt install cargo". Данная команда добавила ещё одну команду, которую можно использовать - cargo.

Cargo

Cargo - это пакетный менеджер раста, т.е. если Вася написал что-то полезное, то Петя сможет использовать Васину программу через Cargo.

Давайте начнём изучение с очень простого проекта - hello-world-а. Данная программа будет выводить в терминал(далее консоль) текст "Hello, world!"(Это давняя традиция программистов - начинать изучение нового языка через helloworld).

Исполните команду "cargo new hello-world".

Давайте разберём, что сейчас произошло.

cargo - это команда, реализующая обращение к пакетному менеджеру Cargo.

new - это подкоманда команды cargo, отвечающая за создание новых проектов.

hello-world - это имя нашего проекта.

Данная команда создала папку hello-world, внутри которой есть файл Cargo.toml и папка src, в которой, в свою очередь, лежит файл main.rs.

Давайте разберём(если устали, отойдите от компа на пару минут, отдохните и переварите всё прочитанное).

Папка hello-world - это корневая папка нашего проекта, или, если использовать терминологию раста, "крэйт"(crate), здесь будет содержаться весь код проекта.

Cargo.toml - это конфигурационный файл проекта, давайте разберём и его!

Вот как он выглядит:

Итак, [package] - это секция(секцией считается всё, что начинается с имени секции в квадратных скобках и до начала следующей секции), отвечающая за базовые параметры проекта, как то:

  • name - это имя проекта(да, оно может не совпадать с именем папки, но лучше так не делать).

  • version - это версия проекта(вы отвечаете за её изменения, а не cargo)

  • authors - это авторы проекта(в данном случае, это только я)

  • edition - это версия раста(просто оставьте самую новую)

Далее, всё, что начинается с символа #, считается комментарием и никак не влияет на содержимое.

[dependencies] - это список используемых библиотек(библиотека - это чужой код, написанный другими людьми для того, чтобы легче было писать твой код).

Это, кстати, был ещё не раст, а только "томл"(TOML) :)

А вот теперь..

Раст

Ура, спустя 100500 лет мы наконец-то приступаем к расту! Зайдите в папку src и откройте... Ах да. Можно писать код и в блокноте, но профессиональные программисты используют IDE - специальные окружения, чтобы было удобно кодить. Терминал, кста, тоже в некотором роде окружение.

Лично я использую для кодинга на расте программу PyCharm Community от JetBrains + Rust plugin для PyCharm Community, но неплох также и Sublime text + Rust plugin (опустим то, как скачивать и устанавливать эти программы, это спокойно можно найти в интернете).

Так вот. Откройте файл hello-world/src/main.rs в понравившейся вам IDE-шке и - о чудо - мы видим вот такой код:

fn main() {
    println!("Hello, world!");
}

Теперь нам понадобится ещё одна команда в терминале - cd.

cd заходит в папку, указанную как аргумент.

Вот пример - заходим в папку проекта:

Теперь, находясь в этой папке, попробуйте запустить команду "cargo run" - это скомпилирует и запустит вашу программу. Вам должно вывести "Hello, world!"

Поздравляю! Вы запустили проект, но не понимаете, как он работает! (На самом деле, я просто устал писать, так что все объяснения будут в следующей статье).

Если хотите, чтобы следующая статья вышла, поддержите данный пост лайками!

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.