GeoSELECT.ru



Программирование / Реферат: Аналитический обзор книги "Программирование на языке ассемблера для микропроцессоров 8080 и 8085" (Программирование)

Космонавтика
Уфология
Авиация
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Аудит
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника
Бухгалтерский учет
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Инвестиции
Иностранные языки
Информатика
Искусство и культура
Исторические личности
История
Кибернетика
Коммуникации и связь
Компьютеры
Косметология
Криминалистика
Криминология
Криптология
Кулинария
Культурология
Литература
Литература : зарубежная
Литература : русская
Логика
Логистика
Маркетинг
Масс-медиа и реклама
Математика
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Мифология
Москвоведение
Музыка
Муниципальное право
Налоги
Начертательная геометрия
Оккультизм
Педагогика
Полиграфия
Политология
Право
Предпринимательство
Программирование
Психология
Радиоэлектроника
Религия
Риторика
Сельское хозяйство
Социология
Спорт
Статистика
Страхование
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Физика
Физкультура
Философия
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
   

Реферат: Аналитический обзор книги "Программирование на языке ассемблера для микропроцессоров 8080 и 8085" (Программирование)



ВВЕДЕНИЕ
Интенсивное развитие микроэлектроники и повышения степени интеграции
открыли новое направление в ВТ - создание микропроцессоров и
микрокомпьютеров. Появились вы числительные системы с малым уровнем
потребления энергии и универсальными возможностями, которые позволяют
решать задачи управления объектами различной физической природы. На основе
их применения снижаются затраты на автоматизацию основных технических и
вспомогательных процессов. В результате будет решена задача комплексной
автоматизации производства во всех отраслях. Это позволит увеличить
производительность труда, уменьшить себестоимость выпускаемой продукции и
значительно сократить ручные операции в промышленности. Однако для широкого
развития работ в данном направлении необходимо готовить значительное число
инженеров - системотехников, умеющих создавать и применять микропроцессоры
и микрокомпьютеры. Кроме того, следует выпускать и много инженеров -
математиков, разрабатывающих соответствующее программное обеспечение. Для
их обучения необходимо иметь учебные пособия, посвященные аппаратным и
программным средствам современной вычислительной техники.
Несмотря на то что выпущено значительное количество литературы,
посвященной разработке и применению микропроцессоров и микрокомпьютеров, а
также описание программных средств, предлагаемая книга представляет
определенный интерес комплексным подходом и методической целостностью.
На обзор представлена книга американских авторов Левенталя Л. и Сэйвилла У.
"Программирование на языке ассемблер для микропроцессоров 8080 и 8085".
Книга переведена с английского, напечатана в 1987г. в издательстве Радио и
связь. Издание включает в себя 488 страниц.
Для начала рассмотрим содержание этой книги чтобы сделать окончательный
анализ по ее достоинствам и недостаткам, а также конкретизировать к какой
группе эта книга предназначена. На обзор кратко будут представлены части
этой книги, затем остановим свое внимание на определенной главе.
Книга состоит из двух частей: обзора вопросов программирования на языке
ассемблера и набора подпрограмм. Первая часть хорошо проиллюстрирована
большим числом примеров, позволяющих быстро усвоить основные навыки
программирования для рассматриваемых микропроцессоров. Подпрограммы,
приведенные во второй части книги, могут удовлетворять потребности
большинства программистов в стандартных процедурах.
Эта книга, можно сказать, является как бы справочным пособием для
программистов, работающих на языке ассемблера. Она содержит краткий обзор
вопросов программирования на языке ассемблера для конкретного
микропроцессора и набор полезных подпрограмм. В этих подпрограммах
использовались стандартные соглашения по формату, документированному
оформлению и методам передачи параметров. При этом соблюдались правила
наиболее распространенных ассемблеров; кроме того, описаны назначение,
процедура, параметры, результаты, время выполнения и требования к памяти.
ГЛАВА 1. ОБЩИЕ МЕТОДЫ ПРОГРАММИРОВАНИЯ
Служит введением в программирование для данного процессора; в ней
приводятся основные отличия этого процессора от других микропроцессоров и
мини-ЭВМ. В этой главе описываются общие методы написания программ на языке
ассемблера для микропроцессора 8080 и 8085. Она содержит способы выполнения
следующих операций:
загрузка и сохранение регистров;
запоминание данных в памяти;
арифметические и логические операции;
работа с разрядами;
проверка разрядов;
проверка на определенные значения;
числовые сравнения;
организация циклов (повторяющихся последовательностей операций);
обработка массивов;
поиск в таблице;
работа с символами;
преобразование кодов;
арифметические операции повышенной точности;
умножение и деление;
обработка списков;
обработка структур данных.
В отдельных разделах описываются передача параметров подпрограммам,
общие методы написания драйверов ввода-вывода и программ обработки
прерываний, а также приемы, позволяющие ускорить выполнение программ и
уменьшить используемую ими память.
Для тех, кто знаком с программированием на языке ассемблера на других
вычислительных машинах, здесь дается краткий обзор особенностей процессоров
8080 и 8085.
1. Арифметические и логические операции разрешены только между
аккумулятором и байтом непосредственных данных или между аккумулятором
и регистром общего назначения. Однако один регистр общего назначения в
действительности указывает на адрес в памяти; это регистр М, который в
действительности обращается к адресу в памяти, содержащемуся в
регистрах Н и L. Таким образом, команда ADD M, например, означает:
прибавить к аккумулятору содержимое байта памяти, адресуемого через
регистры H и L.
2. Аккумулятор и регистры Н и L являются специальными регистрами. Они
являются единственными регистрами , которые могут быть прямо загружены
или записаны в память. Аккумулятор является единственным регистром,
который может быть инвертирован, сдвинут, косвенно загружен с
использованием адреса в паре регистров В или D, косвенно записан в
память по адресу, содержащемуся в паре регистров В или D, или
использован в командах IN и ОUT. Регистры Н и L составляют единственную
пару, которая может быть использована косвенно в арифметических
командах, при записи в память данных, заданных непосредственно в
команде, или при загрузке и записи в память других регистров, отличных
от аккумулятора. Регистры Н и L являются также единственной парой,
которая может быть передана в счетчик команд или указатель стека. Более
того, эти регистры используются как аккумулятор двойной длины при
сложении 16-разрядных чисел (команда DAD). Регистры D и Е являются в
некотором смысле также специальными, поскольку одной командой (XCHG)
можно поменять их содержимое с содержимым регистров Н и L. Таким
образом, регистры в 8080 и 8085 весьма асимметричны, и программист
должен аккуратно выбирать, для каких данных и адресов какими регистрами
пользоваться.
3. Часто для одних и тех же физических регистров используются несколько
имен. Для многих команд A,B,C,D,E,H и L являются 8-разрядными
регистрами. Для других команд регистры В и С (В- старший по значению),
D и Е (D- старший по значению) или Н и L (Н- старший по значению)
являются 16-разрядной парой регистров. Термины пара регистров В,
регистры В и С и пара регистров ВС имеют одно и тоже значение; подобные
же варианты существуют для регистров D и Е и H и L. Заметим, что пара
регистров и два одиночных регистра физически одно и то же, и они не
могут служить одновременно для различных целей. Регистры Н и L
фактически почти всегда применяют для косвенного адреса из-за наличия
команд, имеющих доступ к регистру М, и таких специальных команд, как
SPHL, PCHL, XTHL и XTHG. Благодаря тому, что существует команда XCHG,
для второго адреса берут регистры D и Е , а не В и С. Регистры В и С
используют обычно как отдельные 8-разрядные регистры для временного
хранения данных.
4. Воздействие различных команд на флаги весьма непоследовательно. К
некоторым особенно необычным действиям относятся следующие:
e) логические команды очищают флаг переноса;
f) команды сдвига не действуют на другие флаги, кроме флага переноса;
g) команды загрузки, записи, пересылки, увеличивают на 1 пары регистров
и уменьшают на 1 пары регистров вообще не оказывают влияния на флаги;
h) 16-разрядное сложение действует только на флаг переноса.
9. Отсутствует косвенная адресация через память и индексация. Отсутствие
косвенной адресации через память компенсируется загрузкой косвенного
адреса в регистры Н и L. Действительная косвенная адресация, таким
образом, является двухшаговым процессом. При желании загрузить или
записать в память аккумулятор можно также загрузить косвенный адрес в
регистры В и С или D и Е. Отсутствие индексной адресации компенсируется
добавлением пары регистров с помощью команды DAD. Эта команда добавляет
пару регистров к Н и L. Таким образом, индексация требует нескольких
шагов:
j) загрузить индекс в пару регистров,
k) загрузить базовый адрес в другую пару (одной из пар регистров должны
быть Н и L), в) используя команду DAD, сложить две пары и г)
использовать сумму как косвенный адрес (при помощи обращения к
регистру М). Индексация в 8080 и 8085 - долгий и неудобный процесс.

