Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Компьютерная и офисная техника..pdf
Скачиваний:
45
Добавлен:
05.02.2023
Размер:
2.2 Mб
Скачать

102

9 Программное обеспечение

9.1 Классификация и эволюция ПО

Как известно, вычислительная техника (hardware) без программ, олицетворяющих действия людей по управлению ею, мертва и бездушна как всякое железо. И только программное обеспечение (software) заставляет компьютеры делать все те чудеса, которым мы не перестаем удивляться. Желая подчеркнуть приоритет программного обеспечения перед аппаратным, академик Глушков как-то сказал, что в настоящее время они соотносятся друг с другом по стоимости и вложенному интеллекту «как товар с упаковкой».

За 60 лет развития многие поколения программистов создали гигантский объем программного обеспечения (ПО). Хотя он создавался стихийно, под влиянием преходящих обстоятельств, в процессе его формирования существуют определенные закономерности [1]. Чтобы их выяснить, нам понадобится некоторая классификация программного обеспечения

(рис. 9.1).

Программное

обеспечение

Общее

 

 

 

 

 

 

 

 

 

 

Системное

 

 

Прикладное

 

Специальное

 

 

 

 

 

 

(ППП)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

СУБД

 

 

 

 

Бухгалтерские

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Операционные

 

 

 

 

 

 

 

 

 

системы

 

 

 

системы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Текстовые

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Системы

 

 

 

 

процессоры

 

 

 

 

Банковские

 

 

 

 

 

 

 

 

 

 

 

 

системы

 

 

 

програм-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

мирования

 

 

 

 

Электронные

 

 

 

 

 

 

 

 

 

 

 

 

 

таблицы

 

 

 

 

Системы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Служебные

 

 

 

 

 

 

 

 

 

управления

 

 

 

 

 

 

 

 

 

 

 

 

производством

 

 

 

программы

 

 

 

 

Графические

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(утилиты)

 

 

 

 

системы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 9.1. Классификация программного обеспечения

103

Прежде всего, все программное обеспечение можно разделить на общее и специальное.

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

Общее ПО, в свою очередь, подразделяется на системное, служащее для разработки программ и поддержки вычислительного процесса на компьютере (операционные системы, системы программирования, различные вспомогательные программы) и прикладное, иначе называемое пакетами прикладных программ (ППП). Типичными ППП являются текстовые процессоры, системы управления базами данных (СУБД), электронные таблицы, некоторые другие широко распространенные программы.

Граница раздела между упомянутыми классами весьма условна и в процессе эволюции постоянно передвигается в пользу общего ПО. На заре компьютернойэры,когда машины былипрограммно несовместимыикаждая задача была уникальна, 100% программного обеспечения было специальным.

Общее ПО – это ценнейший интеллектуальный ресурс, накопленный человечеством за последние полвека. В егоразработкувложены миллионы человеко-лет труда нескольких поколений программистов, потрачены многие миллиарды долларов.

9.1.1 50–годы – библиотеки стандартных программ

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

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

Первоочередной задачей программистов на данном этапе было создание библиотек, которые обеспечивали бы вызов стандартных программ из внешней памяти и автоматически подключали их к главной программе.

Идея использования подпрограмм была реализована Грейс Хоппер еще до появления ЭВМ, на электромеханической Mark-I, а в дальнейшем она стала общепринятой. Из-за программной несовместимости у каждой

104

ЭВМ были свои уникальные библиотеки. Создание библиотек резко повысило производительность труда программистов, так как появилась возможность опереться на труд предшественников и не программировать каждую новую задачу с нуля.

Вторая проблема была связана с мнемоническим кодированием и автоматическим распределением памяти. Впервые она была решена в Кембридже на ЭВМ EDSАС (1949г.).

Вместо того, чтобы записывать коды операций двоичными цифрами, программист писал текст программы на символическом языке, пользуясь мнемоническими обозначениями операций и условными адресами, а специальная программа (руководитель проекта Морис Уилкс назвал ее собирающей системой – по-английски assembly system) автоматически преобразовывала мнемонические коды в понятные машине двоичные и распределяла память для выполнения программы.

