Введение в программирование: что это и как написать первую программу

Введение в программирование: что это и как написать первую программу Полезное

Программирование — это запись решения задачи в виде точных инструкций на языке программирования, которые компьютер может выполнить. Человек придумывает способ решения (алгоритм), записывает его текстом (исходный код), а специальная программа — компилятор или интерпретатор — доводит этот текст до действий процессора.

Ниже разберем, как текст превращается в работающую программу, какие понятия встречаются в любой первой программе, какие ошибки новичок видит чаще всего и с чего начать на практике. Примеры на Python 3.14, проверены запуском 24.09.2026.

Мини-словарь: четыре слова, которые часто путают

Термин Что это Пример
Алгоритм Способ решения, не привязанный к языку «сложить траты за неделю и сравнить с бюджетом»
Исходный код Текст алгоритма на конкретном языке файл expenses.py
Программа Код, который можно запустить и получить результат python expenses.py печатает итог
Язык программирования Набор правил записи (синтаксис) и смысла (семантика) Python, Java, C, JavaScript

Один алгоритм можно записать на разных языках, и получатся разные программы с одинаковым поведением. Поэтому учатся в первую очередь мыслить алгоритмами, а язык — инструмент.

Как код становится программой

Процессор понимает только машинные команды — числа, закодированные под конкретную архитектуру (x86-64, ARM). Текст print("Привет") он выполнить не может. Между кодом и процессором всегда стоит переводчик, и способов перевода несколько.

Способ Как работает Типичные языки Что видит новичок
Компиляция в машинный код Компилятор заранее переводит весь файл в исполняемый файл под ОС и процессор C, C++, Go, Rust Отдельный шаг сборки, потом запуск готового файла
Байт-код + виртуальная машина Код переводится в промежуточный байт-код, его исполняет виртуальная машина, часто с JIT-компиляцией горячих участков Java, C#, Kotlin Сборка в .class/.dll, запуск через java/dotnet
«Интерпретация» Исходник запускается сразу одной командой Python, JavaScript, PHP Написал файл — запустил — увидел результат

Граница упрощения: «интерпретируемый язык» — свойство реализации, а не языка. Стандартный CPython тоже сначала компилирует исходник в байт-код и только потом исполняет его на своей виртуальной машине, просто делает это незаметно при запуске. Это легко увидеть модулем dis:

import dis
dis.dis("print(price + 3)")

Вывод в Python 3.14.7 (номера и имена инструкций меняются от версии к версии):

  0           RESUME                   0

  1           LOAD_NAME                0 (print)
              PUSH_NULL
              LOAD_NAME                1 (price)
              LOAD_SMALL_INT           3
              BINARY_OP                0 (+)
              CALL                     1
              RETURN_VALUE

Здесь видна вся цепочка на одной строке: текст price + 3 -> инструкции «загрузить price», «загрузить 3», «сложить» -> вызов print. Если написать print(2 + 3), инструкции сложения не будет вовсе: компилятор посчитает 5 заранее и положит в байт-код готовое число.

Для сравнения, в C шаг сборки явный: gcc hello.c -o hello создает исполняемый файл, а ./hello его запускает. На macOS команда gcc по умолчанию вызывает Apple clang, результат тот же — файл с машинным кодом под ARM или x86-64.

Первая программа

Минимальная программа, которая что-то принимает и что-то выдает:

name = input("Как тебя зовут? ")
print("Привет,", name)

Сохрани текст в файл hello.py и запусти в терминале командой python3 hello.py (в Windows обычно py hello.py). Программа спросит имя, а после ввода «Аня» напечатает:

Как тебя зовут? Аня
Привет, Аня

В двух строках уже есть три базовые вещи: ввод (input), переменная (name хранит введенный текст) и вывод (print).

Базовые понятия на одном примере

Эти понятия есть почти в любом популярном языке, меняется только запись. Чтобы не учить их списком, соберем один законченный пример: программа считает траты за неделю и сравнивает их с бюджетом.

def total(expenses):
    """Складывает все суммы в списке."""
    result = 0
    for amount in expenses:
        result = result + amount
    return result


week = [350, 1200, 0, 480, 2300, 150, 900]   # траты по дням, руб.
limit = 5000                                  # недельный бюджет, руб.

spent = total(week)
print("Потрачено за неделю:", spent)

if spent > limit:
    print("Бюджет превышен на", spent - limit)
else:
    print("Остаток бюджета:", limit - spent)

Результат запуска:

Потрачено за неделю: 5380
Бюджет превышен на 380

Разберем, что здесь работает:

  • Переменная — имя, связанное со значением: limit = 5000. Значение можно заменить: result меняется на каждом шаге цикла.
  • Тип данных определяет, какие операции допустимы. 5000 — целое число (int), "Потрачено" — строка (str). Число и строку нельзя просто сложить — это видно в разделе об ошибках.
  • Список week хранит несколько значений под одним именем, к элементу обращаются по индексу: week[0] равно 350. В Python список может содержать значения разных типов; в C и Java массив хранит значения одного типа — это различие реализаций.
  • Цикл for повторяет действие для каждого элемента. Цикл while повторяет, пока условие истинно.
  • Условие if ... else выбирает ветку: при spent > limit выполняется первая, иначе вторая.
  • Функция total — именованный кусок кода, который принимает данные и возвращает результат. В Python уже есть встроенная sum(week), здесь функция написана вручную, чтобы показать цикл.

Отступы в Python — часть синтаксиса: именно они показывают, какие строки относятся к if, for и def. Во многих других языках для этого служат фигурные скобки.

