Плоды релиза Победы 1948 (СИ) - Кулаков Игорь Евгеньевич
Которой, по сути, не было в моём прошлом.
СССР, как я отрывочно помнил, после того, как от машкодов двинулись к языкам программирования высокого уровня, пытался продвигать что-то своё, на русском, но.. в условиях Железного занавеса — «не взлетело» даже у себя, при попытках использовать массу софта с Запада.
Здесь же, была иная обстановка. И с бонусами послезнания и с кое-каким.. ну, не с сердечным согласием, а достаточно мирными отношениями, базирующимися на обоюдном желании ИВС и ФДР не разжигать высасывающую из обеих сторон ресурсы и жизни иную инкарнацию холодной войны.
Особенно в условиях послезнания, которое могло, в случае конфликта, наоборот подвигнуть стороны на резкие движения в попытке вложиться в теоретически всесокрушающий «первый мега-удар».
Но я, в отличие от четверых других «соучастников», не испытывал иллюзий по поводу того, что взамен стандарта латиницы и наглосаксонской лексики в языках программирования удастся «продвинуть наше, советское» :-)
Даже совещание было (в конце 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/РУС для наименований тех же регистров АЛУ.. как и для переменных типов данных и прочего в текстах программах..)
Логика, которую отстаивал я, заключалась в следующем:
Советское, конечно, СЕЙЧАС, реально самое передовое, но западный мир мы можем и не прогнуть. Они очень быстро напишут своё. Ломать доминирование латиницы множества стран, даже в отдельной отрасли — ИТ, и при использовании всех бонусов послезнания и в попытке навязывания своих стандартов, всё равно будет трудновыполнимым желанием..
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})Лучше, раз уж мы «вшили» (в отличие от истории моего прошлого) в «Стандарт 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 (с нормальным посимвольным вводом текста исходной программы в редакторе интерпретатора, без ужасной привязки ввода операторов как у второго — «целыми словами» и путём нажатия соответствующих клавиш).