355 500 произведений, 25 200 авторов.

Электронная библиотека книг » Симонов Сергей » Цвет сверхдержавы - красный 4 Восхождение. часть 2(СИ) » Текст книги (страница 66)
Цвет сверхдержавы - красный 4 Восхождение. часть 2(СИ)
  • Текст добавлен: 18 апреля 2017, 16:30

Текст книги "Цвет сверхдержавы - красный 4 Восхождение. часть 2(СИ)"


Автор книги: Симонов Сергей



сообщить о нарушении

Текущая страница: 66 (всего у книги 74 страниц)

Никита Сергеевич ничего не понимал в криптографии и не имел ни малейшего представления о модулярной арифметике. Он лишь коротко спросил Серова:

– Ты хоть знаешь, что это такое, и для чего нужно?

– Как эта херня работает, я не знаю и знать не хочу, – ответил Серов. – На то специалисты есть. Я только знаю, что такая ЭВМ крайне необходима для зенитчиков и для шифровальщиков.

– Понял, – кивнул Хрущёв. – Вот бы все так понятно объясняли.

Он взял карандаш и написал на записке Серова, как обычно, с орфографическими ошибками: «Нимедленно в роботу. Абеспечить лутших спецеалистов».

Лучшими специалистами по модулярной арифметике и системе остаточных классов, имеющими опыт разработки ЭВМ, были на тот момент Акушский и Юдицкий. По рекомендации Лукина, Юдицкому дали отдел в НИИ-37 (позднее – НИИ ДАР), где первой задачей Юдицкого было завершение неудачной разработки ЭВМ А-340А для создаваемых НИИ-37 радиолокационных станций (РЛС), которую пришлось существенно переделать. Акушский, как ученый-теоретик, сразу занялся научными основами построения модулярной ЭВМ. По окончании работы над А-340А, Юдицкий вместе с Акушским начал разрабатывать мощные модулярные ЭВМ Т-340А и К-340А. (характеристики реальных ЭВМ http://www.computer-museum.ru/histussr/sok_evm.htm#340).

Но сейчас эти ЭВМ уже создавались на базе микросборок, их разрядность составляла 64 бита, то есть, их строили в соответствии с требованиями декабрьского совещания 1953 года. (АИ, см. гл. 01-12). Вторым заказчиком разработки был Комитет Госбезопасности. Конечной целью было создание криптосистемы, основанной на теории чисел.

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

В решение этой проблемы внесли большой вклад академики Мстислав Всеволодович Келдыш, возглавлявший работы по прикладной математике в МИАН, Анатолий Алексеевич Дородницын, который возглавлял математический отдел в ЦАГИ, Сергей Львович Соболев, руководивший математическим отделом в Институте атомной энергии АН СССР и Михаил Алексеевич Лаврентьев, директор ИТМиВТ с 1950 по 1953 г. Они смогли убедить заинтересованные ведомства в правильности ориентации на универсальные электронные вычислительные машины как главное звено в развитии вычислительной техники.

В МИАН работы по прикладной математике были сосредоточены под руководством академика Келдыша в Отделении прикладной математики (ОПМ), выросшим впоследствии в отдельный Институт прикладной математики. В составе Отделения в 1953 г. был организован первый в СССР отдел программирования, который в течение первого года возглавлял Алексей Андреевич Ляпунов, а с 1954 г. – доктор технических наук Михаил Романович Шура-Бура.

В 1952 году в Московском государственном университете была реорганизована кафедра вычислительной математики, она начала готовить специалистов для работы с ЭВМ. Заведующим кафедрой стал академик Соболев. Выпуски этой кафедры в 1953 и 1954 годах создали первое поколение профессиональных программистов в СССР. Одним из этих программистов выпуска 1954 года был Андрей Петрович Ершов. Еще будучи студентом, в 1953г., он поступил на работу в Институт точной механики и вычислительной техники (ИТМиВТ), где в то время складывался один из первых советских коллективов программистов. Он успел поработать на БЭСМ (А.П. Ершов за пультом БЭСМ http://cshistory.nsu.ru/?el=1262&mmedia=IMAGE), а с 1954 по 1957 г учился в аспирантуре у профессора Ляпунова. К 1958 г он подготовил кандидатскую диссертацию. В 1957 г. он был назначен заведующим отделом автоматизации программирования во вновь созданном Вычислительном центре АН СССР.

Программы для первых ЭВМ составлялись, по большей части, в машинных кодах – в том виде, который понимала сама машина. Это было связано и с доступными на тот момент вычислительными ресурсами – машины имели мизерный объём оперативной памяти и очень малое быстродействие. Тогда господствовала точка зрения, что время компьютера много дороже времени программиста: если программа может выполняться быстрее, то трудоемкость ее составления несущественна. Писать большую программу в машинных кодах было очень сложно, но ещё сложнее было через некоторый промежуток времени понять, что же в программе написано и как она, чёрт её подери, работает.

Высокоуровневых языков программирования, можно сказать, не было. Точнее, не было их реализаций, пригодных к использованию на существующих ЭВМ. Первый язык программирования высокого уровня разработал в 1943-45 годах немецкий учёный Конрад Цузе. Язык назывался Планкалкюль и предназначался для разрабатываемого Цузе компьютера Z4. Однако в то время он так и остался на бумаге – (Первый компилятор для Планкалкюль был разработан лишь в 2000 г, через 5 лет после смерти Цузе)

Работа программиста первых ЭВМ заключалась в переводе алгоритма программы в понятные ЭВМ машинные коды. Трансляторов и компиляторов на тот момент не существовало, и программист был вынужден по таблице кодов вручную расписывать, в какую ячейку памяти записать одно число, в какую другое, какую машинную команду вызвать для их обработки, куда положить результат. Затем ему приходилось вбивать коды на перфоленту или перфокарту, при помощи устройства, напоминающего пишущую машинку. Эта работа занимала много времени и была чревата трудно вылавливаемыми ошибками. Естественным решением было переложить её на ЭВМ. (Пример подобной программы 1959 г в системе команд реальной ЭВМ «Урал-1» http://www.computer-museum.ru/histussr/smm078.htm Таблица 2)

Поэтому большим прорывом стала разработка трансляторов и компиляторов, получивших в СССР название «программирующих программ». Первым в мире транслятором языка высокого уровня является «программирующая программа ПП-1, успешно испытанная в 1954 г. Его разработали два молодых на тот момент программиста – Сергей Сергеевич Камынин и Эдуард Зиновьевич Любимский. Они исследовали реализуемость операторных схем и возможность автоматического построения соответствующих машинных программ. Законченная в 1954 году программирующая программа ПП-1 являлась одним из первых в мировой практике трансляторов и, по-видимому, имела самый высокий уровень входного языка.

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

В конце 50-х развивался и подход к автоматизации программирования с помощью библиотек стандартных программ. Были разработаны — стандартная составляющая программа — ССП, которая осуществляла статическую загрузку и связывание стандартных программ из достаточно обширной библиотеки, интерпретирующая система ИС-2 уже реализовывала некоторые функции будущих операционных систем, осуществляя динамическое связывание, подкачку и смену используемых подпрограмм, причем все это делалось с небольшими накладными расходами и весьма скромными запросами на память. (источник: «Разработка языков программирования и компиляторов в СССР» https://habrahabr.ru/company/ua-hosting/blog/273665/)

Задачей первых ЭВМ была автоматизация громоздких и трудоёмких баллистических расчётов для артиллерии и ракет. Отсюда и то внимание, которое уделялось в первых языках программирования расчётному компоненту – даже название языка Фортран, разработанного с 1954 по 1957 г в компании IBM под руководством Джона Бэкуса, являлось сокращением английских слов formula translator. Типовая программа того времени не имела логических ветвлений, она считывалась в память с перфоленты, перфокарт или магнитной ленты, «зохавывала» предназначенный для обработки объём данных – обычно с такого же носителя, «перемалывала» его в арифметико-логическом устройстве (то, что было до появления процессора), и либо распечатывала результат, либо, что чаще, завершалась с ошибкой.

Джон Маккарти в 1958 г разработал язык LISP, предназначенный для обработки списков данных, применяемый до настоящего времени (например, в AutoCAD), а в 1959-м группа разработчиков под руководством Грейс Хоппер создала язык COBOL, до сих пор широко используемый в обработке финансовых операций.

Вторым основным направлением была алгоритмизация. К 1958 году оформилось представление о логических и прочих нематематических возможностях ЭВМ. В 1958 году международная группа опубликовала начальную версию нового языка программирования ALGOL, основной идеей которого было дать как можно более естественную форму для выражения алгоритмов, прежде всего, вычислительной математики. Его название тоже было сокращением от algoritmic language (Алгоритмический язык). В Алголе появилось представление о программе не как о свободной последовательности команд, а как о блочной структуре, состоящей из чётко описанных и отделённых друг от друга частей.

Опираясь на версию ALGOL-58, Андрей Петрович Ершов вместе с Геннадием Кожухиным и Дмитрием Янковым решили разработать свой язык, внеся в него то, что было бы удобно вычислителям, в частности, возможность оперировать с векторами, матрицами и многомерными объектами. (источник http://www.computer-museum.ru/books/n_mozaika/alfa.htm)

На тот момент уже был решён вопрос о переезде Ершова с коллективом разработчиков в Новосибирский филиал Академии Наук СССР. Поэтому разрабатываемое ими расширение языка ALGOL первоначально получило название «Сибирский». Работа началась в конце 1959 года, а к началу 1960-го язык был вчерне разработан. Летом 1960 г была проведена работа по унификации стилистики разрабатываемого языка с ALGOL-60. Получившееся расширение «АЛГОЛа» получило скромное наименование «Входной язык». В декабре 1960 г. Геннадий Исаакович Кожухин выступил на рабочей конференции по АЛГОЛу с предварительным сообщением о проекте программирующей программы.

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

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

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

Дистанционно управляемые манипуляторы уже использовались на АЭС и атомных производствах. Но там ими управляли люди, здесь же необходимо было переложить управление на ЭВМ. Программировать достаточно сложные движения манипулятора в машинных кодах было сущим мучением. Языки высокого уровня только начали появляться, и для задач управления подходили чуть более, чем никак.

Найти пути решения этой задачи взялись Сергей Алексеевич Лебедев и Алексей Андреевич Ляпунов. (АИ) Собравшись в начале 1959 года, они обсудили варианты и сошлись на том, что задачу управления манипулятором, а также, в будущем, управление различными робототехническими комплексами, надо решать при помощи электронной системы, способной если не самообучаться, то хотя бы легко объединять предварительно описанные элементарные действия в наборы более сложных действий, и обращаться к ним в виде простых, легко читаемых инструкций, максимально приближенных к обычному человеческому языку.

– Смотрите, Сергей Алексеич, вот, скажем, надо взять заготовку с лотка. Пусть даже лоток у нас наклонный и вибрирующий, и манипулятор берёт заготовку каждый раз с одного и того же места, – взялся объяснить свою идею Ляпунов. – То есть, манипулятору надо повернуться в определённое положение, опустить захват до нужной высоты, и схватить заготовку. Потом снова повернуться, вытянуть «руку» к станку, повернуть захват с заготовкой на заданный угол. То есть, нам нужен язык программирования, в котором, примерно как в АЛГОЛе, можно описать элементарные действия в виде подпрограмм, вызывая которые с параметрами значений углов поворота, можно составить основную управляющую программу. Желательно, чтобы она легко читалась человеком, то есть выглядела примерно так:

СНЯТЬ С ТОКАРНОГО СТАНКА ДЕТАЛЬ

ПОСТАВИТЬ ДЕТАЛЬ НА ФРЕЗЕРНЫЙ СТАНОК

ВЗЯТЬ ЗАГОТОВКУ

ПОСТАВИТЬ ЗАГОТОВКУ НА ТОКАРНЫЙ СТАНОК.

– И так далее. Понимаете? Чтобы такую программу понимал и мог составить каждый технолог, не имеющий понятия о всех этих чёртовых машинных кодах!

– Конечно, – согласился Лебедев. – Но на АЛГОЛе такую программу реализовать будет сложно.

– Тут нужен особый язык, которого ещё нет. Его ещё предстоит разработать.

Лебедев задумался, вспоминая. Что-то крутилось в памяти, он чувствовал, что решение есть, оно было прислано из 2012 года в составе полученного массива информации.

– Алексей Андреевич, а вот у вас толковый аспирант был, Ершов. Он перед аспирантурой у нас работал. Он сейчас где? – спросил академик.

– Ершов? Он сейчас заведует отделом автоматизации программирования в Вычислительном центре АН СССР.

– Дайте мне его телефончик, пожалуйста, – попросил Лебедев. – Я думаю, это тот человек, который нам нужен.

Сергей Алексеевич нашёл то, что искал. Александр Веденеев прислал вполне приличную подборку литературы по нескольким перспективным языкам, а также часть репозитория, содержащую не только бинарные пакеты, но и исходные коды. По ним в ИТМиВТ под руководством Лебедева уже переписали в машинных кодах ядро операционной системы (АИ, см. гл. 03-15). Сейчас перед учёными стояла похожая задача.

Андрей Петрович Ершов приехал к Лебедеву в ИТМиВТ через пару дней. Академик коротко пересказал ему свою недавнюю беседу с Ляпуновым.

– Вы ведь сейчас занимаетесь разработкой расширения АЛГОЛа? – спросил Лебедев.

– Не то что бы занимаемся... Пока это только предварительные намётки, – признался Ершов. – Идеи такие есть, но они, если честно, ещё не оформились во что-то конкретное.

– Сейчас правительство поставило перед нами задачу автоматизации производств, разработки программного обеспечения для робототехники. Есть одна зарубежная разработка, судя по всему, из числа закрытых, – сказал Лебедев. – Никакой открытой информации по ней нет, но чекисты постарались. Вот смотрите.

Он слегка повернул к Ершову стоящий у него на столе монитор терминала, и залогинился в БЭСМ-1М. Ершов с интересом смотрел на зелёные буквы и цифры, светящиеся на экране – ему обычно приходилось работать с машиной через телетайп, читая её ответы на бумажной ленте.

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

– Ого! То есть, программа не транслируется, а выполняется в режиме интерпретации, но со скоростью транслируемой программы? – тут же уточнил Ершов.

– Может и транслироваться, но задача трансляции в этом случае тоже упрощается, – ответил академик. – Ещё более важное свойство языка – можно комбинировать несколько операторов – «слов», в более сложное «слово», и сразу же обращаться к нему в программе. Вновь определённое слово заносится на вершину словаря языка. Смотрите.

Лебедев напечатал:

15 SPACES

На мониторе отобразилось Ok, перед которым было напечатано 15 пробелов.

– Теперь я выведу звёздочку, у неё код 42, – академик набрал на клавиатуре

42 EMIT

Нажал ввод и на экране появилась звёздочка «*»

– Чтобы каждый раз не писать, язык позволяет определить новые слова, – Лебедев набрал строчки:

: ЗВЕЗДА 42 EMIT ;

: ПОЛЕ 15 SPACES ;

: ЗВЕЗДЫ 0 DO ЗВЕЗДА LOOP ;

– Определение нового слова начинается с двоеточия и заканчивается точкой с запятой. Теперь, если ввести команду:

ПОЛЕ 3 ЗВЕЗДЫ

– Мы получим три звёздочки, отодвинутые от края экрана на 15 пробелов, – улыбнулся Лебедев. – Поняли принцип, Андрей Петрович?

Язык, который был нужен для решения задач, стоящих перед робототехникой, и который Лебедев показывал Ершову, назывался Forth. В 1959-м его ещё не существовало. Теперь предстояло адаптировать Forth к вновь разработанным советским ЭВМ.

(пример взят из книги Лео Броуди «Начальный курс программирования на языке Forth» и опробован на реализации gforth для Ubuntu, с русскими словами, приведёнными в тексте.)

– Принцип гениальный, Сергей Алексеич, – улыбнулся Ершов. – Этак можно будет по человечески написать 30 ПОВОРОТ ПО ЧАСОВОЙ, а не раскидывать значения в восьмеричном виде по регистрам и ячейкам памяти, да ещё адреса ячеек где-то хранить... Только вот надо бы основной словарь языка тоже перевести на русский.

– Да хоть на малаялам, просто обозначим слова основного словаря цифровыми кодами, а в конкретной локализации эти коды будут вызываться мнемониками на русском, английском, или вообще на суахили, – усмехнулся Лебедев. – Займётесь? Исходники я дам.

– Да с удовольствием! – обрадовался Ершов.

– На мехмате МГУ под руководством Николая Петровича Брусенцова недавно сделали очень необычную машину «Сетунь» с троичной логикой. ЭВМ использует ферритовые логические элементы, и получилась на редкость дешёвой и компактной, – продолжил Лебедев. – Я собираюсь рекомендовать её правительству для серийного производства, в первую очередь, в качестве управляющей машины и учебной ЭВМ для ВУЗов. Надо в первую очередь реализовать Forth для этой машины, а затем – для управляющей ЭВМ УМ-1НХ, которую разрабатывают в Зеленограде товарищи Старос и Берг. Потом будем внедрять его и на других наших ЭВМ, но «Сетунь» и УМ-1НХ – в первую очередь.

(В 1980 г Н.П. Брусенцовым был разработан язык ДССП, напоминающий несколько усложнённый Forth http://forth-j.narod.ru/dssp.htm)

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

– Искусственный интеллект — проблема весьма интересная, но ей мы займёмся позже, – слегка охладил его Лебедев. – Сейчас надо сосредоточить все усилия на управляющих ЭВМ для промышленности.

Ершов с энтузиазмом взялся за дело. Основной словарь Forth был переведён на русский язык, ещё некоторое время ушло на адаптацию языка к машинным кодам ЭВМ «Сетунь». Для скорости вначале реализовали не все слова основного словаря, а лишь те, что были необходимы для управления манипулятором, рассчитывая дополнить словарь в следующей версии.

Параллельно несколько программистов писали на Forth программу для управления манипулятором. Наконец её впервые запустили на реальной ЭВМ. Две недели работали в три смены, вылавливая ошибки. Затем подключили к «Сетуни» манипулятор. Архитектура языка сильно упрощала отладку. Каждую команду, каждое движение можно было отладить в интерактивном режиме, обращаясь при этом напрямую к процедурам, написанным в машинных кодах. Уже отлаженные движения в виде новых «слов» Forth добавлялись в основную программу. Каждый день манипулятор «умнел», «разучивая» новые движения и обретая новые возможности. Наконец, механическая «рука» начала уверенно брать с лотка подачи заготовки и устанавливать их в патрон токарного станка. Это была победа.

Общий объём программы на Forth оказался даже меньше, чем объём памяти для машинных кодов, реализующих её «внутри» ЭВМ. Программа была написана «почти человеческим» языком, что привело в восторг заводских технологов МЗМА, на котором опробовали новую систему.

В конце июня образец гибкой производственной ячейки под управлением ЭВМ «Сетунь», оснащённый манипулятором и управляющей программой на Forth, показали в США на «Выставке достижений советской науки, техники и культуры» (АИ, см. гл. 04-12). Но целью разработки и внедрения была не «показуха» в Штатах. Пока программисты совершенствовали свою реализацию языка Forth и переносили её на разрабатываемую Старосом ЭВМ УМ-1НХ, к работе подключился Институт автоматики и телемеханики (ИАТ АН СССР), которым с 1951 года руководил академик Вадим Александрович Трапезников.

Программисты ИАТ по достоинству оценили возможности Forth в части управления оборудованием и робототехникой. Они, совместно со специалистами ЭНИМС, взяли на себя внедрение новых технологий, сначала на МЗМА. (АИ) Затем планировалось внедрять гибкие производственные ячейки на Горьковском автозаводе, на заводе «Коммунар» в Запорожье, где изготавливалась IFA «Спутник», и далее везде. И это было только начало.

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

Переход промышленности на широкое применение станков с программным управлением требовал внедрения новых устройств и технологий. В 1958 году могилёвский завод «Электродвигатель» освоил серийное производство шаговых двигателей, а челябинский завод «Электромашина» запустил в серию линейные электродвигатели нескольких типоразмеров, необходимые для электроэрозионных станков, а также станков гидравлической, плазменной и лазерной резки. (АИ) До этого данные типы двигателей изготавливались только в небольших количествах, в лабораторных условиях. На этих двигателях собирались станки с программным управлением, разрабатываемые в ЭНИМС.

Передача разработок периферийных устройств ввода-вывода из Пензенского филиала СКБ-245 в НИИСчётмаш происходила постепенно, тем более, что некоторые из этих устройств уже были в достаточно высокой степени готовности, и передача их разработки в другую организацию на этом этапе лишь отодвинула бы окончание работ. В то же время в НИИСчётмаш разработки периферийных устройств по заданию министерства электронной промышленности уже велись, и решение Шокина лишь зафиксировало сложившееся положение дел.

Продолжая совершенствовать, и одновременно изучать Forth, уже в первые дни Ершов освоил работу со стеком, где временно хранились данные для обработки. Стек Forth работает как магазин автоматического пистолета. Если пронумеровать патроны, например от 1 до 8, и затем засунуть их в магазин по порядку номеров, то при стрельбе первым будет выстрелен патрон № 8, а последним — патрон №1. Также в языке Forth для арифметических выражений используется так называемая «обратная польская нотация». Чтобы вычислить простейший арифметический пример 3 + 4 = 7, следует записать

3 4 + .

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

Продолжая разбираться с примерами, приведёнными в переданном Лебедевым учебнике, Андрей Петрович определил ещё несколько «слов» языка, написав простенькую программу:

: ЗВЕЗДА 42 EMIT ;

: ЗВЕЗДЫ 0 DO ЗВЕЗДА LOOP ;

: ПОЛЕ CR 30 SPACES ;

: ТОЧКА ПОЛЕ ЗВЕЗДА ;

: ПОЛОСА ПОЛЕ 5 ЗВЕЗДЫ ;

: F ПОЛОСА ТОЧКА ПОЛОСА ТОЧКА ТОЧКА CR ;

Набрав букву «F», он получил в распечатке латинскую букву F, составленную из звёздочек:

*****

*

*****

*

*

Проходивший мимо Геннадий Исаакович Кожухин машинально посмотрел на распечатку, остановился и спросил:

– Ты как это сделал?

– Да вот, простейшая программка на Forth, сижу, разбираюсь с возможностями языка. А что?

– Погоди, погоди... электрическая машинка целую букву одним ударом печатает. То есть, может печатать только те буквы, что в неё встроены, – задумался Кожухин. – А если вместо букв поставить матрицу из иголочек... Даже не матрицу, а несколько иголочек в ряд, вертикально. Предположим, каждая звёздочка в твоей программке – это удар иголочки по бумаге через ленту от пишущей машинки. И заставить головку двигаться вдоль строки по направляющей. Чтобы тяжёлую каретку не двигать. Тогда АЦПУ сможет не только буквы и цифры, оно же сможет любые символы печатать?

Так появилась идея сделать матричный принтер (АИ, первый коммерчески успешный матричный принтер был выпущен в 1971 г компанией Centronics, хотя IBM экспериментировала с матричной печатью ещё в 50-х). Конечно, он печатал не «звёздочками», а принимал передаваемые ЭВМ битовые последовательности, где печатаемые точки обозначались как «единица», а пропускаемые – как «ноль». «Печать звёздочками» тоже пригодилась – для печати графиков, особенно там, где не требовалась высокая точность – для различных отчётов.

В этот период АЦПУ вечно не хватало, что сильно мешало отладке программ, так как основным средством отображения оставалась печать на бумаге. Электрофотографическая машина (ЭФМ, см. гл. 02-32) стоила достаточно дорого, и цена 1 листа на ней получалась больше, чем на АЦПУ ударного действия. Поэтому, когда Шокину принесли эскизный проект графопостроителя формата А1, основанного на принципе ЭФМ, он сказал:

– Мужики, да вы охренели... Сколько будет стоить замена светочувствительного барабана такой длины – кто-нибудь считал? Думайте дальше.

Матричный принтер позволял выводить на печать графику, хотя и достаточно примитивную, учитывая существующие ограничения по оперативной памяти. Идея не умерла, её передали в НИИСчётмаш, где работа по созданию матричного принтера была продолжена. (АИ частично, НИИСчётмаш действительно занимался разработкой АЦПУ, хотя на тот момент не матричных http://www.computer-museum.ru/histussr/niism.htm)

Взаимодействие НПО «Научный центр» и Пензенского филиала СКБ-245 с ЭНИМС в части разработок станков с ЧПУ привело к взаимопроникновению идей и тематик. Вычерчивание схем, чертежей, выклеивание масок для микросхем вручную занимало много времени и приводило к неизбежным ошибкам. Для упрощения процесса пользовались фотоспособом и делением маски на отдельные функциональные блоки, которые вычерчивали по отдельности, а потом склеивали вместе и переснимали на плёнку.

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

(Первые плоттеры, например Calcomp 565, разработанный в 1959 г, работали на принципе передвижения бумаги с помощью ролика, обеспечивая тем самым координату X, а Y обеспечивалась движением пера. Другой подход, воплощённый в первой CAD системе Computervision’s Interact I, представлял собой модернизированный пантограф, управляемый вычислительной машиной и имеющий шариковое перо в качестве рисующего элемента https://sites.google.com/site/sinkevichslava/home/grafopostroitel)

К этой работе подключился НИИСчётмаш. Разработка двухкоординатного регистрирующего графопостроителя ДРП-1 велась группой специалистов под руководством Валентина Борисовича Ушакова и Геннадия Михайловича Петрова (АИ частично, в реальной истории двухкоординатные регистрирующие приборы от ДРП-1 до ДРП-5 разрабатывали Ушаков В. Б., Петров Г. М., Басов Е. П., Махин В. П., Чалых В. Г., Родионов А. Г. в 1962—1968 гг)

Сделать графопостроитель было недостаточно. Требовалась специальная программа, которая могла бы им управлять – прообраз системы автоматизированного проектирования (САПР). Заставить ЭВМ управлять графопостроителем, считывая данные с запоминающего устройства по частям было уже можно.


    Ваша оценка произведения:

Популярные книги за неделю