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

04. Языки программирования

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

Язык программирования — это формальный язык, предназначенный для записи алгоритмов, которые может выполнить компьютер.

Язык программирования — это способ общения человека с компьютером.

Компьютер понимает только:

  • строгие инструкции
  • точные команды
  • однозначные формулировки

Из чего состоит язык программирования

Любой язык программирования представляет собой формальную систему, состоящую из нескольких взаимосвязанных элементов.

Язык программирования = правила + структура + смысл.

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

1. Алфавит

Алфавит языка программирования — это набор символов, из которых строятся программы. В него входят:

  • буквы
  • цифры
  • специальные символы (+, -, =, <, >, {}, () и др.)

Алфавит определяет, какие символы вообще можно использовать при написании программы.

2. Лексика (слова языка)

Лексика — это допустимые слова языка. Сюда относятся:

  • ключевые (служебные) слова
  • имена переменных
  • имена функций

Ключевые слова имеют особое значение и используются для построения конструкций языка.

Ключевые слова нельзя использовать в произвольном значении.

3. Синтаксис

Синтаксис — это правила построения команд. Он определяет:

  • порядок записи элементов;
  • обязательные символы;
  • структуру выражений.

Если нарушить синтаксис — программа не запустится.

Синтаксическая ошибка означает, что программа написана неправильно с точки зрения правил языка.

4. Семантика

Семантика — это смысл записанных команд. Она определяет:

  • что именно делает программа;
  • как выполняются операции;
  • к какому результату приводят команды.

Важно понимать:

Синтаксис отвечает на вопрос:
«Правильно ли написано?»

Семантика отвечает на вопрос:
«Правильно ли это работает?»

5. Типы данных

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

  • числа
  • строки
  • логические значения

Типы данных позволяют:

  • хранить информацию;
  • выполнять операции;
  • управлять логикой программы.

6. Операторы

Операторы — это средства выполнения действий над данными. Они позволяют:

  • выполнять вычисления;
  • сравнивать значения;
  • управлять логикой.

7. Конструкции языка

Конструкции — это способы организации программы. Основные виды:

  • последовательность действий
  • условные конструкции
  • циклы
  • функции

Конструкции позволяют строить сложные алгоритмы из простых шагов.

8. Стандартные средства языка

Большинство языков имеют встроенные инструменты:

  • базовые функции
  • стандартные библиотеки
  • готовые операции

Это позволяет не писать всё «с нуля».

Обобщение

Любой язык программирования включает:

  • набор допустимых символов
  • слова и правила их использования
  • строгий синтаксис
  • смысл (семантику) команд
  • средства работы с данными
  • инструменты построения алгоритмов

Как компьютер понимает программу

Компьютер понимает только: Машинный код (0 и 1) Пример: 10101010 00101101 Чтобы человеку не писать нули и единицы, используются языки программирования.


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

Машинный код

  • самый низкий уровень
  • максимально быстро
  • крайне неудобно

Ассемблер

Команды заменены словами: MOV ADD SUB Ближе к человеку, но требует знаний архитектуры.

Высокоуровневые языки

Пример: print("Hello")

Преимущества:

  • проще писать
  • быстрее разрабатывать
  • легче читать

Классификация языков

По уровню абстрации

Уровень абстракции показывает, насколько язык «близок» к устройству компьютера.

1.Низкоуровневые

Это языки, максимально приближенные к архитектуре компьютера.

Особенности:

  • зависят от типа процессора
  • требуют знания устройства компьютера
  • работают быстро
  • дают полный контроль над памятью

Пример:

  • Ассемблер

Где используются:

  • драйверы
  • операционные системы
  • встроенные системы

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

2.Высокоуровневые

Это языки, приближенные к человеческому мышлению.

Особенности:

  • абстрагированы от устройства компьютера
  • проще в изучении
  • кроссплатформенные
  • быстрее в разработке

Примеры:

  • Python
  • Java
  • C#
  • JavaScript

Большинство современных языков — высокоуровневые.

