Перейти к основному содержимому

1.19. ПО и система

Всем

ПО и система

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

Сейчас мы с вами пробежимся по ключевым понятиям, которые нужно знать. Но непосредственно учиться программированию будем в следующем томе, к примеру, там же и изучим особенности термина «алгоритм». Сейчас же следует запомнить, что программа выполняет алгоритмы - серию команд.

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

  • Системное ПО: ОС (Windows, Linux), драйверы;
  • Прикладное ПО: Microsoft Office;
  • Инструментальное ПО: IDE (Visual Studio).

Система — это набор компонентов, словно целостный организм, где каждый элемент взаимодействует с другими для достижения общей цели. В отличие от ПО, система включает в себя не только технические составляющие, но и людей, процессы, и даже физическую инфраструктуру. Примером может служить банковская система, которая объединяет ПО (например, системы кредитного конвейера, учёта транзакций), аппаратное обеспечение (серверы, терминалы), сотрудников (операторов, аналитиков) и регламенты (правила безопасности, протоколы работы). Таким образом, ПО - лишь часть системы, а программа - ещё более мелкий элемент, который выполняет задачу:

Система > ПО > программа.

Системное ПО

Системное программное обеспечение — набор программ, обеспечивающих базовое функционирование компьютера и предоставляющих платформу для запуска других приложений. Системное ПО работает «под капотом», часто незаметно для пользователя, но без него ничего бы не работало.

Основные компоненты системного ПО:

Операционная система (ОС)

Ядро всей системы. Она управляет:

  • процессором (распределение времени между задачами),
  • памятью (выделение и защита областей),
  • устройствами (через драйверы),
  • файлами (организация хранения и доступа),
  • безопасностью (пользователи, права, изоляция).

Примеры: Windows 11, Ubuntu, macOS, Android.

Драйверы устройств

Специализированные программы, которые «переводят» команды операционной системы на язык конкретного оборудования. Без драйвера видеокарта не выведет изображение, принтер не напечатает, Wi-Fi модуль не подключится к сети. Драйверы работают на уровне ядра или в режиме пользователя (в зависимости от архитектуры ОС).

Службы и демоны

Фоновые процессы, обеспечивающие непрерывную работу системы:

  • служба обновлений — проверяет и устанавливает патчи,
  • служба времени — синхронизирует часы с сервером,
  • демон печати — управляет очередью заданий,
  • systemd в Linux — координирует запуск всех остальных служб.

Утилиты системного уровня

Программы для администрирования и диагностики:

  • diskpart / fdisk — управление разделами диска,
  • taskmgr / htop — мониторинг процессов и ресурсов,
  • sfc / fsck — проверка целостности системных файлов.

Системное ПО — фундамент. Оно создаёт единое пространство, в котором могут сосуществовать прикладные программы, не зная друг о друге напрямую. Оно отвечает за справедливость, порядок и ресурсы.


Прикладное ПО

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

Прикладное ПО делится на категории по назначению:

Офисные приложения

Работа с документами:

  • текстовые процессоры (Microsoft Word, LibreOffice Writer),
  • табличные редакторы (Excel, Google Sheets),
  • программы для презентаций (PowerPoint, Impress).

Мультимедиа

Работа со звуком, видео, изображениями:

  • проигрыватели (VLC, MPC-HC),
  • редакторы (Photoshop, DaVinci Resolve, Audacity),
  • конвертеры форматов.

Коммуникации

Обмен информацией между людьми:

  • мессенджеры (Telegram, WhatsApp Desktop),
  • почтовые клиенты (Outlook, Thunderbird),
  • видеоконференции (Zoom, Jitsi).

Интернет-навигация

Доступ к веб-ресурсам:

  • браузеры (Chrome, Firefox, Edge),
  • RSS-агрегаторы,
  • загрузчики файлов.

Образование и наука

Обучение, моделирование, расчёты:

  • среды программирования для обучения (Scratch, Thonny),
  • симуляторы (логические схемы, физические эксперименты),
  • визуализаторы данных (Tableau Public, Grafana).

Бизнес-приложения

