Перейти к содержанию

Языки и методы программирования

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

1. Что такое программирование и язык программирования, зачем они нужны

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

2. Парадигмы программирования: чем отличаются

Парадигма — это способ мышления и организации кода. Основные различия:

  • Императивная — программа описывает как шаг за шагом менять состояние (последовательность команд).
  • Процедурная — разновидность императивной с разбиением на процедуры/функции (C, Pascal).
  • Объектно-ориентированная (ООП) — код организован вокруг объектов с данными и поведением; ключевые принципы — инкапсуляция, наследование, полиморфизм.
  • Функциональная — вычисления как применение функций, упор на неизменяемость и отсутствие побочных эффектов (Haskell, Erlang).
  • Декларативная — описывает что нужно получить, а не как (SQL, HTML).

3. Направления программирования

Языки и инструменты обычно специализируются под область применения:

  • Системное — ОС, драйверы, низкоуровневые утилиты (C, Rust).
  • Прикладное — desktop-программы, бизнес-логика.
  • Веб — frontend и backend (JavaScript, Python, Go).
  • Мобильное — приложения для iOS/Android (Swift, Kotlin).
  • БД — работа с данными и хранилищами (SQL).
  • ML / Data Science — анализ данных и машинное обучение (Python, R).
  • Embedded / IoT — микроконтроллеры и устройства (C, C++).
  • Геймдев — игры и движки (C++, C#).
  • DevOps / IaC — автоматизация инфраструктуры (Go, Python, YAML/HCL).

4. Эволюция языков программирования

Языки развивались от близких к железу к высокоуровневым и мультипарадигменным:

  • Машинные коды — двоичные инструкции процессора.
  • Ассемблер — мнемоники вместо чисел, но всё ещё привязка к архитектуре.
  • Процедурные языки высокого уровня (Fortran, C, Pascal).
  • ООП — Smalltalk, C++, Java.
  • Современные мультипарадигменные — Python, Go, Rust, Kotlin.

По поколениям: 1GL (машинный код), 2GL (ассемблер), 3GL (процедурные высокоуровневые), 4GL (декларативные/предметные, например SQL), 5GL (логические и ИИ-ориентированные).

5. Классификация языков программирования

Языки классифицируют по нескольким признакам:

  • По уровню: низкоуровневые (ассемблер, близко к железу) и высокоуровневые (абстрагированы от архитектуры).
  • По парадигме: процедурные, объектно-ориентированные, функциональные, декларативные.
  • По способу исполнения: компилируемые (C, Go — в машинный код заранее), интерпретируемые (Python — выполняются построчно интерпретатором), JIT (Java, C# — компиляция в байт-код и затем в машинный код во время выполнения).

6. Понятие системы программирования

Система программирования — это набор инструментов для создания и отладки программ. В неё входят:

  • Компилятор — переводит исходный код в машинный/байт-код целиком.
  • Интерпретатор — выполняет исходный код напрямую, без отдельной сборки.
  • IDE — интегрированная среда разработки, объединяющая редактор, сборку и отладку.
  • Отладчик (debugger) — пошаговое выполнение и анализ состояния программы.
  • Компоновщик (linker) — связывает объектные модули в исполняемый файл.

7. Методы программирования

Метод программирования — практический подход к написанию кода в рамках парадигмы:

  • Императивное — явное описание последовательности действий и изменения состояния.
  • Декларативное — описание желаемого результата без указания шагов.
  • Функциональное — построение программы из чистых функций без побочных эффектов.
  • Объектно-ориентированное — моделирование предметной области через объекты и их взаимодействие.

8. Жизненный цикл программного обеспечения (SDLC)

SDLC — последовательность этапов создания и поддержки ПО: анализ требований, проектирование, разработка, тестирование, внедрение, сопровождение. Различают методологии организации этих этапов:

  • Каскадная (Waterfall) — этапы строго последовательны, возврат назад затруднён.
  • Agile — итеративная разработка короткими циклами с быстрой обратной связью и гибкостью к изменениям.

9. Типы приложений

По способу взаимодействия и развёртывания приложения делятся на:

  • Консольные — работают в терминале через текстовый ввод/вывод.
  • Оконные (GUI) — desktop-программы с графическим интерфейсом.
  • Web — выполняются в браузере, доступны по сети.
  • Мобильные — приложения для смартфонов и планшетов.
  • Сервисы / демоны — фоновые процессы без интерфейса, обслуживающие запросы.

10. Основные свойства языков программирования

Ключевые характеристики, по которым сравнивают языки:

  • Типизация: статическая (типы проверяются при компиляции) или динамическая (во время выполнения); сильная (нет неявных приведений) или слабая.
  • Парадигма — поддерживаемые стили программирования.
  • Управление памятью — ручное (C) или автоматическое через сборщик мусора (GC) (Go, Java, Python).
  • Компилируемость — компилируется язык, интерпретируется или использует JIT.

11. Структура программ

Программа структурируется из модулей (отдельные файлы с кодом) и пакетов (группы модулей). Выполнение начинается с точки входа — специальной функции или блока. В Go и C это функция main, в Python — конструкция if __name__ == "__main__":, отделяющая запуск как скрипта от импорта как модуля.

12. Операторы языка

Операторы — символы или ключевые слова, выполняющие операции над значениями:

  • Арифметические+, -, *, /, % (остаток).
  • Сравнения==, !=, <, >, <=, >=.
  • Логическиеand/&&, or/||, not/!.
  • Битовые&, |, ^, ~, <<, >>.
  • Присваивания=, а также составные +=, -=, *= и др.

См. также