12. Нет флага переполнения при получении дополнения до двух, так что надо
определять такое переполнение программным путем. Из этого следует, что
трудно работать с числами со знаком.
13. Многие обычные команды отсутствуют, но могут быть легко смоделированы с
помощью регистровых команд. Примерами являются очистка аккумулятора ( с
использованием SUB A или XRA A), логический сдвиг аккумулятора влево
(с помощью ADD A), очистка флага переноса (ANA A или ORA A) и проверка
аккумулятора (ANA A или ORA A). Команда ANA A и ORA A очищают флаг
переноса и устанавливают остальные флаги в соответствии с содержимым
аккумулятора. Причем загрузка регистра не действует на флаги.
14. Нет относительных переходов. Фактически, единственной командой
перехода, которая не требует абсолютного адреса, является PCHL, по
которой загружается счетчик команд из регистров Н и L и, таким образом,
производится косвенный переход.
15. Есть два отдельных набора команд увеличения и уменьшения на 1. Команды
DCR и INR применяются к 8-разрядным регистрам и действуют на все флаги,
за исключением флага переноса. Команды DCX и INX применяются к 16-
различным парам регистров и вообще не действуют на флаги. Можно
использовать 16-разрядные пары регистров как обыкновенные счетчики, но
единственным способом проверки пары на 0 является использование команды
логическое ИЛИ к двум регистрам вместе с аккумулятором.
16. Нет арифметических или логических сдвигов. Единственными командами
сдвига являются команды циклического сдвига с флагом переноса или без
него. Другие сдвиги могут быть смоделированы при помощи команд
циклического сдвига (RRC, RLC, RAR и RAL) и команд сложения (ADD A, ADC
A и DAD H). Флаг переноса может быть установлен с помощью STC, а очищен
с помощью ANA A (или ORA A).
17. Аккумулятор является единственным регистром, который может быть
сдвинут, инвертирован или использован для ввода или вывода.
Единственными командами, которые оперируют непосредственно с регистрами
общего назначения, являются команды MOV ( пересылка содержимого в
другой регистр или из другого регистра), MVI (загрузка
непосредственного операнда), DCR (уменьшает на 1) и INR (увеличение на
1). Эти команды могут оперировать также с регистром М, т.е. байтом из
памяти, адресуемым через регистры Н и L.
18. В стек или из стека могут быть переданы только пары регистров. Одной из
таких пар является слово состояния процессора (PSW), которое содержит
аккумулятор (старший байт) и флаги (младший байт). Команды CALL и
RETURN передают адреса в стек или из него.
19. В микропроцессоре 8080 отсутствует читаемый флаг системы прерываний.
Это создает трудности в том случае, когда исходное состояние системы
прерываний должно быть восстановлено после выполнения секции команд,
которая должна выполняться при закрытых прерываниях. Для решения этой
проблемы можно копию состояния прерываний хранить в ОЗУ. С другой
стороны, 8085 имеет читаемый флаг разрешения прерываний.
20. В микропроцессорах 8080 и 8085 приняты следующие общие соглашения.
. При записи всех 16-разрядных адресов младший байт записывается
первым (т.е. по меньшему адресу). Порядок байтов в адресах тот же,
что и в микропроцессоре Z80 и 6502, но является обратным порядком
байтов, принятому в микропроцессорах 6800 и 6809.
. Указатель стека содержит младший адрес, действительно занятый в
стеке. Это соглашение также принято в микропроцессорах Z80 и 6809,
но явно противоположно принятому 6502 и 6800 (следующий доступный
адрес). Согласно всем командам 8080 и 8085 данные в стек
записываются с предварительным уменьшением на 1 (вычитанием перед
записью байта 1 из указателя стека) и загружаются из стека с
последующим увеличением на 1 (добавлением после загрузки байта 1 к
указателю стека).
. Флаг разрешения прерываний (только в 8085), равный 1, разрешает
прерывания, а 0 - запрещает их. Такое же соглашение принято и в
Z80, но оно обратно принятому в 6502, 6800 и 6809.
Представленная часть первой главы рассмотрела особенности процессоров,
она так и называется - краткий обзор для опытных программистов. Теперь
будем рассматривать дальше, причем не указывая конкретно команды, а
описывая понятия и особенности операций представленной на обзор первой
главы данной книги.

