Справочник ключевых терминов курса Ступень 0: Основы.
Окно, в котором ты разговариваешь с компьютером текстом: набираешь команду, жмёшь Enter, получаешь ответ. Никаких кнопок и иконок -- только строки. Звучит сурово, но на деле это просто чат с компьютером, где у каждой фразы есть точное значение. На macOS это программа Terminal или iTerm, на Windows -- Windows Terminal с WSL2, на Linux -- GNOME Terminal или Konsole. Сам терминал -- это лишь окно; внутри него работает оболочка (shell), которая и понимает команды.
# Так выглядит работа в терминале:
pwd # компьютер отвечает: /home/lev
ls # компьютер отвечает: список файловСпособ управлять компьютером через текстовые команды, а не мышкой. CLI -- это противоположность GUI (окошки и кнопки). Кажется, что мышкой проще, но текстом ты можешь точно сказать, что сделать, повторить это сто раз и записать в файл, чтобы не набирать заново. Почти все инструменты разработчика управляются именно через CLI.
# GUI: открыть папку двойным кликом
# CLI: сделать то же командой
cd DocumentsПривычный способ работы с компьютером: окна, кнопки, иконки, мышка. Всё, что ты видел до сих пор -- браузер, проводник, рабочий стол -- это GUI. Удобно для человека, но компьютеру проще и точнее давать команды текстом. В этом курсе мы как раз учимся не бояться текстового способа.
# GUI -- это иконки и окна
# В терминале их нет, только текстСлово, которое ты набираешь в терминале, чтобы компьютер что-то сделал. Первое слово в строке -- это и есть команда (имя программы), всё остальное -- уточнения к ней. Например, ls -- команда показать содержимое папки, cd -- перейти в папку. Команда -- как глагол: говорит, какое действие выполнить.
ls # команда: покажи файлы
cd Documents # команда cd с уточнением 'куда'
mkdir test # команда: создай папку testТо, над чем работает команда -- обычно имя файла или папки, которое ты пишешь после самой команды через пробел. Если команда -- это глагол ('создай'), то аргумент -- это дополнение ('что создать'). У команды может не быть аргументов, а может быть несколько.
mkdir photos # photos -- аргумент (что создать)
cd Documents # Documents -- аргумент (куда перейти)
ls # без аргументов -- покажет текущую папкуМаленькая настройка команды, которая меняет, как именно она работает. Флаги обычно начинаются с дефиса (-l) или двух дефисов (--help). Это как галочки в настройках: ls покажет файлы, а ls -l покажет их же, но подробным списком с датами и размерами. Флаги можно совмещать.
ls # просто список
ls -l # подробный список (флаг -l)
ls -a # показать и скрытые файлы (флаг -a)
ls -la # оба флага сразуТекст, который терминал показывает в начале строки перед тем, как ждёт твою команду -- например, lev@macbook ~ $ или просто значок $. Это значит 'я готов, набирай команду'. Часто prompt показывает твоё имя, имя компьютера и текущую папку. Не пугайся, если он выглядит у тебя иначе -- это всего лишь приглашение к вводу.
lev@macbook ~ % ls
# ^ вот здесь заканчивается prompt
# и начинается твоя командаПрограмма внутри терминала, которая читает твои команды и заставляет компьютер их выполнять. Терминал -- это окно, а shell -- это тот, кто реально слушает и понимает команды. Самые частые оболочки: bash и zsh. Аналогия: терминал -- это телефонная трубка, а shell -- человек на том конце, который понимает, что ты говоришь.
echo $SHELL # узнать свою оболочку
# /bin/zsh <- значит у тебя zsh
# /bin/bash <- значит у тебя bashДва самых популярных вида оболочки (shell). bash -- классическая, годами стояла по умолчанию в Linux и старых macOS. zsh -- более новая и удобная, сейчас по умолчанию в macOS. Для новичка разница почти не видна: команды pwd, ls, cd работают одинаково в обеих. Просто знай, что это разные 'диалекты' одного языка.
echo $0 # часто показывает имя оболочки
# -zsh или bashКоманда, которая отвечает на вопрос 'а где я сейчас нахожусь?'. В терминале ты всегда находишься в какой-то одной папке, и легко забыть, в какой именно. pwd печатает полный путь до текущей папки. Это первая команда, которую стоит набрать, если запутался.
pwd
# /Users/lev/Documents
# значит сейчас ты в папке DocumentsКоманда показать, что лежит в текущей папке -- файлы и вложенные папки. Аналог того, как ты открываешь папку в проводнике и видишь её содержимое. По умолчанию скрытые файлы (начинающиеся с точки) не показываются -- для них нужен флаг -a.
ls # что в этой папке
ls -l # подробно: размер, дата
ls Documents # что в папке DocumentsКоманда перейти в другую папку -- как двойной клик по папке в проводнике, только текстом. cd Documents войдёт в папку Documents, cd .. поднимется на уровень выше, cd ~ вернёт тебя в домашнюю папку, а cd без аргументов -- тоже домой.
cd Documents # войти в Documents
cd .. # на уровень выше
cd ~ # домой
cd / # в самый корень дискаКоманда создать новую папку. mkdir photos создаст папку photos в том месте, где ты сейчас находишься. Это то же самое, что 'правой кнопкой -> новая папка', только командой. Имя папки лучше писать без пробелов и кириллицы, пока не разберёшься.
mkdir projects # создать папку projects
mkdir my-first-app # дефис вместо пробелаВстроенная инструкция к командам. man ls откроет руководство по команде ls: что она делает и какие у неё флаги. Выглядит как длинный текст; листать стрелками или пробелом, выйти -- клавишей q. Полезно, когда забыл, что делает флаг. Для современных команд часто проще набрать команду с --help.
man ls # руководство по ls
# листать: стрелки или пробел
# выйти: нажать q
ls --help # короткая справка (часто удобнее)Приставка перед командой, которая говорит 'выполни это от имени администратора (с полными правами)'. Нужна, когда обычных прав не хватает -- например, при установке программ. Компьютер попросит пароль (и не покажет звёздочки при наборе -- это нормально). Использовать с осторожностью: с правами администратора легко что-нибудь сломать, поэтому добавляй sudo только когда реально просят.
sudo apt install python3 # установить с правами админа
# [sudo] password for lev: <- введи пароль вслепую
# символы при вводе пароля не отображаются -- это нормаЕдиница хранения информации с именем: документ, картинка, песня, кусок кода. Всё, что ты сохраняешь на компьютере, -- это файлы. У файла обычно есть имя и расширение (notes.txt), по которому компьютер понимает, какого он типа.
# Примеры файлов:
# report.pdf -- документ
# photo.jpg -- картинка
# script.py -- код на PythonКонтейнер, в котором лежат файлы и другие папки. Папка и директория -- это одно и то же слово: 'папка' -- бытовое, 'директория' -- то же самое на языке программистов. Папки можно вкладывать друг в друга, образуя дерево -- как ящики внутри ящиков.
ls Documents # посмотреть, что в папке Documents
mkdir new # создать папку newЧасть имени файла после последней точки: .txt, .jpg, .py, .pdf. По расширению компьютер понимает, чем открывать файл и что в нём -- текст, картинка или код. Например, .py -- это файл с кодом на Python. Расширение -- это не сам тип файла, а скорее подсказка-этикетка, но менять его наугад не стоит.
# notes.txt -> расширение .txt (текст)
# cat.jpg -> расширение .jpg (картинка)
# main.py -> расширение .py (код Python)Адрес файла или папки на компьютере -- последовательность папок, через которые до него добраться, разделённых слешами. Как почтовый адрес: страна / город / улица / дом. На macOS и Linux разделитель -- /, на Windows -- обратный \. Зная путь, и ты, и компьютер точно знаете, где лежит нужный файл.
/Users/lev/Documents/report.pdf
# ^папки по порядку^ ^файлПолный адрес файла от самого начала диска (от корня /). Он работает откуда угодно, потому что описывает дорогу с нуля. Аналогия: полный почтовый адрес со страной и городом -- по нему найдут письмо из любой точки. Абсолютный путь всегда начинается со слеша / (или с буквы диска на Windows).
/Users/lev/Documents/report.pdf # macOS/Linux
C:\Users\lev\Documents\report.pdf # Windows
# начинается от корня -- работает откуда угодноАдрес файла относительно папки, в которой ты сейчас находишься. Он короче, но работает только из конкретного места. Аналогия: 'второй поворот направо' -- понятно, только если знаешь, откуда идёшь. Относительный путь НЕ начинается со слеша.
# Ты в /Users/lev
ls Documents/report.pdf # относительный -- от текущей папки
cd ../Downloads # подняться и зайти в DownloadsТвоя личная папка, где по умолчанию лежат документы, загрузки, рабочий стол и настройки. У каждого пользователя своя. В терминале её коротко обозначают значком ~ (тильда). cd ~ всегда вернёт тебя домой -- удобная отправная точка, если запутался в папках.
cd ~ # перейти домой
ls ~ # что в домашней папке
echo ~ # /Users/lev (или /home/lev)Папка, в которой ты находишься прямо сейчас в терминале. Все относительные команды отсчитываются от неё. В путях текущая папка обозначается одной точкой . -- например, ./script.py значит 'файл script.py здесь же'. Узнать, где ты, можно командой pwd.
pwd # узнать текущую папку
./run.sh # запустить файл из текущей папки
ls . # то же, что просто lsПапка на один уровень выше текущей -- та, внутри которой лежит твоя папка. В путях обозначается двумя точками .. -- например, cd .. поднимает тебя 'наверх'. Это как нажать стрелку 'назад' в проводнике. Можно нанизывать: ../.. поднимет на два уровня.
cd .. # на уровень выше
cd ../.. # на два уровня выше
ls ../photos # папка photos рядом с текущейГлавная программа компьютера, которая управляет всем остальным: запускает приложения, хранит файлы, общается с экраном, мышкой и интернетом. Без неё компьютер -- просто железо. Самые известные: macOS, Windows, Linux. Это как администратор здания, который раздаёт ключи и следит за порядком.
# Популярные ОС:
# macOS -- на ноутбуках Apple
# Windows -- на большинстве ПК
# Linux -- на серверах и у разработчиковМозг компьютера: то, что выполняет все вычисления и команды. Чем он быстрее, тем шустрее работают программы. Процессор делает огромное число простых действий в секунду -- сам по себе глупый, но очень быстрый исполнитель. Когда программа 'думает', работает именно CPU.
# CPU выполняет команды программы
# 2 + 2, открыть файл, нарисовать пиксель --
# всё это считает процессорБыстрая, но временная память, где компьютер держит то, с чем работает прямо сейчас: открытые программы и файлы. Очень быстрая, но при выключении всё стирается. Аналогия: рабочий стол -- на нём удобно держать бумаги, пока работаешь, но в конце дня их убирают. Чем больше RAM, тем больше задач одновременно.
# 8 ГБ, 16 ГБ RAM -- сколько влезает
# открытых программ одновременно.
# Выключил компьютер -- RAM очистилась.Постоянная память, где файлы хранятся даже после выключения: фотографии, документы, программы. Медленнее, чем RAM, зато ничего не теряется. Аналогия: шкаф с папками -- что туда положил, то и останется. SSD -- современный быстрый тип диска, HDD -- старый, с крутящимися пластинами.
# На диске лежат твои файлы навсегда
# (пока сам не удалишь).
# 256 ГБ, 512 ГБ, 1 ТБ -- объём диска.Настройка, которую компьютер держит в памяти, чтобы программы могли её прочитать -- например, кто ты, где твоя домашняя папка, где искать программы. У переменных есть имя и значение. Аналогия: записки на холодильнике, которые видят все программы. Самая важная для новичка -- PATH.
echo $HOME # покажет домашнюю папку
echo $PATH # где искать программы
printenv # показать все переменныеОсобая переменная окружения -- список папок, в которых компьютер ищет программы, когда ты набираешь команду. Набрал python -- компьютер по очереди заглядывает в папки из PATH, пока не найдёт. Если программа установлена, но 'не находится', чаще всего её папки просто нет в PATH. Это причина большинства ошибок command not found.
echo $PATH
# /usr/local/bin:/usr/bin:/bin
# компьютер ищет команды в этих папках по порядкуНабор инструкций, которые компьютер выполняет, чтобы что-то сделать: браузер, калькулятор, игра -- всё это программы. Программу пишет человек на языке программирования, а компьютер её исполняет. Аналогия: рецепт, по которому повар (компьютер) готовит блюдо. В этом курсе ты напишешь свою первую крошечную программу.
# Программа -- это последовательность шагов:
# 1. спроси имя
# 2. поздоровайся
# Компьютер выполнит их по порядку.Текст программы, написанный на языке программирования. Это обычные слова и символы, которые понимает и человек, и (после перевода) компьютер. Код пишут в текстовом редакторе и сохраняют в файл. Не магия -- просто инструкции, записанные по строгим правилам.
print("Привет!") # это строка кода на Python
# говорит компьютеру: выведи на экран словоЯзык, на котором человек пишет инструкции для компьютера. Как и у людей, языков много -- Python, JavaScript, Rust -- у каждого свои правила и сильные стороны. Компьютер не понимает человеческую речь напрямую, поэтому мы пишем на специальном строгом языке, который потом переводится в понятные машине команды.
# Одна и та же мысль 'выведи Привет':
# Python: print("Привет")
# JavaScript: console.log("Привет")Популярный язык программирования, который специально создан, чтобы быть понятным человеку: код читается почти как английский текст. С него удобно начинать -- меньше скобок и непонятных символов, чем в других языках. На нём пишут сайты, обрабатывают данные, делают ботов и нейросети. В этом курсе твой первый код будет на Python.
name = "Лев"
print("Привет, " + name)
# Привет, ЛевПрограмма-переводчик, которая берёт твой код на Python и тут же выполняет его построчно, объясняя компьютеру, что делать. Когда ты ставишь Python, ты ставишь именно интерпретатор. Аналогия: синхронный переводчик, который слушает тебя по фразе и сразу пересказывает собеседнику.
python3 hello.py # интерпретатор читает файл
# и выполняет код строчка за строчкойРежим, в котором ты набираешь одну строчку кода, жмёшь Enter и сразу видишь результат -- удобно пробовать и играться. Расшифровка: Read-Eval-Print Loop (прочитал -- выполнил -- показал -- повторил). Аналогия: калькулятор для кода. Запускается командой python3 без имени файла.
python3
>>> 2 + 2
4
>>> print("привет")
привет
>>> exit() # выйти из REPLФайл с кодом, который можно запустить целиком, а не строчку за строчкой. В отличие от REPL, скрипт сохраняется и его можно запускать сколько угодно раз. Обычно у файла-скрипта на Python расширение .py. Аналогия: записанный рецепт, по которому можно готовить снова и снова.
# файл hello.py:
print("Привет из скрипта!")
# запустить в терминале:
python3 hello.pyПрограмма для написания и правки текста и кода -- без оформления, шрифтов и картинок, в отличие от Word. Код пишут именно в текстовом редакторе, потому что компьютеру нужен чистый текст. Простые редакторы -- Блокнот, TextEdit; для кода удобнее VS Code.
# Word добавляет невидимое оформление --
# для кода НЕ годится.
# Текстовый редактор хранит чистый текст.Прокачанный текстовый редактор со встроенными помощниками: подсветка кода, подсказки, кнопка 'запустить', поиск ошибок. IDE расшифровывается как Integrated Development Environment -- интегрированная среда разработки. Аналогия: кухня, где под рукой сразу и плита, и нож, и доска, а не просто стол.
# В IDE одной кнопкой:
# - запустить код
# - увидеть ошибку с подсказкой
# - автодополнить командуБесплатный и самый популярный редактор кода от Microsoft, который работает на macOS, Windows и Linux. По сути -- лёгкая IDE: подсветка, подсказки, встроенный терминал, тысячи дополнений. Хороший выбор для первого редактора: им пользуются и новички, и профессионалы.
# Открыть папку проекта в VS Code из терминала:
code my-project
# (если команда code настроена)Программа, которая запоминает историю изменений твоих файлов -- как машина времени для кода. С ней можно вернуться к любой прошлой версии и не бояться что-то сломать. Почти все программисты пользуются git каждый день. В этом курсе мы только устанавливаем git; работать с ним глубоко научит отдельный курс.
git --version # проверить, что git установлен
# git version 2.43.0Папка проекта, за которой следит git и хранит всю историю её изменений. Коротко -- 'репо'. Внутри обычные файлы плюс скрытая папка .git, где git держит историю. Репозиторий может жить у тебя на компьютере или на сайте вроде GitHub, где им можно делиться.
# Папка проекта + скрытая .git внутри
# = репозиторий.
ls -a # увидишь папку .gitПрограмма, которая упаковывает другое приложение вместе со всем, что ему нужно для работы, в изолированную коробку -- контейнер. Так программа одинаково запускается на любом компьютере, не засоряя его. Аналогия: готовый набор-конструктор в коробке -- открыл и работает, не надо ничего докупать. Для новичка Docker может подождать, но поставить его полезно заранее.
docker --version # проверить установку
docker run hello-world # первый запуск контейнераЗапущенная программа внутри изолированной 'коробки' Docker: у неё свои файлы и настройки, и она не мешает остальному компьютеру. Контейнер можно запустить, остановить и удалить, не оставляя следов. Аналогия: отдельная комната, где гость живёт со своими вещами и не трогает твою квартиру.
docker run nginx # запустить контейнер
docker ps # какие контейнеры работают сейчас
docker stop <id> # остановить контейнерГотовый шаблон, из которого Docker создаёт контейнеры -- замороженный 'слепок' программы со всеми её файлами. Из одного образа можно запустить много одинаковых контейнеров. Аналогия: форма для печенья (образ) и сами печеньки (контейнеры).
docker pull python # скачать образ
docker images # какие образы есть локально
docker run python # создать контейнер из образаПроцесс добавления новой программы на компьютер так, чтобы ею можно было пользоваться. Установка скачивает файлы программы и кладёт их в нужные папки, иногда прописывая её в PATH. После установки программу обычно можно вызвать командой по имени.
# После установки Python его можно вызвать:
python3 --version
# Python 3.12.0Номер выпуска программы, который говорит, насколько она новая: например, Python 3.12 новее, чем 3.10. Версии важны, потому что инструкции и код иногда работают только с определёнными версиями. Почти любую программу можно спросить о её версии флагом --version.
python3 --version # Python 3.12.0
git --version # git version 2.43.0
docker --version # Docker version 25.0.0Программа, которая ставит, обновляет и удаляет другие программы одной командой -- как магазин приложений для терминала. Она сама скачивает нужное и кладёт куда надо. На macOS это brew (Homebrew), на Ubuntu/Linux -- apt. С пакетным менеджером установка превращается в одну строчку.
brew install python # macOS
sudo apt install python3 # Ubuntu/LinuxПакетный менеджер для macOS (и Linux). Командой brew install ты ставишь почти любую программу для разработки одной строкой -- Homebrew сам всё скачает и настроит. Считается стандартом для разработчиков на Mac. После установки самого Homebrew им можно ставить Python, git и многое другое.
brew install git # поставить git
brew install python # поставить Python
brew --version # проверить сам HomebrewПакетный менеджер в Ubuntu и многих других Linux (а значит, и в WSL2). Командой sudo apt install ты ставишь программы из официальных хранилищ. Перед установкой полезно обновить список доступного через sudo apt update. Это linux-аналог Homebrew.
sudo apt update # обновить список пакетов
sudo apt install python3 # поставить Python
sudo apt install git # поставить gitСпособ запустить настоящий Linux прямо внутри Windows, не удаляя её. Для разработки это очень удобно: команды и инструменты работают так же, как у пользователей Linux и macOS. На Windows мы советуем учиться именно в WSL2, а не в обычной командной строке Windows -- так все примеры из курсов совпадут.
# В PowerShell от имени администратора:
wsl --install
# перезагрузить компьютер, и появится Linux-терминалСообщение компьютера о том, что что-то пошло не так и команда не выполнилась. Ошибка -- это не катастрофа и не твоя вина: это подсказка, что именно поправить. Главный навык новичка -- не пугаться красного текста, а спокойно его прочитать: там почти всегда написано, в чём дело.
python hello.py
# python: command not found
# ^ это ошибка: команда python не найденаЧастая ошибка: ты набрал команду, а компьютер не знает такой программы. Обычно причина одна из двух: программа не установлена, либо установлена, но её папки нет в PATH. Иногда просто опечатка в имени. Решается установкой программы, проверкой имени (python vs python3) или настройкой PATH.
python: command not found
# попробуй: python3 --version
# или поставь Python зановоОшибка 'доступ запрещён': у тебя не хватает прав, чтобы сделать это действие -- например, записать файл в системную папку или запустить файл. Часто лечится запуском с sudo (от администратора), сменой прав файла или работой в своей домашней папке, где права у тебя есть.
./script.sh
# permission denied
# попробуй: chmod +x script.sh (сделать запускаемым)
# затем снова: ./script.shОфициальное описание программы или языка: как им пользоваться, какие есть команды и настройки. Документация -- первое место, куда стоит заглянуть, когда непонятно, как что-то работает. Звучит скучно, но обычно там есть и примеры. У большинства инструментов docs доступны на их сайте и через команду с флагом --help.
ls --help # быстрая встроенная справка
man ls # подробное руководство
# или сайт проекта с разделом DocsЧат-бот вроде ChatGPT или Claude, которому можно показать ошибку и спросить, что делать. Очень помогает новичку, если спрашивать правильно: укажи свою ОС, вставь точный текст ошибки и команду, которую набирал. ИИ иногда ошибается, поэтому ответы стоит проверять, но для разбора непонятной ошибки это отличный первый помощник.
# Хороший вопрос ИИ:
# 'У меня macOS. Набрал python3 hello.py,
# получил такую ошибку: <вставь текст>.
# Что это значит и как починить?'