Учёт, планирование, управление:

  • CRM-системы (1C:CRM, Bitrix24),
  • бухгалтерия (1C:Бухгалтерия, Контур.Бухгалтерия),
  • ERP-системы (SAP, Oracle E-Business Suite).

В отличие от системного ПО, прикладное ПО:

  • ориентировано на конечную цель (написать отчёт, отредактировать фото),
  • имеет развитый пользовательский интерфейс,
  • часто работает через API других систем (например, облачных сервисов),
  • может быть как локальным (установленным на компьютере), так и веб-приложением.

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


Инструментальное ПО

Инструментальное программное обеспечение — программы, предназначенные для создания, отладки, тестирования, анализа и поддержки других программ. Это «инструменты для строителей», а не «дома для жильцов».

Основные виды инструментального ПО:

Интегрированные среды разработки (IDE)

Комплексные платформы, объединяющие:

  • редактор кода с подсветкой синтаксиса и автодополнением,
  • компилятор/интерпретатор,
  • отладчик (позволяет пошагово выполнять код, ставить точки останова),
  • систему управления версиями (встроенная поддержка Git),
  • средства сборки и тестирования.
    Примеры: Visual Studio, IntelliJ IDEA, PyCharm, Eclipse.

Текстовые редакторы для программистов

Лёгкие альтернативы IDE, с возможностью расширения:

  • Visual Studio Code,
  • Sublime Text,
  • Vim,
  • Emacs.

Системы сборки

Автоматизируют процесс компиляции, связывания, тестирования:

  • Make (классический инструмент для C/C++),
  • CMake (генератор make-файлов для разных платформ),
  • Maven, Gradle (для Java),
  • MSBuild (.NET).

Отладчики

Специализированные утилиты для поиска ошибок:

  • GDB (GNU Debugger) — для низкоуровневой отладки на Linux,
  • WinDbg — мощный отладчик для Windows,
  • pdb — встроенный отладчик в Python.

Профилировщики

Анализируют производительность программы:

  • какие функции тратят больше всего времени (time, cProfile),
  • где происходят утечки памяти (Valgrind, AddressSanitizer),
  • как используется процессор и кэш (perf, Intel VTune).

Генераторы кода и шаблонизаторы

Автоматически создают заготовки программ:

  • yeoman — для веб-проектов,
  • dotnet new — для .NET,
  • create-react-app (устаревший, но показательный пример).

Средства документирования

Преобразуют комментарии в коде в структурированную документацию:

  • Javadoc (Java),
  • Doxygen (мультиязычный),
  • Sphinx (Python, Markdown/RST).

Инструментальное ПО редко используется конечными пользователями. Его аудитория — разработчики, тестировщики, DevOps-инженеры. Чем выше качество инструментов, тем быстрее и надёжнее создаются прикладные программы.


Информационная система

Понятие информационной системы

Информационная система – система для сбора, хранения и обработки данных. В отличие от простого вычисления, здесь будет целый процесс работы с информацией. Самый простой пример – Госуслуги, крупная информационная система, включающая в себя огромную совокупность элементов, упорядоченных в инфраструктуре. Это частный случай системы, ориентированный на работу с информацией, охватывающая все этапы её жизненного цикла: сбор, хранение, обработку, анализ и распространение.

Инфраструктура

Инфраструктура — совокупность физических и логических компонентов, обеспечивающих функционирование программ, систем и сервисов. Это не просто «серверы и кабели», а целостная экосистема, включающая оборудование, программное обеспечение, сети, процессы и даже человеческие практики.

Инфраструктура делится на уровни:

Физическая инфраструктура

Базовый слой — «железо» и его окружение:

  • серверы, дисковые массивы (SAN/NAS), сетевые коммутаторы и маршрутизаторы;
  • системы охлаждения, бесперебойного питания (ИБП), пожаротушения;
  • дата-центры — здания, спроектированные под размещение оборудования: с контролем доступа, резервированием вводов электропитания, экранированием от помех.

Сетевая инфраструктура

Обеспечивает связь между компонентами:

  • локальные сети (LAN), широкие сети (WAN), межсетевые экраны (firewalls);
  • системы балансировки нагрузки (Nginx, HAProxy, F5);
  • DNS-серверы, DHCP-серверы, системы мониторинга трафика (Wireshark, Zabbix).