ЗАГРУЗКА РЕГИСТРОВ ИЗ ПАМЯТИ
В микропроцессорах 8080 и 8085 предусмотрены четыре способа адресации,
которыми можно пользоваться при загрузке регистров из памяти: прямая (из
памяти с конкретным адресом), непосредственная (с конкретным значением),
косвенная (из адреса, помещенного в паре регистров) и стековая ( из
вершины стека).
ЗАПОМИНАНИЕ РЕГИСТРОВ В ПАМЯТИ
Для запоминания регистров в памяти существуют три способа адресации:
прямая (в память с конкретным адресом), косвенная (в память с адресом,
который находится в паре регистров) и стековая (в вершину стека).
ЗАПОМИНАНИЕ ДАННЫХ В ОЗУ
Начальные значения ячеек ОЗУ задаются либо через аккумулятор, либо
прямо или косвенно с использованием регистров Н и L.
АРИФМЕТИЧЕСКИЕ И ЛОГИЧЕСКИЕ ОПЕРАЦИИ
Для большинства арифметических и логических операций (сложение,
вычитание, логическое И, логическое ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ и сравнение) одним
из операндов является аккумулятор, а вторым 8-разрядный регистр или байт
данных, заданный непосредственно в команде. Результат (если он существует)
помещается в аккумулятор. Если используется регистр М, то процессор
получает операнд из памяти по адресу, который содержится в регистрах Н и L.
РАБОТА С РАЗРЯДАМИ
Программист может установить, очистить, получить обратный код
(дополнение к 1) или проверить разряды, используя логические операции с
соответствующими масками. Команды сдвига и получение обратного кода могут
оперировать только с аккумулятором, но в то же время для выполнения
небольшого числа сдвигов могут использоваться арифметические и логические
команды. Возможны следующие операции с отдельными разрядами аккумулятора:
установить с помощью операции логическое ИЛИ с единицами в соответствующих
позициях;
очистить с помощью операции логическое И с нулями в соответствующих
позициях;
инвертировать (изменить на обратное значение) с помощью операции
ИСКЛЮЧАЮЩЕЕ ИЛИ с единицами в соответствующих позициях;
проверить (на все нули в проверяемых разрядах) с помощью операции
логическое И с единицами в соответствующих позициях.
ПРИНЯТИЕ РЕШЕНИЙ
Процедуры принятия решений могут быть классифицированы следующим
образом
переход, если разряд установлен (логическая единица) или очищен (логический
нуль);
переход, если два значения равны или не равны;
переход, если одно значение больше другого или меньше его.
Наличие процедур первого класса позволяет процессору реагировать на
значения флагов, переключателей, линии состояния или других двоичных
(включено- выключено) сигналов. Наличие процедур второго класса позволяет
процессору определить, имеет ли вводимая величина или результат
определенное значение (например, введен ли определенный символ команды или
терминатор, или равен ли результат нулю). Наличие процедур третьего класса
позволяет процессору определить, превышает ли значение некоторый числовой
порог или ниже его (например, правильное или ошибочное значение, выше или
ниже предупредительного уровня или заданной точки).
ОРГАНИЗАЦИЯ ЦИКЛОВ
Самый простой способ выполнения цикла (т.е. повторения
последовательности команд) в микропроцессоре 8080 или 8085 состоит в
следующем:
1. Загрузить в регистр общего назначения число, указывающее, сколько раз
должна быть выполнена последовательность команд:
2. Выполнить команды;
3. уменьшить заданный регистр на 1;
4. вернуться к шагу 2, если результат шага 3 не равен 0.





Реферат на тему: Андрей Петрович Ершов (1931-1988)


Андрей Петрович



[pic]



Ершов

(1931 – 1988)гг.


Введение


Академик Андрей Петрович Ершов (1931-1988) - один из зачинателей
теоретического и системного программирования, создатель Сибирской школы
информатики. Его существенный вклад в становление информатики как новой
отрасли науки и нового феномена общественной жизни широко признан в нашей
стране и за рубежом.
Он проводил фундаментальные исследования в области схем программ и
теории компиляции. Книга А. П. Ершова "Программирующая программа для
электронной вычислительной машины БЭСМ" была одной из первых в мире
монографий по автоматизации программирования.
Работы Ершова по технологии программирования заложили основы этого
научного направления в нашей стране.
Язык программирования АЛЬФА и оптимизирующий Альфа-транслятор, первая
советская система разделения времени АИСТ-0, система учебной информатики
Школьница, система подготовки печатных изданий Рубин, многопроцессорная
рабочая станция МРАМОР - все эти проекты были инициированы А. П. Ершовым и
выполнялись под его руководством.
Он одним первых в нашей стране осознал ключевую роль вычислительной
техники в прогрессе науки и общества. Его блестящие идеи заложили основу
для развития в России таких научных направлений, как параллельное
программирование и искусственный интеллект. Более 20 лет тому назад он
начал эксперименты по преподаванию программирования в средней школе,
которые привели к введению курса информатики и вычислительной техники в
средние школы страны и обогатили нас тезисом "программирование - вторая
грамотность".
Ершов принимал активное участие в подготовке множества международных
конференций и конгрессов, был редактором или членом редколлегии как русских
журналов "Микропроцессорные средства и системы", "Кибернетика",
"Программирование", так и международных - Acta Informatica, Information
Processing Letters, Theoretical Computer Science.
Академик А.П.Ершов очень много внимания уделял проблемам
информационного обеспечения ученых. Свою научную библиотеку он собирал всю
жизнь. Ко времени безвременной кончины А.П.Ершова в его личной библиотеке
хранилось более 30 тысяч книг, журналов, трудов конференций, препринтов и
отдельных оттисков статей практически на всех европейских языках. После
смерти академика А.П.Ершова его наследники передали библиотеку в Институт
систем информатики, который к тому времени выделился из Вычислительного
центра. Теперь это Мемориальная библиотека им. А.П.Ершова.
В 1988 году был создан благотворительный Фонд имени А.П.Ершова,
основной целью которого являлось развитие информатики как изобретательства,
творчества, искусства и образовательной активности.
Андрей Петрович Ершов был не только талантливым ученым, учителем и
борцом за свои идеи, но и выдающейся, разносторонне одаренной личностью. Он
писал стихи, переводил на русский язык стихи Р. Киплинга и других
английских поэтов, прекрасно играл на гитаре и пел.



Путь в программирование

Андрей Петрович Ершов, выдающийся программист и математик, лидер
советского программирования, родился 19 апреля 1931 г. в Москве. Умер после
тяжелой болезни в Москве 8 декабря 1988 г.
Происходил он из семьи потомственных интеллигентов. Отец был инженером-
химиком, мать - библиотекарем.
С 1943 г. родители А.П.Ершова живут в Сибири, в Кемерове, где в 1949
г. он закончил среднюю школу. В том же году он поступает на физико-
технический факультет Московского университета, собираясь стать физиком.
Однако из-за запретов учиться на физика ему не дали, а разрешили
перевестись на механико-математический факультет того же университета. Там
он стал специализироваться на кафедре вычислительной математики,
руководимой академиком С.Л.Соболевым, а на последних курсах под влиянием
А.А.Ляпунова увлекся программированием. Еще будучи студентом, в 1953г., он
поступил на работу в Институт точной механики и вычислительной техники -
организацию, в которой складывался один из первых советских коллективов
программистов.
Таков был его, не совсем добровольный, путь к программированию. Выбор
области деятельности, сделанный А.П.Ершовым, оказался счастливым как для
него, так и для программирования. Действительно, А.П.Ершов был многообразно
талантлив, он мог бы достигнуть больших результатов и в какой-либо другой
области деятельности, в частности в физике, которая первоначально была им
выбрана, поэтому нельзя сказать, что программирование - единственное
направление, где он мог бы проводить свои исследования. Однако именно в
такой зарождающейся науке, как программирование, удивительно к месту
пришлись такие грани его таланта, как умение нетрадиционно мыслить,
находить ясные основы интуитивно складывающегося знания, видеть
перспективные точки роста. Другая, более определившаяся научная дисциплина,
наверное, дала бы ему меньшие возможности приложения своего
интеллектуального потенциала - и в этом было счастье его выбора. Но, с
другой стороны, и программирование в то нуждалось в ученых с характером
первооткрывателей - подобных А.П.Ершову - для формирования из разнородной
практики начального научного и методического фундамента. Деятельность
Ершова, о которой пойдет речь дальше, оказалась очень созвучной этим нуждам
программирования, так что выбор, сделанный им, - удача для
программирования.



