next up previous
Next: Таблицы Up: paper Previous: ОБРАЗОВАНИЕ И УЧЕНЫЕ СТЕПЕНИ

ЗАКЛЮЧЕНИЕ

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

Ряд объективных обстоятельств способствовало тому, что до середины 60-х годов программирование в СССР развивалось до некоторой степени автономно. К этим обстоятельствам относятся более позднее начало работ по электронной вычислительной технике (примерный сдвиг -- пять лет); меньшее количество доступных ресурсов, с чем связан те столь широкий, как в США или в Англии, размах работ; 2практическое отсутствие импорта вычислительных машин и технологии; языковый барьер и сравнительно менее интенсивные личные контакты.

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

При таком положении возникает также в ретроспективной оценке вопрос о степени независимости развития и о вкладе в мировую науку.

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

Базисные программистские термины

* машинная математика [1] 1946

* электронная счетная машина [8] 1948

* память [8] 1948

* команда [15] 1949

* арифметическое устройство [19] 1949

* запоминающее устройство [19] 1949

* программное управление [19] 1949

* регистр [19] 1949

* цикл [19] 1949

* параметр цикла [19] 1949

* устройство управления [17] 1952

* внутренняя память [17] 1952

* внешняя память [17] 1952

* программа [17] 1952

* ввод [17] 1952

* вывод [17] 1952

* сумматор [17] 1952

* код операции [17] 1952

* адрес [17] 1952

* адресная часть [17] 1952

* условный переход [17] 1952

* безусловный переход [17] 1952

* плавающая запятая [17] 1952

* фиксированная запятая [17] 1952

* быстродействующая вычислительная машина [17] 1952

* электронная вычислительная машина [17] 1952

* ячейка (памяти) [17] 1952

* арифметическая операция [17] 1952

* логическая операция [17] 1952

* программирование [21] 1952

* масштабный множитель [21] 1952

* индекс-регистр [21] 1952

* подпрограмма [23] 1952

* главная программа [23] 1952

* ветвление [23] 1952

* блок-схема [23] 1952

рабочая ячейка [23] 1952

формирование команды [23] 1952

стандартная подпрограмма [23] 1952

код (слово) [23] 1952

* замкнутая подпрограмма [27] 1953

* открытая подпрограмма [27] 1953

* параметры (подпрограммы) [27] 1953

* возврат [27] 1953

* библиотека подпрограммы [27] 1953

* библиотечная программа [27] 1953

* компилятор [28](Панов) 1956

* интерпретатор [28] (Панов) 1956

программист [28] (ШБ) 1956

программная документация [28] (ШБ) 1956

схема программы [28](28.1) 1956

логическая схема [28](28.1) 1956

схема счета [28](28.1) 1956

оператор [28](28.1) 1956

оператор переадресации [28](28.1) 1956

оператор восстановления [28](28.1) 1956

оператор формирования [28](28.1) 1956

автоматизация программирования [28](28.2) 1956

программирующая программа (транслятор) [28](28.2) 1956

арифметический оператор (оператор присваивания) [28](28.2) 1956

логический оператор [28](28.2) 1956

экономия рабочих ячеек [28](28.2) 1956

отладка [28](28.2) 1956

стандартная подсхема (макроопределение) [28](28.2) 1956

оператор цикла [28](28.3) 1956

переменная команда [28](28.3) 1956

массив [28](28.3) 1956

относительный адрес [28](28.3) 1956

распределение памяти [28](28.3) 1956

справка (дескриптор) [28](28.4) 1956

прораб (монитор) [28](28.4) 1956

внешние устройства [33] 1956

система команд [33] 1956

логическая шкала [33] 1956

* символическое кодирование [33] 1956

* символический адрес [33] 1956

* действительный (абсолютный) адрес [33] 1956

крупноблочное (модульное) программирование [35] 1956

полупрограмма (стек) [39] 1958

экономия команд [39] 1958

(глобальный) анализ программы [39] 1958

адрес некоторого ранга (косвенный адрес) [47] 1958

граф-схема [58] 1959

настройка по месту [44] 1959

* алгоритмический язык [67] 1959

* пользователь [67] 1959

* эталонный язык [67] 1959

* конкретное представление [67] 1959

* язык публикаций [67] 1959

* ограничитель [67] 1959

* разделитель [67] 1959

* идентификатор [67] 1959

* описание [67] 1959

* переключатель [67] 1959

* тип [67] 1959

* выражение [67] 1959

* процедура [67] 1959

* метка [67] 1959

* формальный, фактический параметр [67] 1959

* металингвистическая формула [69] 196О

* строка [69] 1960

* локальные, глобальные величины [69] 1960

* условный оператор [69] 1960

* вызов процедуры [69] 196О

* размерность массива [69] 1960

переменная с индексами [69] 1960

гранитные пары [69] 1960

рекурсивная процедура [69] 1960

* псевдокоманда [32] 1961

стандартный массив/модуль загрузки [43] 1961

составляющая программа/ассемблер [43] 1961

внешний адрес [43] 1961

внутренний адрес [43] 1961

таблица внешних адресов [43] 1961

прокрутка [43] 1961

* операторы ввода-вывода [65] 1961

* переполнение [65] 1961

* формат (вывода) [65] 1961

* рабочая машина [65] 1961

* выход (из блока) [65] 1961

* перемещаемая программа [65] 1961

граф несовместимости [95] 1961

экономия памяти [95] 1961

маршрут [95] 1961

граф переходов [95] 1961

справочная (структура файла) [56] 1962

дихотомическая справочная (дерево поиска) [56] 1962

математическое обеспечение 1963 3

внутренний язык [75] 1965

мультикоманда [75] 1965

функция расстановки [75] 1965

общий список (куча) [75] 1965

чистка циклов [75] 1965

регулярный цикл [75] 1965

* динамический массив [75] 1965

Из 135 вошедших в список терминов 79 оказались заимствованными, а 56 -- оригинальными.

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

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

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

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

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

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

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

Другим фактором, сузившим фронт работ по программированию, было преобладание научных применений ЭВМ в рассматриваемый период времени. В практике применения ЭВМ отсутствовало понятие массового пользователя. Труд программистов, как ни парадоксально это звучит, еще не был так дефицитен. Не случайно А.И. Китов в своей книге, относящейся к 1956 г., указывает, что для подготовки задач для одной ЭВМ требуется 50 -- 150 математиков ([33] стр. 26).

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

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

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





next up previous
Next: Таблицы Up: paper Previous: ОБРАЗОВАНИЕ И УЧЕНЫЕ СТЕПЕНИ
[ Содержание ]   [ Информатика в Сибири ]


[ Информатика в Сибири ]Музыка! ] [ Киноискусство в Сибири ]Наши услуги! ]Пишите нам ]