Типичные ошибки новичка: код, результат, исправление

1. Сложение строки и числа. Функция input всегда возвращает строку, даже если введены цифры.

age = input("Сколько тебе лет? ")
print("Через год будет", age + 1)

После ввода 17 программа падает:

Traceback (most recent call last):
  File "/w/err1.py", line 2, in <module>
    print("Через год будет", age + 1)
                             ~~~~^~~
TypeError: can only concatenate str (not "int") to str

Исправление — преобразовать строку в число: age = int(input("Сколько тебе лет? ")). Но тогда ввод «abc» дает ValueError: invalid literal for int() with base 10: 'abc'. Надежнее проверять ввод и просить повторить:

while True:
    text = input("Сколько тебе лет? ")
    try:
        age = int(text)
    except ValueError:
        print("Нужно целое число, например 17.")
        continue
    if 0 <= age <= 150:
        break
    print("Возраст должен быть от 0 до 150.")

print("Через год будет", age + 1)

На вводе «abc», «-5», затем «17» программа дважды просит повторить и печатает Через год будет 18. Проверка диапазона нужна потому, что int охотно принимает и отрицательные числа, и бессмысленно большие.

2. Забытый отступ.

spent = 5380
if spent > 5000:
print("Бюджет превышен")
  File "/w/err2.py", line 3
    print("Бюджет превышен")
    ^^^^^
IndentationError: expected an indented block after 'if' statement on line 2

Исправление: сдвинуть print на четыре пробела вправо.

3. Типографские кавычки. Если код скопирован из текстового редактора, вместо " может оказаться «елочка», и Python ответит SyntaxError: invalid character '«' (U+00AB). Код пишут в редакторе кода, а не в Word.

Первые шаги: дорожная карта до своего проекта

Цель начального этапа — не «прочитать про программирование», а получить работающий артефакт: небольшую программу в своем репозитории, которую может запустить другой человек.

  1. Установить язык и редактор. Python 3.14 с python.org и редактор кода, например VS Code. В Windows с версии 3.14 рекомендуемый способ — Python install manager (менеджер установки с python.org); классический установщик объявлен устаревшим, и если ставишь через него, отметь пункт добавления python.exe в PATH. Проверка: python3 --version (в Windows py --version) печатает номер версии.
  2. Запустить hello.py из этой статьи и поменять текст. Это проверка, что вся цепочка «файл -> интерпретатор -> вывод» работает.
  3. Повторить базовые конструкции на своих мини-задачах: сумма и среднее списка, поиск максимума, угадайка чисел. Каждую — с проверкой ввода.
  4. Научиться читать ошибки. Traceback читается снизу вверх: последняя строка — тип и суть ошибки, выше — файл и номер строки.
  5. Собрать мини-проект на 100-200 строк: например, учет трат с сохранением в CSV-файл и итогом по категориям.
  6. Выложить проект в Git-репозиторий с коротким README: что делает программа и как ее запустить.

Сроки у всех разные: они зависят от того, сколько часов в неделю есть на практику. Надежный ориентир — не календарь, а то, можешь ли ты без подсказки написать программу из шага 5. Подробный план обучения с нуля и выбор первых ресурсов разобраны в статье как научиться программировать с нуля.

Если не получилось

Симптом Вероятная причина Что сделать
python: command not found (macOS, Linux) Команда называется иначе Запустить python3
В Windows вместо запуска открывается Microsoft Store Python не установлен, срабатывает системный псевдоним python Установить Python через Python install manager с python.org и запускать через py
can't open file ... No such file or directory Терминал открыт не в той папке Перейти в папку с файлом командой cd
IndentationError Смешаны или пропущены отступы Настроить редактор на 4 пробела вместо табуляции
Программа «зависла» без вывода Ждет ввода в input Ввести значение и нажать Enter

Выводы

  • Программирование — это запись алгоритма на языке программирования так, чтобы компьютер мог его выполнить; алгоритм, исходный код и программа — разные вещи.
  • Процессор исполняет только машинные команды, поэтому код всегда проходит перевод: компиляцию, байт-код с виртуальной машиной или их сочетание, как в CPython.
  • Переменные, типы, списки, циклы, условия и функции встречаются почти в любой первой программе, и их удобнее учить на одном законченном примере.
  • Большая часть ранних ошибок — это типы данных, отступы и неверные символы; их текст подсказывает строку и причину.
  • Хороший результат первого этапа — небольшой проект в Git, а не прочитанная теория.

Где применяется / связь с практикой

Освойте тему на практике

Python удобен для первого языка: короткий цикл «написал — запустил — увидел результат» и понятные сообщения об ошибках. Если хочется пройти путь от первых скриптов до собственных проектов с разбором кода от практиков, посмотри базовый курс Python-разработки с нуля. Чтобы сначала оценить формат обучения, подойдут бесплатные открытые уроки Otus.

FAQ

Нужна ли математика, чтобы начать программировать?
Для первых программ достаточно школьной арифметики и логики. Углубленная математика нужна в отдельных областях: анализ данных, графика, криптография, алгоритмы с высокой нагрузкой.

Чем программирование отличается от верстки сайта?
HTML и CSS описывают структуру и внешний вид страницы, но не содержат условий и циклов, поэтому их обычно не относят к языкам программирования. Логика на странице пишется на JavaScript.

Можно ли учиться программировать с телефона?
Попробовать синтаксис можно в онлайн-песочнице, но для проектов нужен компьютер: полноценный редактор, терминал и Git на телефоне неудобны.

OTUS Журнал
Скидка 5% 14-20 сентября на курсы (popup)