Влияние на науку


В 1954 г. А.П.Ершов закончил университет - это был первый в советских
вузах массовый выпуск по специальности "программирование". С 1954 по 1957
г. он аспирант А.А.Ляпунова в Московском университете. Кандидатскую
диссертацию, посвященную понятию операторного алгорифма (существует много
определений этого термина. Например, акад. А. Н. Колмогоров дает такое
определение: алгоритм или алгорифм - это всякая система вычислений,
выполняемых по строго определенным правилам, которая после какого-либо
числа шагов заведомо приводит к решению поставленной задачи. Тьюринг –
английский программист-теоретик создал так называемую машину Тьюринга, с
помощью которой можно реализовать любой алгоритм, а то, что нельзя на ней
реализовать, алгоритмом не является. Машина Тьюринга – это лента, на
которой записаны некоторые символы. По ней «бегает» каретка, которая читает
текущий символ, и в соответствии с текущим символом и текущим состоянием
может переходить к следующему или предыдущему символу, либо оставаться на
месте и менять состояние, а также менять текущий символ на ленте.), он
подготовил к 1958 г., однако в связи с настороженным отношением математиков
к новой науке защитить ее ему удается только в 1962 г. Докторская
диссертация по методам построения трансляторов защищается им в 1968 г. В
1970 г. он становится членом-корреспондентом, а в 1984 г. - академиком АН
СССР.
Такое быстрое продвижение связано с тем, что уже в конце 50-х гг. он
становится одним из ведущих советских программистов - не только благодаря
своим блестящим индивидуальным работам, но и как руководитель плодотворно
работающих программистских коллективов. В 1957 г. он становится заведующим
отделом автоматизации программирования во вновь созданном Вычислительном
центре АН СССР. В связи с созданием Сибирского отделения АН СССР по просьбе
директора Института математики СО АН СССР академика C.Л.Соболева он берет
на себя обязанность организатора и фактического руководителя отдела
программирования этого института.
В 1960 г. он становится и формальным главой этого отдела и
окончательно переезжает в Сибирь. Сибирское отделение привлекало молодых
активных ученых большими возможностями организации новых масштабных
исследований, и Ершов был одним из тех молодых ученых, которые в конце 50-х
и начале 60-х гг. вместе с академиками-основателями создавали институты
нового научного центра в Академгородке. В дальнейшем отдел Ершова стал
одной из основ созданного в 1964 г. Г.И.Марчуком Вычислительного центра СО
АН СССР. Благодаря Ершову Академгородок становится одним из ведущих центров
по программированию. Ершов создал известную новосибирскую школу системного
и теоретического программирования, исследования которой складывались из
работ его учеников и последователей в различных новосибирских институтах.
Сам Ершов, будучи только заведующим отделом и отделением Вычислительного
центра, стал идейным руководителем и неформальным главой большого и активно
работающего содружества новосибирских программистов.
Велико влияние Ершова и на развитие программистской науки и практики в
стране в целом. Это влияние далеко не ограничивалось тем, что он был главой
одной из ведущих советских научных школ, или тем научным вкладом, о котором
речь пойдет ниже. С конца 60-х гг. он становится в центре программистской
жизни в СССР. Он был одним из основных организаторов первых национальных
конференций по программированию, большого числа национальных конференций,
семинаров и школ по различным проблемам системного и теоретического
программирования, членом редколлегий основных советских программистских
журналов, редактором (с момента его образования) журнала "Микропроцессорные
средства и системы", председателем ряда национальных комиссий и рабочих
групп. В 1987 г. он становится председателем Совета по кибернетике, который
координирует все отечественные академические исследования по информатике и
программированию.
Ершов уделял много внимания научно-организационной работе, в том числе
в мировом масштабе. Он был членом ряда комитетов и рабочих групп IFIP
(International Federation on Information Processing), активным участником
ряда конгрессов, в том числе вице-председателем программного комитета IFIP-
68, приглашенным докладчиком IFIP-71, организатором рабочих конференций
IFIP. В 1980 г. награжден "Серебряным сердечником" (Silver Core). Также
состоял членом редколлегии таких международных изданий, как "Information
Processing Letters", "Theoretical Computer Science" и др. Его международные
творческие и дружеские связи были обширны. Он выступал с приглашенными
докладами в большом числе организаций Европы, Японии и США. С 1965 г. он -
член Association for Computing Machinery (АСМ), в 1974 г. стал почетным
членом Британского Компьютерного общества. В последние годы жизни А.П.Ершов
уделяет много внимания международной работе по информатике в образовании.


Теоретическое и системное программирование


А.П.Ершов - один из тех ведущих мировых ученых, благодаря деятельности
которых выделились и оформились такие научные направления современного
программирования, как теоретическое и системное программирование. Его
творческое наследие обширно, оно включает более 200 книг, статей,
препринтов, не считая большого числа предисловий, редакционных статей,
отзывов и т.п., а также газетных публикаций, стихов (и хороших стихов!) и
пр. Объем этой статьи не позволяет дать достаточно подробный обзор всех
работ Ершова, и здесь мы ограничимся изложением основных идей и ведущих
публикаций.
А.П.Ершов был одним из первых советских программистов, внесшим
определяющий вклад в отечественное программирование, поэтому естественно,
что становление и развитие его научных интересов в большей степени
соответствует становлению и развитию как советского, так и мирового
программирования.
Как и большинство программистов 50-х гг., А.П.Ершов начинал с создания
алгоритмов численных методов и стандартных программ. Первая его работа («Об
одном методе обращения матриц» - доклад АН СССР, 1955) была посвящена
разработанному им методу обращения матриц, относящемуся к классу методов
пополнения. Хорошая алгоритмичность метода - компактность алгоритма,
удобные рекуррентные соотношения - позволила этому методу быть основой для
стандартных программ для ряда первых советских ЭВМ (для одной из них - БЭСМ
- такая программа была разработана Ершовым). Середина 50-х гг. была
временем становления теоретического и системного программирования.
Системное программирование начиналось с направления, названного тогда
автоматизаций программирования и связанного с разработкой языков
программирования и методов их трансляции. Начальный толчок этому
направлению дали работы Рутисхаузера и Ляпунова. Первые советские языки
программирования были связаны с операторными схемами, предложенными
А.А.Ляпуновым. Эти схемы задавали структуру программы в терминах операторов
некоторых фиксированных классов с последующим заданием представления этих
операторов. А.П.Ершов был руководителем и создателем одних из первых
советских программирующих программ для ЭВМ БЭСМ и "Стрела"
(программирующими программами тогда назывались интегральные разработки
языка и системы программирования). На основе данных работ им была написана
монография («О понятии вычислительного алгорифма» - тезис доклада совещания
по вычислительной математике и применению средств вычислительной техники,
1958), первая в мировой литературе монография по автоматизации
программирования, практически немедленно переведенная и изданная за
рубежом, а также ряд работ о вычислительной технике и реализации алгоритмов
на ней в 1956-1958 гг. В монографии и этих работах А.П.Ершовым был впервые
предложен ряд понятий, подходов и методов, вошедших в классический багаж
языков и систем программирования. Здесь и понятие цикла как фундаментальной
конструкции языков программирования, и триадное внутреннее представление
выражений, и метод функции расстановки для поиска совпадающих фрагментов
(имен), и алгоритм оптимального распределения рабочих ячеек (регистров), и
начальные идеи потокового анализа, и пр.

