(..из неизданных мемуаров Рожкова Н.Е., хранящихся в его семейном архиве..)
Вкладывая в самый фундамент железячно-софтверной экосистемы, формировавшейся в проекте М-4 «Стандарт 256», в котором кириллица была на равных правах с латиницей, мы пятеро (Брук, Лебедев, я, Ш-Б и Ляпунов), определявшие курс развития ИТ, пожалуй, пока аж всего мира, оказались перед неожиданной проблемой из разряда почти что идеологических :-)
Которой, по сути, не было в моём прошлом.
СССР, как я отрывочно помнил, после того, как от машкодов двинулись к языкам программирования высокого уровня, пытался продвигать что-то своё, на русском, но.. в условиях Железного занавеса — «не взлетело» даже у себя, при попытках использовать массу софта с Запада.
Здесь же, была иная обстановка. И с бонусами послезнания и с кое-каким.. ну, не с сердечным согласием, а достаточно мирными отношениями, базирующимися на обоюдном желании ИВС и ФДР не разжигать высасывающую из обеих сторон ресурсы и жизни иную инкарнацию холодной войны.
Особенно в условиях послезнания, которое могло, в случае конфликта, наоборот подвигнуть стороны на резкие движения в попытке вложиться в теоретически всесокрушающий «первый мега-удар».
Но я, в отличие от четверых других «соучастников», не испытывал иллюзий по поводу того, что взамен стандарта латиницы и наглосаксонской лексики в языках программирования удастся «продвинуть наше, советское» :-)
Даже совещание было (в конце 1944-го) в наркомате в Москве у Маленкова «на ковре». Где меня попросили объясниться. Отчего я, в целом всячески ратующий и активно работающий на Союз в области ИТ, не испытываю «тут» положенного энтузиазма.
Для того, чтобы понять, почему этот вопрос встал ребром именно при начале разработки комплекса софта для М-4, а не для предыдущих трёх моделей, необходимо некоторое пояснение:
Фактически, тот двуязычный ассемблер-автокод, который был создан для М-1/2/3, был на тот момент искусственным конструктом, который работал «на бумажке» и «на будущее». Ибо программисты, освоившие вычислители первого поколения, создавали крайне компактные (обусловленные крайне ограниченным размером ОЗУ) программы, машинный код которые «вылизывался» (точнее, продумывался и проверялся) заранее много раз. Ибо никаких (вообще никаких) средств отладки и прочего и близко не было :-) за исключением доступного для единиц моего эмулятора первых вычислителей.
Именно на М-4, первом представителе второго поколения вычислителей, который, обладал солидным для этих времён ОЗУ в 48 кб, мы получали возможность работы программистов не просто на машине с АЛУ с неким эквивалентом процессора Z80 (с которого мы слизывали систему команд, как и ранее — её «урезанный набор» с i8080/КР580), но и с большим комфортом при написании программ в, опять же, некоем аналоге ассемблера Zeus. В котором для, например команды, помещающей 3 в регистр A процессора (точнее, пока АЛУ) нужно было набрать в будущем редакторе ассемблера относительно удобоваримую для восприятия и читабельную строчку
LD A,3
..вместо вбивания «штекерным вводом» (или вводом через через телетайп или через перфокарту) соответствующего
3E 03
машинного кода!
Наш же будущий ассемблер бы «спокойно», отловив все возможные синтаксические ошибки прогера, после их исправления, провёл бы трансляцию текста с приятными людскому глазу мнемониками ассемблера в машкод!
Всё было просто, верно и красиво. И убыстряло процесс программирования «в машкодах» (точнее, уже действительно на ассемблере-автокоде)
И параметры железа (объём ОЗУ) вполне позволяли..
Но!
Мы должны были решить сразу дилемму:
Пытаемся ли мы с нуля «прогнуть» будущий мир прогеров учить русский..
..и вместо привычного МНЕ LD (то бишь LOAD) писать ЗГ (ЗАГРУЗИТЬ)?
Ну и далее, определиться с этим вопросом так со всем ПО для разработчиков и юзеров!
т.е
LD A,3
или
ЗГ A,3 (тут ещё вставал вопрос об LAT/РУС для наименований тех же регистров АЛУ.. как и для переменных типов данных и прочего в текстах программах..)
Логика, которую отстаивал я, заключалась в следующем:
Советское, конечно, СЕЙЧАС, реально самое передовое, но западный мир мы можем и не прогнуть. Они очень быстро напишут своё. Ломать доминирование латиницы множества стран, даже в отдельной отрасли — ИТ, и при использовании всех бонусов послезнания и в попытке навязывания своих стандартов, всё равно будет трудновыполнимым желанием..
Лучше, раз уж мы «вшили» (в отличие от истории моего прошлого) в «Стандарт 256» и LAT, и РУС, то дадим возможность и в ассемблере и в базовом языке программирования высокого уровня имени Ады Лавлейс (т.е. «бейсике») юзать и русские команды и на латынице.
Как и в командной строке ОС и во множестве аналогичных тем!
Т.о., на софте М-4 предлагалось продолжить логику, заданную в «бумажном варианте» ассемблера-автокода для М-1/2/3. Как в нормальной, уже не в «бумажном варианте», программе автокода-ассемблера с равноценными по правам мнемониками на русском и латинице(английский), транслируемыми в соответствующий каждой двуязычной паре мнемоник машинный код.
Вот эту логику (с пояснением — мы даём свободу выбора всем — пользователям и программистам СССР, пользователям и программистам «наглосаксонских капиталистов») я и излагал на совещании в наркомате на исходе 1944-го, уже не только применительно к автокоду, но и к первому «комфортному языку программирования», доступному обычным рядовым пользователям, а не только тем уникальным человеческим экземплярам, кто сами машинные коды М-1/2/3 (с расширением «до стандарта Z80» в М-4) в своей памяти держит:
Маленков, «понавтыкавшийся» в реалиях зари цифровой эры и усвоивший по необходимости (партия поставила на важнейший участок!) многие специфические понятия как и текущие ограничения, поинтересовался на примере как раз обсуждавшегося как «образец» «первого местного» языка программирования высокого уровня — «бейсика»:
— А места в ПЗУ хватит для двух.. «наборов»?
— Да! Наш диалект первого «ЯПВУ» будет содержать 80 операторов — команд и функций и нескольких дополнительных ключевых слов длиной от 2 до десятка байт. Просто удвоится это число. И несколько усложнятся процедуры редактирования и выполнения при интерпретации. Чуть-чуть больше потребуется места в ПЗУ для вывода интерпретатором кодов ошибок и текстов сообщений. Сами же процедуры и функции, соответствующие операторам языка, останутся одни и те же для обеих наборов операторов. Такая же приемлемая ситуация будет с двумя наборами команд ОС, с мнемониками ассемблера и прочим..
После нескольких оценочных подсчётов для разных случаев на том и пришли к общему знаменателю, который выразился в приказ по наркомату «О двуязычном стандарте команд и операторов ПО», который позже многими (особенно в США и в Европе) трактовался как «второе, после Стандарта 256, удачное решение коммунистов для получения дополнительных рыночных преимуществ».
Стоит отметить, что имена переменных, массивов и т.п. жёстко привязывались к латинице с мотивировкой «по подобию греческого алфавита в математике».
На примере того же местного «бейсика», это привело к тому, что работал как текст программы, очищавшей экран и печатавший пять строк с текстом «test» («тест») в «классическом для моего прошлого» виде:
10 cls
20 for i=0 to 4
30 print “test”
40 next
так и «русифицированный» для той же цели и с тем же результатом:
10 очэ
20 для i=0 до 4
30 печат “тест”
40 след
Можно было получить верный итог, и набрав «совсем ужасное»:
10 cls
20 для i=0 до 4
30 print “test”
40 след
Интерпретатору было всё равно. Хотя у моего сознания, с вбитым в подкорку англоязычным написанием синтаксиса языков программирования, подобный «руглиш» вызывал лёгкий приступ смеха. Как и второй вариант, м.п. В моём прошлом в этой сфере человеческих достижений наглосаксонская soft power победила безоговорочно. Здесь же.. мы пытались установить истинное равновесие и полную свободу выбора.
Замечу, что с моей точки же зрения, версия 1.0 нашего «бейсика» (пока без графических возможностей) была плодом скрещивания, «урезания хотелок» и «вдохновения момента первого творения» от двух диалектов basic — MSX и Sinclair (с нормальным посимвольным вводом текста исходной программы в редакторе интерпретатора, без ужасной привязки ввода операторов как у второго — «целыми словами» и путём нажатия соответствующих клавиш).
Но второе поколение было не только в «железе». Вместе с вторым поколением вычислителей, пользователям вручался пусть и ужасно медленный, но не существовавший до сего момента программный инструмент, с помощью которого даже «условный смышлёный школьник мог разрабатывать ПО».
Разумеется, пока это было чисто теоретически. План выпуска М-4 на весь 1948 составлял 600 штук. Плюс в том году же началось лицензионное производство на IBM..
Пытаться сразу «захватить американский рынок» с М-4 мы даже и не помышляли. СССР не менее США был заинтересован в сотрудничестве и, согласившись на продажу лицензии на выпуск нового вычислителя (а не только готовых образцов с МЗЭТ), получил доступ к некоторым интересовавшим нашу радиоэлектронную промышленность технологиям производства комплектующих из-за океана.
Проникновение на рынок США тогда случилось больше другим, но естественным путём, когда всё стандартное ПО даже лицензионных, выпущенных в США М-4, было создано у нас в НИИВТ.
Комплект ПО, входивший в минимальный стандартный набор выпущенных как на МЗЭТ, так и на IBM М-4 составлял:
* ПЗУ с интерпретатором «бейсика» как часть аппаратного обеспечения.
Именно с ним встречался по умолчанию юзер, работавший на стандартном (НЕ в специсполнении) вычислителе М-4, видящий на экране текстового дисплея — характрона М-4 стартовое меню после включения вычислителя и инициализации ПЗУ базового варианта машины.
Меню содержало следующие пункты:
1. Арифмометр, запускавший встроенный в ПЗУ калькулятор, использующий для расчётов те же процедуры, которые задействованы в «бейсике», занимающем основную часть объёма стандартного ПЗУ.
2. Запуск работы в среде «бейсика» для комфортного написания прикладных (чаще расчётного плана) программ обычными пользователями, не имеющими возможности или желания разбираться в высокоэффективном, но очень сложном написании ПО в машинных кодах.
3. Запуск процедуры тестирования "железа" на работоспособность.
4. Выбор ПЗУ для работы. По умолчанию на машине было только одно ПЗУ (стартовое меню, пункты которого сейчас перечисляются мной). Но в вычислителе М-4 может быть размещено одновременно до 4-х ферритовых кубиков ПЗУ. Используется, разумеется, в текущий сеанс работы — только одно из них, занимающее первые 16 кб адресного пространства в 64 килобайта.
5. Загрузка с магнитного носителя 0 (по умолчанию магнитный барабан), с первого сектора первой дорожки барабана. В таком случае происходит начало загрузки ОС-1. Считывается содержимое сектора в определённое место ОЗУ и с начального адреса загрузки в памяти начинается выполнение загруженного файла исполняемого машинного кода.
6.Загрузка с магнитного носителя 1 (по умолчанию НМЛ — магнитофон). М-4 переходит в режим ожидание считывания с ленты блока заголовка файла.
Продолжая рассказ о «джентльменском наборе софта» упомянем второй вариант ПЗУ:
* ПЗУ с операционной системой.
* Версия операционной системы, предустановленная на магнитный барабан.
Здесь сделаю маленькое отступление. Нам сразу удалось сделать совместимыми обе ветки ОС не только по её командам, но и по вызовам системных функций, как в встроенных в ПЗУ, так и находящихся в файле, загружаемом в версии с магнитного барабана. Сделано это было путём резервирования в одной и той же стандартной области ОЗУ таблицы вызовов разных полезных функций ОС из прикладных программ. Обе ветки развития ОС — и ПЗУ-шная и «дисковая» (точнее, пока «магнитобарабанная») загружали в таблицу свои адреса вызовов функций. Как из адресного пространства ПЗУ, так и для «барабанной», загружаемой в ОЗУ версии.
* Программа автокода-ассемблера в версиях для магнитного барабана и для НМЛ (накопителя на магнитной ленте).
* Текстовой редактор в версиях для магнитного барабана и для НМЛ.
* Электронные таблицы в версиях для магнитного барабана и для НМЛ.
С моей точки зрения, текстовый редактор уже сразу стал вполне рабочим инструментом. А вот электронные таблицы, из-за ограниченного размера ОЗУ, были, скорее, говоря языком будущего, лишь «демонстратором технологий». 48 кб «оперативки», из которых на саму программу электронных таблиц использовалось более полутора десятка килобайт, это не тот объём, в котором условные бухгалтеры могут особо развернуться.
Как водится, не обошлось без идеологических посылов :-) и случились они именно в электронных таблицах. Русский интерфейс которых гордо оповещал, что они названы в честь фамилии некоего Корсакова. После стартовавшего из-за моего появления «попутного поиска русских корней ИТ» в нашей истории, обнаружились любопытные работы человека-изобретателя, пытавшегося в середине 19 века как-то механизировать работу с перфорированными таблицами. Мне довелось даже полистать том «Трудов архива академии наук СССР», содержащих описание его «Начертания нового способа исследования при помощи машин, сравнивающих идеи». Признаюсь, по моему впечатлению, работы и достаточно смутные предложения человека по поиску по критериям в таблицах данных, несколько опередили время.
Но можно сказать, что свою фамилию в названии электронных таблиц он получил заслуженно. Как и Ада Лавлейс в «бейсике»..
* Программа-копировщик с удобным интерфейсом для копирования блоков заголовков и самих тел файлов на НМЛ, потребность в которой для пользователей был осознана при изучении опыта бытовых компьютеров 80-х — 90-х..
Также была «неофициальная», «бонусная каждому пользователю» М-4 катушка с магнитной лентой, на которой находились копии полуофициально разработанных в НИИВТ игр!
Именно она стала тем, что придало определённой популярности в массах, и даже элементов «таинственности для избранных» М-4, которую тщательно раздували представители СМИ, в первую очерель в США, вечно выискивающие темы.. говоря языком моего утерянного прошлого, с «кликбейтными заголовками».
Пока тут ещё стараются не ограничиваться только ими :-)
Тема про «изысканные и таинственно-привлекательные развлечения» учёных очень зашла американской публике.
Несмотря на то, что М-4, все же была первым протокомпом, на ней увидели свет первые полноценные, с выводом изображения на дисплей, компьютерные («вычислительные») игры этого хода истории мира.
* Удав-змея
* Морской бой
* Тетрамино (тетрис)
* Шашки
* Шахматы
* Карты («подкидной дурак»)
* Первая полноценная аркада этого мира — «Замок гоблинов» (с названием я не заморачивался. Честно спёр с названия клона Lode Runner для советского компьютера УК-НЦ), в которой пригодились символы фигурок из «Стандарта 256»!
За исключением «дурака», шашек и шахмат (созданными под руководством Шуры-Буры сотрудниками нашего НИИВТ Носковым и Голдобиным — в рамках вполне себе серьёзных НИР по теории игр, глубине просчётов вариантов и теории графов), автором остальных игр был я. Все из они были разработаны в разной степени готовности ещё под эмулятором М-4, до появления той в «железе».
Эта «катушка из поставки», выпущенная в качестве тренировки и «закидывания идеи в массы» стала легендарной, слава о ней вышла далеко за пределы организаций и лиц, имевших доступ к М-4.
Именно благодаря данному игровому ПО в США, в 1949-м году состоялись первые продажи вычислителей (как производства IBM, так и напрямую с МЗЭТ) частным лицам. Очень богатым лицам.. способным раскошелиться на вычислитель ценой в полтора десятка автомобилей, который всё же пока был очень «специфической игрушкой», опережавшей время.
О, Америка.. страна возможностей и богатых чудаков.
Впрочем именно один из подобных чуваков и открыл первый компьютерный клуб, существующий и по сию пору, в котором разрешал за скромные деньги играть всем желающим :-)
Меня как-то, после начала выпуска первых бытовых персоналок в середине пятидесятых пригласили выступить там с лекцией о будущем игр на вычислительной технике. Я тогда и постарался, снова сдёрнуть «завесу над грядущим». Нашумевшее, помню, было выступление..
Следуя хорошей традиции, заданной при разработке вычислителей первого поколения, мы позаботились о качественной документации на русском и английском, изрядно снизившей «порог вхождения» юзерам.
Вот основные из мануалов к М-4:
* Аппаратная организация и элементная база дискретного электровычислителя М-4.
* Создание компактного и скоростного ПО на языке автокода/ассемблера.
* Основы разработки ПО на базовом языке программирования высокого уровня.
* Руководство пользователя операционной системы ОС-1
* Системные функции ОС-1.
* Стандарты и правила аппаратного обеспечения М-4.
* Руководство пользователя печатника АЦПУ-128.