По способу выполнения

1.Компилируемые

Процесс работы: Код → Компилятор → Исполняемый файл → Запуск

Особенности:

  • весь код переводится в машинный заранее
  • создаётся отдельный исполняемый файл
  • высокая скорость выполнения

Примеры:

  • C
  • C++
  • Go
  • Rust

Преимущества:

  • высокая производительность
  • оптимизация кода

Недостатки:

  • требуется этап компиляции

2.Интерпретируемые

Процесс работы: Код → Интерпретатор → Выполнение построчно

Особенности:

  • код выполняется построчно
  • нет отдельного исполняемого файла
  • проще отладка

Примеры:

  • Python
  • JavaScript

Преимущества:

  • быстрое тестирование
  • удобство разработки

Недостатки:

  • меньшая скорость

По области применения

1.Системные языки

Используются для разработки:

  • операционных систем
  • драйверов
  • встроенных систем

Примеры: - C - C++

2.Веб-языки

Используются для разработки:

  • сайтов
  • веб-сервисов

Примеры: - JavaScript - PHP - Python

3.Языки анализа данных

Используются для:

  • обработки данных
  • статистики
  • машинного обучения

Примеры: - Python - R

4.Мобильные языки

Используются для:

  • Android
  • iOS

Примеры: - Kotlin - Swift

По парадигме программирования

1.Процедурное программирование

Программа состоит из последовательности процедур (функций). Особенности:

  • простой подход
  • линейная логика

Примеры: - C - Pascal

2.Объектно-ориентированное программирование (ООП)

Программа строится вокруг объектов и классов. Особенности:

  • модульность
  • повторное использование кода

Примеры: - Java - C# - Python

3. Функциональное программирование

Программа строится на основе функций как математических объектов. Особенности:

  • отсутствие изменяемого состояния
  • работа с выражениями

Примеры: - Haskell - частично Python

По типизации

1.Статическая типизация

Тип переменной определяется заранее и не меняется. Примеры:

  • C
  • Java

Преимущества: - меньше ошибок во время выполнения

2.Динамическая типизация

Тип переменной определяется во время выполнения программы. Пример:

  • Python

Преимущества: - проще писать код


Где используются языки программирования

Область Примеры
Системное ПО ОС, драйверы
Веб сайты, серверы
Мобильные приложения Android, iOS
Анализ данных статистика
ИИ нейросети

Популярные языки

Python

  • простой синтаксис
  • читаемый код
  • анализ данных
  • автоматизация

Java

  • корпоративные системы
  • банковские приложения

C

  • десктопные программы
  • корпоративные решения

JavaScript

  • веб-разработка
  • браузерные приложения

Как выполняется программа

Общая идея

Компьютер не понимает языки программирования напрямую.
Он понимает только машинный код — последовательность нулей и единиц. Поэтому любая программа проходит этап перевода.

Основные этапы выполнения

Задача ↓ Алгоритм ↓ Код на языке программирования ↓ Перевод в машинный код ↓ Выполнение процессором ↓ Результат

Способы перевода программы

1.Компиляция

Код → Компилятор → Исполняемый файл → Запуск

  • код переводится полностью
  • создаётся отдельный файл
  • высокая скорость работы

2.Интерпретация

Код → Интерпретатор → Выполнение построчно

  • код выполняется строка за строкой
  • отдельный файл не создаётся
  • удобно для обучения и тестирования

Что делает процессор

Процессор выполняет команды по циклу:

  1. Получить команду
  2. Расшифровать
  3. Выполнить
  4. Перейти к следующей

Этот процесс повторяется до завершения программы.

Возможные ошибки

  • Синтаксическая — нарушены правила языка
  • Во время выполнения — ошибка при работе программы
  • Логическая — программа работает, но результат неверный

Распространённые заблуждения

Есть самый лучший языкт
→ Нет универсального языка Достаточно знать один язык
→ Важно понимать основы Язык сложный → я плохой программист
→ Сложность языка ≠ сложность мышления