АЛЬФА- и БЕТА- языки
Первым большим проектом, с которого начиналась новосибирская школа,
был трансляторный проект "Альфа". В отличие от предыдущих проектов
программирующих программ проект Альфа был хорошо, практически по-
современному специфицирован: было подготовлено формальное описание входного
языка, была создана развернутая функциональная спецификация системы.
Отправной точкой проекта была публикация начальной версии нового языка
программирования, суммировавшего накопившийся программистский опыт и
создаваемого международной рабочей группой - так называемого Алгола 58.
Группа, руководимая А.П.Ершовым, стала готовить на основе Алгола 58 новый
проект языка - параллельно с работавшей международной группой. Во многом
направления развития языка оказались совпадающими, но в новосибирском
проекте появился ряд существенно новых механизмов, поэтому, в конце концов,
язык был сформулирован как правильное расширение окончательной версии
международного языка - Алгола 60. В Альфа-языке впервые были разработана
средства, характерные для последующих за Алголом 60 языков. Было определено
столь важное для вычислительных алгоритмов понятие многомерных значений,
определены операции над ними, в том числе, их конструирование. Были введены
свойственные современным языкам концепции, такие, как разнообразие видов
циклов, задание начальных значений и т.п. В формальном определении языка
впервые была сделана попытка выйти за пределы контекстно-свободных
грамматик.
Сама работа над транслятором была в большой мере и исследовательской,
и пионерской. Именно в этой работе начались складываться принципы
современной оптимизирующей трансляции. Дело в том, что сам Алгол 60 был
определенным вызовом для существовавших методов трансляции. Его существенно
рекурсивная структура, мощность механизма процедур, возможная их
вложенность и потенциальная рекурсивность, общность циклов и индексных
выражений - все это требовало заметной модификации и развития техники
трансляции, а самое главное - ставило вопрос о возможности получения
эффективного кода. По последнему поводу высказывалось ряд сомнений, и Альфа-
транслятор стал действительно первым конструктивным доказательством того,
что для языков, сопоставимых по мощности с Алголом, можно построить
транслятор, дающий сравнимый с ручным программированием код.
Достижению поставленной цели послужил богатый набор оптимизаций,
реализованный в Альфа-трансляторе. Была предложена смешанная стратегия
программирования (то, что позднее на Западе было названо "casing") таких
конструкций, как процедуры, циклы, индексные выражения, когда на основании
анализа контекста выбирался наиболее эффективный из допустимых способов
генерации конструкций. Особенно изощренно программировались процедуры и
подстановка параметров для них: выбор осуществлялся среди 11 способов. В
результате алголовские процедуры при всей мощности механизма
программировались оптимальным образом (что стимулировало программистов
активно использовать это средство). Существовавшая ранее оптимизация
экономии выражений была существенно развита - полностью учитывались
свойства коммутативности и ассоциативности; если это преобразование не
стало глобальным, то оно уже было квазилокальным. Впервые была реализована
глобальная чистка циклов. Тщательной оптимизации подвергались операции над
многомерными значениями - то, что не было в стандартном Алголе, но активно
использовалось вычислителями. Впервые была реализована глобальная экономия
памяти, опирающаяся на теоретические работы А.П.Ершова и С.С.Лаврова.
Альфа-транслятор стал первым в мире транслятором с Алгола с большими
оптимизирующими возможностями. Похожий английский проект Хоукинса и
Хакстебла, который разрабатывался в это время, так и не был до конца
завершен из-за сложности задачи. Конечно, успеху способствовало не только
механическое соединение многих оптимизаций, но и существенное развитие
существовавшей методологии оптимизации программ. Была выдвинута идея
внутреннего языка, к программе на котором и применяются оптимизации,
которая, хотя и не совсем в чистом виде, была реализована. Был реализован
практически глобальный анализ контекста, хотя и разрозненно для различных
оптимизаций, учет которого существенно увеличил мощность оптимизаций -
зародыш современного потокового анализа. Стремление практически всегда
получать эффективный код привело к отказу от некоторых средств Алгола,
важнейшим из которых была рекурсивность процедур.
Альфа-транслятор активно использовался в большом числе организаций
страны. Хотя его интерфейсы с пользователем и простота эксплуатации желали
много лучшего, но высокая эффективность получаемого кода обеспечила хороший
интерес пользователей к этой системе. Поэтому когда на смену М-20 пришла
существенно более высокопроизводительная машина БЭСМ-6, организации,
связанные с большими задачами, стимулировали создание версии Альфа-
транслятора для БЭСМ-6. Самым быстрым решением была простая переделка Альфа-
транслятора, при которой та его часть, которая отвечала за генерацию кода,
была заменена генератором кода для БЭСМ-6. Возник транслятор Алгибр (“Альфа
гибридный”), который был одним из первых отечественных кросс-трансляторов.
Такое решение имело ряд недостатков, но зато оно было реализовано быстро, и
транслятор Алгибр стал первым транслятором для новой машины БЭСМ-6. Решение
существенно облегчалось тем, что в Альфе-трансляторе уже существовал
внутренний язык, хотя и не до конца единый для всех оптимизирующих
преобразований.
Основным затруднением при Алгибр-трансляции была передача
оттранслированного кода с М-20 на БЭСМ-6. В ВЦ СО АН СССР был даже
разработан специальный канал передачи информации между инструментальной и
объектной ЭВМ, однако это не могло быть серийным решением при массовой
трансляции. Возникла необходимость "родного" транслятора для БЭСМ-6.
У разработчиков Альфа-транслятора возникала и внутренняя потребность
модифицировать и улучшить как схему трансляции, так и пользовательские
свойства транслятора, в первую очередь, его интерфейс с пользователем.
Альфа-транслятор, несмотря на его достаточно широкую используемость, носил
черты эксперимента и поиска - хотя идейные решения были найдены верно, но
реализационные решения были характерны скорее для экспериментального, чем
производственного транслятора (большое число просмотров программы - 24,
некоторое дублирование анализа контекста, не всегда оправданное усложнение
оптимизирующих преобразований). Не нужно забывать, что этот транслятор был
первым оптимизирующим транслятором с Алгола. Дополнительный опыт -
транслятор Алгибр, незавершенный проект Альфа-транслятора для ЭВМ Урал-14
(проект ТАУ) - давал основу для новых решений.
Новый транслятор - транслятор Альфа-6 - был улучшенной версией
оптимизирующего транслятора с Алгола. Ряд предыдущих решений был приведен к
более чистому и эффективному виду. Более четко был выделен внутренний язык
и этап потокового анализа программ на внутреннем языке. Общая схема
трансляции уже могла рассматриваться как типовая схема оптимизирующей
трансляции (для одноязыкового транслятора), она насчитывала всего 10
просмотров. Лучше была решена проблема взаимного влияния различных
оптимизирующих преобразований. Идентификация и визуализация ошибок
пользователя была более совершенной, что облегчало эксплуатацию. В
результате система Альфа-6 стала достаточно широко используемой системой у
пользователей БЭСМ-6.