Мнемонические коды – это несложные для запоминания слова или аббревиатуры, представляющие завершенное задание для микропроцессора. Например, код MOV указывает компьютеру на то, что некую информацию следует переместить из одной области памяти в другую. Таким образом, вместо того, чтобы составлять последовательные ряды 0 и 1, программист на ассемблере может использовать мнемонические коды, подобные приведенным выше, каждый из которых представляет собой восемь или более бит (рис. 9.2).

Рис. 9.2. Мнемонические коды

Идея оказалась столь продуктивной, что все последующие поколения программистов на всех ЭВМ отказались от абсолютного кодирования. Языки программирования низкого уровня, в которых коды операций заме-

105

нены мнемоническими обозначениями, стали называться языками ассемблера или автокодами (мнемокодами), а преобразующие программы – ассемблерами.

В 1950-е годы ЭВМ были еще экзотической редкостью, программисты также исчислялись единицами и работать им приходилось в очень стесненных условиях. Приходилось постоянно изворачиваться, экономить каждую ячейку памяти и каждый машинный такт, потому что возможности тех компьютеров были более чем скромными.

9.1.260–годы – высокоуровневые языки программирования

В1960-е годы объем производства ЭВМ резко возрос, появились разнообразные машины второго поколения, они вышли из узких стен научных и военных учреждений, начали использоваться в бизнесе.

Резко расширился круг решаемых задач, соответственно возросло и

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

Систематическая работа над созданием высокоуровневых языков программирования и соответствующих компиляторов началась в конце 1950-х годов и бурно развивалась все последующее десятилетие.

В1957 году был создан язык программирования Fortran, в 1960 году

Cobol, Algol и Lisp, в 1964 году – Basic, PL/1, в 1970 году – Pascal. Изоб-

ретение новых языков превратилось в модное занятие, к концу 60-х годов их число перевалило уже за тысячу.

Прародителем все языков программирования является Fortran – FORmuLa TRANslator. Язык был разработан в фирме IBM под руководством Джона Бэкуса. Первая реализация компилятора для IBM была выполнена в 1957 году, причем. компилятор поставлялся бесплатно вместе с ЭВМ, это обусловило его высокую популярность в научных кругах, занятых математическими расчётами. Впоследствии язык постоянно совершенствовался и дополнялся, появились версии Fortran-II, Fortran-III и т.д., а в 1977 году – не менее известная Fortran-77.

Практически все основные концепции – процедурное, логическое, объектно-ориентированное программирование были предложены в это десятилетие. В последующие годы прогресс в автоматизации программирования шел не в сторону создания новых языков, а, наоборот, по пути естественного отбора.

106

Языки программирования рождались и умирали, но только некоторые из них – наиболее стойкие и жизнеспособные – дожили до конца XX века и стали стандартными в международном сообществе программистов.

Первый вариант языка Basic был создан в 1964 году в Дартмутском колледже (США) двумя молодыми талантливыми преподавателями мате-

матики – Джоном Кемени и Томасом Курцем.

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

мая 1964г.

Простой и удобный Бейсик во второй половине 60-х годов был реализован на нескольких моделях мэйнфреймов и мини-ЭВМ. Благодаря этому языку тысячи молодых людей были приобщены к программированию. Среди них оказались и два школьника из города Сиэтл – будущие миллиардеры и отцы-основатели фирмы Microsoft – Билл Гейтс и Пол Аллен.

Прочитав в начале 1975 года статью о персональном компьютере «Altair», они предложили свои услуги по написанию для него транслятора с Бейсика. В мае 1975 года транслятор был готов. Гейтс – по первоначальному образованию юрист – составил грамотный контракт на использование Бейсика в компьютерах «Altair», который впоследствии вошел во все учебники по компьютерному праву. Он предусматривал отчисление 500 долларов за каждый экземпляр проданной программы. Так родилась фирма Microsoft. Предельная простота Бейсика позволила встраивать его

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

Другое достижение 60-х годов - создание пакетных операционных систем(ОС).ЭВМбылиоченьдорогимиигромоздкими, ониразмещались

вспециально построенных вычислительных центрах, куда программисты приносили свои задачи в виде колод перфокарт.

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

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