Представьте, что ваш компьютер мог бы делать только одну вещь. Если бы все, что оно могло делать, сводилось к элементарной арифметике, это был бы, попросту говоря, калькулятор. С его помощью нельзя было отправлять электронные письма, писать эссе, играть в шахматы или делать что-либо еще. К счастью, ваш компьютер — это гораздо больше: он похож на личного слугу, которому вы можете приказать делать все, что захотите. Инструкции, которые вы даете компьютеру, называются его программой, а программное обеспечение — это на самом деле просто другое название для этого. Дайте вашему компьютеру несколько новых инструкций, и вы сможете заставить его делать что-то совершенно другое. Устанавливая приложения на свой смартфон, вы перепрограммируете встроенный в него компьютер для выполнения другой работы. Если вы знаете, как самостоятельно писать программы (это называется кодированием), вы можете создавать свои собственные приложения и заставлять свой компьютер делать все, что вы только можете себе представить, от редактирования фотографий до игры Angry Birds.
Типичная компьютерная архитектура, связывающая аппаратное обеспечение с приложениями через BIOS и операционную систему.
Обычный компьютер, подобный ноутбуку или смартфону, которыми вы пользуетесь прямо сейчас, имеет внутри несколько основных типов программного обеспечения. Представьте, что они уложены друг на друга (как показано на рисунке) или, может быть, как слои луковицы, с электронным оборудованием компьютера в основе. На самом низком уровне находится нечто, называемое BIOS (базовая система ввода-вывода), представляющее собой относительно простое программное обеспечение (технически известное как прошивка), записанное в процессор компьютера, которое загружает (запускает) компьютер в холодном состоянии. (На новых компьютерах есть эквивалентная часть программного обеспечения, называемая Unified Extensible Firmware Interface, UEFI.) BIOS загружает другую часть программного обеспечения, называемую операционной системой, которая выполняет более сложные задачи, от управления сенсорным экраном (в телефоне) до вращения жесткого диска и поддержания охлаждения процессора. BIOS и операционная система являются примерами того, что называется системным программным обеспечением или иначе софт, потому что они работают непосредственно с аппаратным обеспечением компьютера — компьютерной системой, если хотите.
Поверх операционной системы, на следующем уровне, находится то, что мы называем прикладными программами (иногда сокращенно приложениями), которые представляют собой такие вещи, как программы обработки текстов и веб-браузеры, работающие на настольных ПК и ноутбуках, и все различные приложения, которые вы устанавливаете на смартфоны. Приложения используют операционную систему для управления оборудованием — и вы можете запускать приложения поверх приложений. Например, ваш веб-браузер (приложение, работающее в вашей операционной системе) может запускать внутри себя больше приложений, написанных на языке, называемом JavaScript. Если вы используете свою программу компьютерной графики для выполнения одних и тех же действий снова и снова, например, для изменения размера и поворота фотографий и сохранения их в другом формате, вы можете написать небольшую программу, называемую макросом, которая будет повторять эти процессы за вас, чтобы вам не приходилось каждый раз вводить текст и щелкать мышью одним и тем же способом. Или, может быть, вы добавили дополнительные функции в свой веб-браузер с помощью «расширений», которые представляют собой дополнительные приложения, запускаемые поверх браузера.
Что такого хорошего в этом многоуровневом подходе? Это означает, что людям, которые пишут приложения, не нужно придумывать весь код для управления самыми базовыми функциями компьютера — такими вещами, как запись информации на жесткий диск или определение того, как движется мышь; все это делает операционная система. Итак, любая марка или модель компьютера, на котором может работать определенная операционная система, должна запускать приложения, написанные для этой операционной системы, более или менее одинаковым образом. До изобретения операционных систем программы, написанные для одной марки компьютера, часто не запускались на другой, даже если она была довольно похожа и код был написан на точно таком же языке.