Лексикон


В некотором смысле из анализа общих понятий языков программирования и
осознания их определенной ограниченности выросла предложенная Ершовым в
статье «Математическое обеспечение четвертого поколения» («Кибернетика»,
1973, №1) фундаментальная и многообещающая идея лексикона программирования
как общей среды для разработки и обоснования программ. Он определяет
лексикон как "лингвистическую систему с фразовой структурой, содержащую в
себе формальную нотацию для выражения всех общезначимых конструкций,
употребляемых при формулировании условий задач, при синтезе и
преобразовании программ". Лексикон, говорит Ершов, "выражает не только и не
столько программы, сколько их свойства и наши суждения о них. Язык
программирования кодирует объекты предметной области задачи, а наше знание
об этих объектах остается за пределами программного текста. Лексикон же
является средством описания объектов предметных областей и содержит нотацию
для построения баз знания о предметных областях. Программа, выраженная
средствами лексикона, в определенном смысле содержит в своем тексте
описание своей семантики в виде совокупности нетривиальных фактов о
вычисляемой ею функции - в отличие от "чистых" программ, которые не говорят
ничего о своих функциональных свойствах. Лексикон, в отличие от конкретного
языка программирования, является открытой системой. Для него в целом не
ставится задача трансляции любого его текста в машинную программу, хотя
любая машинная программа в случае необходимости может быть выражена в
лексиконе. Аналогично естественному языку лексикон обладает способностью
описания одной своей части средствами другой своей же части. Не надо
думать, что лексикон - это все и навсегда. Это тщательно отобранная, но
развивающаяся система удачных обозначений. Степень его успеха определяется
степенью общезначимости и общепонятности его нотации".



Смешанное вычисление и
трансформационная машина

Смешанное вычисление представляет собой некоторый универсальный
процесс, определяемый над парами (программа, данные) и приводящий в общем
случае к получению остаточной программы и частичных результатов.
Математическим аналогом смешанного вычисления является функционал, который
для определенного класса функций с несколькими аргументами строит (при
задании некоторых аргументов) функции с меньшим числом аргументов. Процесс
смешанного вычисления может быть, в свою очередь, задан в виде программы
(смешанного вычислителя), что позволяет ставить вопрос о самоприменимости
смешанных вычислений, а сам смешанный вычислитель уподобить s-n-m - функции
Клини.
Понятие смешанного вычисления (и смешанного вычислителя) в применении
к процессорам обработки программ, для которых программы и их атрибуты есть
данные, позволяет с общей точки зрения исследовать и определить различные
виды обработки программ: от трансляции и интерпретации до анализа программ,
их преобразования и генерации самих языковых процессоров. В ряде работ по
смешанным вычислениям и трансформационному подходу Ершов методологически
исследует эту концептуальную сторону смешанных вычислений.
Именно определение принципа смешанных вычислений как общей основы
большого числа процессов работы над программами отличает работу Ершова от
ряда предыдущих работ и догадок Ломбарди, Футамуры, Турчина и др. Это и
стало причиной того, что работы Ершова легли в основу нового и активно
развивающегося направления в программировании, связанного с теоретическими
исследованиями и практическими приложениями смешанных вычислений.
Применение смешанных вычислений оказалось весьма полезным методологически
для понимания и трактовки различных понятий и сущностей программирования.
Понятие смешанных вычислений, введенное Ершовым как общая модель для
различных видов обработки программ, с необходимостью потребовало широкого
круга исследований, как по свойствам самой модели, так и по ее трактовке в
различных областях возможного применения. Было введено понятие корректности
смешанных вычислений и определены модели смешанных вычислений и получения
остаточной программы, для которых можно было доказывать корректность. Одной
из таких моделей, на которых фокусировалось внимание, стала
трансформационная модель, для которой смешанное вычисление задавалось
набором базовых трансформаций. Сама модель смешанных вычислений и их
корректность рассматривались как для императивных языков, так и для
рекурсивных программ. Был получен ряд важных результатов по определению
механизма задержки (замораживания) вычислений и данных, по описанию
процесса смешанных вычислений для различных языков представления программ,
по формулированию набора базовых трансформаций, по надежности
(незацикливанию) процесса смешанных вычислений и пр.
Для реальных приложений смешанных вычислений помимо, разумеется,
необходимых свойств корректности и надежности важными оказываются их
гибкость и глубина. И здесь Ершову и его ученикам удалось существенно
продвинуться в исследованиях. Гибкость смешанных вычислений может быть
заметно увеличена, если смешанный вычислитель будет при получении
остаточной программы учитывать не только свойства данных иметь конкретное
значение, но и более тонкие свойства, определяемые известными соотношениями
между данными (предикаты над данными). В этом случае смешанный вычислитель
оперирует с некоторой определенной на данных обстановкой. Глубина смешанных
вычислений определяется схемой смешанных вычислений. Наряду со строгой
схемой смешанных вычислений, введенной вначале, была определена
поливариантная схема, связанная с продвижением смешанных вычислений в
альтернативы, даже если выбор альтернатив не может быть определен при таком
вычислении.
Совместно с Островским Ершов исследовал применение смешанных
вычислений в такой традиционно важной области, как трансляция, а именно
построение трансляторов для заданного описания входного языка. Существенно
отметить, что здесь были получены не только результаты, демонстрирующие
практическую применимость принципа смешанных вычислений (удавалось строить
трансляторы существенно более эффективные, чем это достигается при обычном
автоматическом построении), но и ряд фактов и наблюдений, важных для
сопоставления методов трансляции и понимания сущности трансляции и
показывающих методологическую важность принципа смешанных вычислений.
Таким образом, в области смешанных вычислений Ершову принадлежит не
только определение основополагающих понятий и моделей, но и определяющий
вклад в теорию и методологию этой области. Он по праву считается
основателем и лидером этого направления, активно развиваемого сейчас в
разных коллективах и странах.
Отталкиваясь от трансформационной модели смешанных вычислений и от своих
работ в области трансляции и оптимизации программ, Ершов определяет
концепцию трансформационной машины. Трансформационная машина есть
абстрактное вычислительное устройство, выполняющее программы в некотором
"сверхязыке", действиями которого являются трансформации пар (программа,
данные). Действия эти поддерживают сохранение некоторого инварианта, что
обеспечивает корректность трансформаций. Концепция трансформационной машины
представляется весьма многообещающей - и как теоретическая модель для
описания и обоснования процессов обработки программ, и как методологическая
основа построения различных инструментальных процессов.
Концепция трансформационной машины является тем важным вкладом в
трансформационный подход к построению программ, энтузиастом и
пропагандистом которого был А.П.Ершов, и различные аспекты которого
исследуются в ряде его работ 80-х гг. Трансформационный подход развивается
сейчас в ряде коллективов у нас и за рубежом и представляется весьма
перспективным, так как он дает возможность получать программы с хорошими
показателями таких качеств, как надежность и эффективность, а также
повышает степень переиспользования программного обеспечения. Работы Ершова
по трансформационному подходу дают естественную точку роста для последующих
исследований.
Следует заметить, что наряду с работами по языкам и методам трансляции
работы по смешанным вычислениям и трансформационному подходу были
источником уже упоминавшейся идеи Ершова о лексиконе программирования.
Заключают работы Ершова по теории программирования его публикации,
посвященные понятию вычислимости. Сам он определяет эти работы как попытку
синтеза взглядов на вычислимость, сложившихся как в математической логике,
так и в теоретическом программировании. Так как понятие вычислимости
является одним из главных как в той, так и в другой области и имеет
фундаментальное значение для других программистских понятий, очевидно, что
определение понятия вычислимости, абстрагированного от несущественных
синтаксических или модельных понятий и вместе с тем вбирающего необходимые
для теории и многочисленной практики сущности, является одной из главных
задач, определяющих дальнейшее взаимовлияние математики и программирования.
В фундаментальной работе «Проблемы программирования: Всесоюзная конференция
в Новосибирске» (Вестник АН СССР, 1970, №6) проводится глубокий анализ
большого числа определений вычислимости, сложившихся в указанных областях,
их сопоставление и оценка вклада в общую теорию. На основании данного
анализа Ершов нащупывает идею определения вычислимости: свести определение
вычислимой функции к понятию детерминанта, т.е. того, что является
инвариантным к различным способам задания вычислений. По-видимому, эти
работы Ершова будут иметь такое же стимулирующее значение для исследований
в данной области, как и его работы начала 70-х гг. для теории схем
программ.


