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

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

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

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

ЯЗЫК

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

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