Программная инфраструктура

Слои, построенные поверх аппаратуры:

  • гипервизоры (VMware ESXi, KVM, Hyper-V) для виртуализации;
  • контейнерные платформы (Docker, containerd);
  • оркестраторы (Kubernetes, Nomad);
  • системы конфигурации и развёртывания (Ansible, Terraform, Puppet).

Операционная инфраструктура

Сервисы и практики управления:

  • системы мониторинга (Prometheus + Grafana, Datadog);
  • логирование (ELK-стек: Elasticsearch, Logstash, Kibana);
  • централизованная аутентификация (LDAP, Active Directory, Keycloak);
  • CI/CD-конвейеры (GitLab CI, Jenkins, GitHub Actions).

Человеческая инфраструктура

Невидимый, но критически важный слой:

  • регламенты резервного копирования и аварийного восстановления;
  • процедуры инцидент-менеджмента (ITIL-подход);
  • документация архитектуры, схемы взаимодействия, runbook’и;
  • команды поддержки, дежурства, ротации ответственности.

Инфраструктура — это то, на чём работают программы. Она должна быть:

  • надёжной — минимизация простоев,
  • масштабируемой — возможность роста под нагрузку,
  • воспроизводимой — развёртывание одинаковой среды в разных местах (dev/stage/prod),
  • наблюдаемой — возможность понять состояние системы в любой момент.

Простой пример: сайт example.com. Его инфраструктура включает — доменное имя (DNS), веб-сервер (Nginx), бэкенд (Node.js), базу данных (PostgreSQL), CDN для статики, систему сбора метрик и бэкапов. Всё это — инфраструктура, без которой сайт перестаёт существовать как сервис.


Аппаратное обеспечение

Аппаратное обеспечение (hardware) — физические компоненты компьютера и связанных с ним устройств. Это материальная основа, на которой работает всё программное обеспечение.

Основные группы аппаратного обеспечения:

Центральный процессор (CPU)

«Мозг» компьютера. Выполняет инструкции, управляет потоком данных, координирует работу остальных компонентов. Современные процессоры многоядерные — каждое ядро работает как отдельный вычислитель, что позволяет обрабатывать несколько задач одновременно.

Оперативная память (RAM)

Временное хранилище для данных и кода, с которыми работает процессор сейчас. Чем больше RAM — тем больше программ может быть загружено одновременно без замедления. Информация в RAM исчезает при отключении питания.

Постоянное хранилище

Устройства для долговременного хранения данных:

  • жёсткие диски (HDD) — высокая ёмкость, невысокая скорость, механическая конструкция;
  • твердотельные накопители (SSD) — высокая скорость, отсутствие движущихся частей, дороже за гигабайт;
  • флеш-накопители, SD-карты — портативные решения.

Графический процессор (GPU)

Специализированный чип для обработки изображений, видео, параллельных вычислений. Изначально создан для рендеринга трёхмерной графики в играх, сейчас широко применяется в машинном обучении, научных расчётах, видеокодировании.

Устройства ввода и вывода

Средства взаимодействия с пользователем или внешним миром:

  • ввод: клавиатура, мышь, сканер, микрофон, сенсорный экран;
  • вывод: монитор, принтер, акустическая система, проектор.

Сетевые интерфейсы

Обеспечивают подключение к сетям:

  • проводные (Ethernet-адаптеры — 1 Гбит/с, 10 Гбит/с);
  • беспроводные (Wi-Fi, Bluetooth);
  • специализированные (оптические трансиверы для дата-центров).

Материнская плата

Основная печатная плата, объединяющая все компоненты: разъёмы для CPU, RAM, дисков, карт расширения; чипсет, BIOS/UEFI; встроенные контроллеры (звук, сеть, USB).

Аппаратное обеспечение определяет физические границы возможностей:

  • процессор задаёт максимальную скорость последовательных вычислений,
  • оперативная память ограничивает объём одновременно обрабатываемых данных,
  • диск влияет на время запуска программ и загрузки файлов,
  • сеть определяет, насколько быстро можно обмениваться данными с внешними системами.

Программа не может «обойти» физические ограничения аппаратуры — она может лишь эффективнее их использовать.