Проект АИСТ

Одной из важных заслуг Ершова перед отечественным и мировым
программированием является то, что он умел оценить текущее состояние науки
и практики и наметить те реальные точки роста и перспективы исследований,
которые будут определять развитие программирования. Так, во второй половине
60-х гг. он одним из первых в стране осознал те новые возможности общения с
ЭВМ, которые создают системы разделения времени. В 1966 г. он организует
работы по автоматическим информационным станциям (проект АИСТ). Проект
АИСТ, создателем и руководителем которого был А.П.Ершов, объединял широкий
круг исследований по архитектуре вычислительных комплексов, их программному
обеспечению и моделированию вычислительных систем. В рамках этого проекта
была создана первая в стране развитая система разделения времени АИСТ-0,
проект которой был предметом доклада на Конгрессе AFIPS 1967 г. («Входной
язык системы автоматического программирования» предварительное сообщение —
М.: ВЦ АН СССР, 1961), а итоговый доклад был сделан на 2-й Всесоюзной
конференции по программированию в 1970 г. («Программирующая программа для
машины» Третье Всесоюзное совещание по вычислительной математике и
применению средств вычислительной техники, 1961). Реализованная на
многомашинном комплексе из отечественных ЭВМ, эта система была во многом
пионерской и внесла большой вклад в развитие отечественных работ по
архитектуре ЭВМ и операционным системам, которые, к сожалению, были в
дальнейшем заторможены ориентацией на копирование зарубежных разработок.
Ряд таких свойств системы, как разделение в процессорах комплекса
управления и обработки, иерархичность строения программного обеспечения,
выделение ядра операционной системы, естественное сочетание различных
режимов общения и обработки, обеспечили хорошую эффективность и гибкость
системы.
Осмысливая опыт проекта АИСТ и других подобных работ у нас в стране и
за рубежом в своем докладе на Конгрессе ИФИП-68, Ершов выдвигает несколько
насущных тезисов: о специализации процессов в многопроцессорном комплексе
для разделения времени, об универсальных и специализированных системах
разделения времени и областях их применимости, о различии требований
профессионалов и непрофессионалов в программировании к общению с системами
разделения времени и о том аспекте систем, который впоследствии будет
назван дружественностью к пользователю.
Опыт руководства такими большими проектами, как АЛЬФА и АИСТ, и работы
в этих проектах дали Ершову осознание общих проблем программирования и
создания программного обеспечения. В 1973 г. - появляется оказавшая большое
влияние на развитие отечественных работ статья. В этой работе проводился
глубокий и развернутый анализ как внешних свойств машин четвертого
поколения, так и различных видов программных систем: операционных систем,
систем программирования и их входных языков, специализированных систем
обработки информации, в том числе пакетов прикладных программ (в работе
дается классификация ППП, сохраняющая свою ценность и в наше время).
Выделен ряд характерных систем обработки информации и определены их внешние
и внутренние свойства. Очерчена общая модель операционной системы - так
называемая базовая операционная система с концентрическим строением.
Отмеченная в работе общность в реализации языков программирования, создании
процессоров диалоговых языков и систем отображения хотя и не вылилась, как
предполагал автор, в создание универсальных систем, но стимулировала работы
по нахождению общей методологии создания таких систем (впрочем, некоторая
ограниченная в своей универсальности многоязыковая транслирующая система на
данной общности была построена - это система БЕТА, о которой говорилось
выше).



Технологические проблемы

Существенным в этой работе было также то, что в ней поднимались
технологические проблемы разработки программного обеспечения. Ершов был
одним из первых в стране, кто поставил проблему создания технологии
программирования. Надо сказать, что стремление Ершова провести аналогию
между созданием программного обеспечения и промышленным производством,
ввести дисциплину, организацию, инструментирование в такой казавшийся
многим старым программистам нерегламентируемый творческий процесс, как
программирование, встречало у многих наших коллег конца 60-х гг. активное
сопротивление и даже резкий протест. То, что сейчас кажется тривиальным
утверждением, Ершову приходилось отстаивать в жарких спорах и дискуссиях.
Ершов еще в 60-х гг. отстаивал точку зрения, что программирование,
несмотря на интеллектуальность и творческий характер этого процесса,
нуждается в организации и регламентации, наборе или системе соглашений и
правил, не говоря уже об инструментальном обеспечении. Руководя и активно
участвуя в больших программных проектах, Ершов с его пытливым умом не мог
не задуматься над вопросом: "Как это делается?" Еще в работах по АЛЬФА и
АИСТу он пишет о ряде организационных принципов и регламентирующих
соглашений. Первой его работой, полностью посвященной технологии
программирования, была статья («Об одном виде контакта человека с
машиной»). Автоматизация мыслительных процессов» материалы научных
семинаров по теоретическим и прикладным вопросам кибернетики, 1963.), она
же была первой советской работой в этом возникшем в те годы новом
направлении, и сам русский термин - технология программирования (software
ingineering) - был предложен Ершовым. В соответствии с названием большая
часть работы была посвящена собственно технологии трансляции. В ней
рассматривались общие вопросы проектирования трансляторов: их структуры,
системы технических процедур и пр., вопросы выбора методов реализации,
вопросы организации отладки и документирования. Отдельно рассматривались
проблемы автоматизации построения трансляторов и автоматизированного
построения документации. Важной стороной работы было то, что проблемы
технологии трансляции рассматривались в общем контексте технологии создания
больших программных систем.
В ряде других работ Ершов исследует и развивает идеи технологии
программирования. Им была предложена матричная организация коллектива
разработчиков, внесен вклад в спецификацию этапов разработки, в том числе
применительно к разработке трансляторов, проведен анализ реальной
разработки (АЛЬФА-6) с точки зрения ее технологичности. В работе
«Алгоритмические языки программирования» (Вестник АН СССР. —1968. — №3),
написанной совместно с Г.Д.Чининым, определяется, как должен быть
организован коллектив, ведущий разработку промышленных трансляторов, как
должна решаться такая важная проблема, как преемственность и
переиспользование разработанного программного обеспечения, как должен
проходить и информационно обеспечиваться процесс разработки.
Ориентированная на технологию трансляции, эта работа дает ряд хороших идей
по технологиям промышленной разработки других видов программного
обеспечения.
С общеметодологической точки зрения для развития технологий
программирования, их обоснования и формирования концептуального фундамента
крайне важной является работа, представляющая текст доклада Ершова на
заседании Президиума Академии наук СССР. Для программистской общественности
эта работа мне кажется не менее важной, чем для членов Президиума АН,
которым сделан этот доклад.
Уже давно ведутся попытки построить процесс программирования как
доказательный, при котором правильность программы обеспечиваема или
проверяема на каждом этапе ее построения. Для реальных технологий
программирования с их несомненным требованием обеспечения надежности
(высокой степени правильности) программы эти попытки при их удачном
продвижении имели бы неоценимое значение. Известен, например, подход
Э.В.Дейкстры, который основан на идеальной тенденции строить программу как
точный вывод из математической постановки задачи. Несмотря на свою
идеальность и "навязываемость" жесткой дисциплины, этот подход является
идейной основой (может быть, не до конца чисто реализуемой) ряда
современных технологий. Однако подход Ершова, связанный с оценкой реального
опыта программирования и дифференциацией различных его видов, - не
навязывание дисциплины, а ее извлечение из практики - кажется и более
практичным, и более широким.
Ершов выделяет и анализирует три вида программирования, обеспечивающих
его доказательность: синтезирующее, сборочное и конкретизирующее.
Синтезирующее программирование (одним из типов которого является то,
которое осуществляется по методу Дейкстры) связано с автоматическим,
автоматизируемым или ручным манипулированием знанием о задаче, области
применения и общематематических способах доказательного рассуждения.
Сборочное программирование осуществляет построение программы из уже
существующих (проверенных на правильность) фрагментов. Конкретизирующее
программирование основано на систематическом построении специализированных
программ из универсальной заготовки (одним из способов такого
программирования является применение смешанных вычислений). Ершов, с одной
стороны, рассматривает специфику каждого вида и отмечает их различия,
которые должны выражаться в различных технологических приемах и
инструментах, с другой стороны, говорит о том, что при построении реального
программного обеспечения эти виды могут и нередко должны комбинироваться.
Все это дает основу для создания развитого методологического фундамента
будущих технологий программирования.

Мини- и микро- ЭВМ


Работа “An Experimental Automatic Information Station AIST-O» (AFIPS
Conf. Proc., Atlantic City, April 18–20, 1967. — Washington; London: Acad.
Press., 1966) оценивает с точки зрения применения средств вычислительной
техники новый тогда феномен - появление мини - и микроЭВМ, прогнозирует те
неограниченные возможности, которые они создают, выделяет те новые черты,
которые характерны для программного обеспечения микроЭВМ: интегральность
подхода к совместному проектированию оборудования и софтвера,
специализированность программного обеспечения (ПО), его ориентация на
использование непрофессионалами в программировании. Здесь же делается
оправдавшийся впоследствии вывод о крайней важности для ПО этих ЭВМ проблем
переноса и совместимости, а также намечаются возможные пути решения этих
проблем. В одной из своих работ он справедливо отрицает выдвигавшийся
некоторыми специалистами тезис о стабилизации положения в программировании
и излагают активные точки роста - новые концепции в языках
программирования, кристаллизация и фундаментализация понятий трансляции,
переход от баз данных к базам знаний (в работе они называются "сложными"
базами данных), появление инструментальных комплексов (что впоследствии с
легкой руки "адистов" стало называться "окружением программирования"). Надо
сказать, что прогноз Ершова полностью оправдался. Здесь же оценивается
состояние теории программирования и ее соотношения с практикой, что весьма
существенно для определения путей развития теории. Много в работе говорится
об обучении программированию, о подготовке кадров - но об этой ее стороне
скажем позднее.



Программирование – вторая грамотность


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

Новинки рефератов ::

Реферат: Информация и общество. Проблема информатизации общества (Социология)


Реферат: Основы экологического права (Экологическое право)


Реферат: Теплоэнергетические генераторы и радиоизотопные источники энергии (Физика)


Реферат: Административная ответственность за экологические правонарушения (Экологическое право)


Реферат: Моя организация (Менеджмент)


Реферат: Информационные ресурсы Интернет (Кибернетика)


Реферат: Теория администрации Анри Файоля; школа поведенческих наук (Менеджмент)


Реферат: Окский заповедник (Биология)


Реферат: Кровоточащие и плачущие изображения с точки зрения современного естествознания (Культурология)


Реферат: Гражданское, наследственное и право собственности по Судебникам 1497 и 1550 гг. Различия этих судебников в других отраслях права, кроме гражданского, наследственного и права собственности (Гражданское право и процесс)


Реферат: Проблемы страхования автотранспорта в России (Страхование)


Реферат: Неполадки при загрузке Windows и их устранение. Загрузочная дискета (Программирование)


Реферат: Обзор системы налогообложения в Российской Федерации (Налоги)


Реферат: Бром (Химия)


Реферат: Иконы (Искусство и культура)


Реферат: Набор и отбор персонала для организации (Менеджмент)


Реферат: Институциональный подход в исследовании экономических процессов (Социология)


Реферат: Завещания, приравненные к нотариально удостоверенным (Гражданское право и процесс)


Реферат: Октябрьские события 1917 г. в России, и их сущность, оценка и влияние на развитие политических процессов в мире (Политология)


Реферат: Реформы Никона и раскол Русской Православной Церкви (Религия)



Copyright © GeoRUS, Геологические сайты альтруист