IT в СССР (как убили вычтех, развязка)

Повторюсь и ещё раз скажу, что умных голов было много, потому о проблеме зоопарка думали на всех уровнях ещё с конца 1950-х. Без высокой степени совместимости невозможны проекты ЕГСВЦ Китова (1958..59 гг.), ОГАС Глушкова (1962..198x гг.), проект, мелькнувший в архивах Ершова, сайт которых упорно лежит (1964 г.). Эти проекты сами по себе очень интересны и погибли по другим причинам, об этом в другой раз, возможно. Факт в том, что не проснулись однажды с осознанием, видели и размышляли.
Но размышлять мало, надо делать. А это не получилось. Сейчас коллективы разработчиков и заводчан назвали бы «недоговорными». Вы могли договориться с кем-либо в личном порядке, но если требовалась официальная поддержка… Беда. Госплан, бюрократия, очереди производства, подковёрная грызня ведомств, планы, сроки, внезапная срочность к знаковым датам.
Попробуйте сами. Вы Иванов, главный конструктор ЭВМ Петя-1, у вас за плечами десять лет оригинальных архитектур и десятки людей в коллективе. И есть Сидоров, главный конструктор ЭВМ Вася-2М, у которого тот же анамнез. Приходит к вам Сидоров и вы за чайником чая обсуждаете унификацию всего. Согласны. Унификация рулит. Но из этого следует, что часть уж очень оригинальных архитектур надо выбросить, а часть переделать, внедрив общие компоненты. Скажите, Иванов, вы готовы отказаться от Пети-1? От государственных наград? От премий? От места автора первой в мире полуторичной 11-разрядной квадратно-выпуклой ЭВМ, выдающей 146 операций в венерианскую секунду? А в глаза коллективу посмотреть? Это что же, они тоже всего лишаться? И все эти годы они неправильное делали? А как вы своему министерству объясните, что Сидоров из другого министерства более стратегически разработку вёл? В конце концов, это у Сидорова его Вася-2М фигня, а вот у вас уж точно наикрутейший Петя-1!
Внутри СВОИХ систем конструкторы занимались унификацией, конечно. Нормальный инженер не может этим не заниматься. Особо достоин упоминания Рамеев, заложивший в своих Уралах потенциал единой линейки ЭВМ на разные уровни задач. Но и всё, пожалуй.

В таких ситуациях приходит руководство и принимает волевое решение. Могло и позже, наверное, но с 1965 года по миру начались поставки гениальной в производстве, унификации и развитии IBM System/360 (тут все разработчики встали и поклонились упоминанию источника восьмибитовой чумы), которая прям вот была почти именно то, что всем надо было. Руководство напряглось и обратилось к экспертам, требовалось разработать аванпроект ОКР «Ряд» (линейка машин, совместимость и прочее).
Эксперты (ИТМиВТ во главе с Лебедевым) в ответ в 1966 году выдали вялый 50-страничный отчёт. В нём скептически отозвались об IBM 360, да и ничего толкового не предложили. Министерство озадачилось. Каждый крупный коллектив вместо общей архитектуры толкал свою (Москва, Киев, Минск, Ереван, Пенза). Министерство озадачилось ещё больше. Ведь всё честно сделали. Дали учёным и конструкторам возможность высказаться, выработать общий вектор. Не получилось. Ну ок.
Разработку аванпроекта поручили сторонникам (как понимаю по воспоминаниям Левина) выбора IBM 360 в качестве основы и всё было решено ещё ДО января 1967 года (заседание, на котором решение утвердили) и уж точно до 1969 года (финальное совещание с ведущими разработчиками). Почему я считаю, что решено всё было ДО?
Большинство стран, участвовавших в «Ряде», было против IBM 360, топили в пользу английской Системы-4. Только ГДР, уже осваивавшая систему, была за американцев. Большинство участников совещания 1969 года были против IBM 360, топили за Систему-4, раз не получилось своё проработать. Основные аргументы были очень весомыми:

  • СССР не мог покупать у IBM ничего, ибо эмбарго.
  • К моменту клонирующего производства IBM 360 уже была бы значительно устаревшей системой 10-летней давности.
  • Связей с IBM нет никаких и не предвидится, потому никаких стажировок, поддержки и остального.
  • С англичанами уже связи, уже стажировки, уже готовность к поставкам, помощи, обучению, наладке.

А со стороны сторонников аргумент один: у IBM 360 огромный богатый софт, на который ушли тысячи человеко-лет, мы круто победим, его стырив через тех же немцев. Ура-ура. По пути и свой напишем, не беда. Потому IBM 360, всем спасибо, расходитесь.

Накал был такой, что в оставку тут же подали Сулим (ему предстояло объяснять англичанам срыв всех предварительных договорённостей) и Рамеев (понимавший последствия принятого решения и тоже участвоваший в процессе с Системой-4).

После чтения конспекта заседаний и докладных и вообще осмыслении у меня следующие соображения… За два-три года до 1969 года все узнали мнение всех сторон. И это мнение не менялось. Именно обсуждения и диалога я нигде не нашёл. Стороны только фиксировали свою позицию и больше не колебались. Это инженеры и администраторы довольно небольшой прослойки, не первое десятилетие знакомые. Битые жизнью, партией и вообще. Уверен, для них не был сюрпризом ни итог 1967 года, ни итог 1969 года.
Да, это глупый выбор. Очень наивный, очень оптимистичный. Но у него есть причины.
Официальная нередко за кадром в блогах или без акцента, а я акцентирую: острая нехватка программистов и программ. Компьютеры без софта не нужны. Софт пишут программисты. При разработке новой системы требуется новый набор ВСЕГО для всех отраслей от операционной системы до складских журналов. Делать этот софт было некем. Отсюда и такой упор на то, что вот у IBM овердофига всего, писать заново не надо, достаточно обеспечить совместимость. На 70% выбор архитектуры был вызван выбором программного обеспечения.
Неофициальная, мне кажется, тоже имеет право на. Вы министр. Перед вами разработчики компьютеров, которые за годы не смогли договориться и выпустить единое. Перед вами заводы, которые за годы не смогли наладить стабильное и качественное производство. Перед вами программисты… ах да, их нет. А те, что есть, развлекаются переписыванием кода под 25+ систем. Перед вами Госплан и партия, которые вообще понятия не имеют, чего хотят, но хотят этого очень. Вот вы точно будете тем же людям давать вариант, с которым они уже не справились? 20 лет анархии, феодализма и махновщины. Давшие интереснейшие результаты для науки, но не учитывавшие интересы страны.
Вот, собсно, начальственный тапок по столу и стукнул. В этой истории отлично выступили все. Интересно отметить и то, что упускают из виду те, кто упоминает Уралы в качестве альтернативы: Уралы не выдвигались. Это замечательный ряд машин с большим заделом, готовые для сети, пошедшие в серию. Но напомню: каждое КБ тянуло одеялко на себя и фантазировать на тему «советские конструкторы единым фронтом выступили за отечественную разработку [любого конструктора]» не стоит. Не было такого. Этот шанс тоже профукали.

С 1969 года и отсчитывают начало конца. Но почему? Всё-таки за основу взяли популярную и мощную систему. Да и выпуск своих систем не прекратили, да и вовсе продолжили разрабатывать. Как и ожидалось, не всё просто.

Продолжение следует.

IT в СССР (как убили вычтех, зоопарк)

Можно сказать, что до судьбоносного 1967 года вычтех СССР за [условно] 20 лет добился многого. Прошла пора первых пробных и полуподпольных (Брук отжигал) экспериментов, компьютеры пошли в серию. Даже не так. В СЕРИИ. Бегло осмотрим успехи только лишь «массовых» или значимых выпусков, оставляя за кадром специальные машины. В скобках количество выпущенных ЭВМ до 1967 года. Ну, примерно, т.к. разбивки по годам я не нашёл.
БЭСМ-1 (1), БЭСМ-2 (67), БЭСМ-4 (30), БЭСМ-6 (завершена к 1966 году, до 1987 года выпустили 355), М-20 (20), Днепр (500), Весна (19), Снег (20), Киев (2?), Минск-1 (220), Минск-11 (11), Минск-12 (5), Минск-14 (36), Минск-16 (1), Минск-2 (118), Минск-22/22М (734), Наири (500?), Сетунь (46), Стрела (7), Урал-1 (183), Урал-2 (139), Урал-3 (22), Урал-4 (30). А ещё Мир, Проминь, Раздан, Урал-11. И ещё машинки, но я утомился выписывать.
Считаем. 25+ моделей, 2700+ экземпляров. Штуковины размером от шкафа до опенспейса. От суперкомпьютеров до боевых середняков «обычных» заводов. И это лишь к моменту, когда проблему озвучили с верхов, а ведь каждый год появлялись новые модели в ещё бОльших количествах.

Итак, проблема: они друг с другом не совместимы. Некоторые ламповые, некоторые полупроводниковые. У одних в байте 6 бит, у других 7. Или вот Сетунь вообще троичная ЭВМ. Разная разрядность. И системы команд разные. И периферия. Всё, блин, разное. Промышленность не успевала лицо к ладони прикладывать.
Как, впрочем, и программисты. Ведь для каждой новой модели, у которой что-то было другое, софт приходилось писать заново. Писали его всё ещё в машинных кодах, языки едва начали выходить из стадии домашних заготовок, до Алголов и Фортранов в массах было далеко. Учитывая то, что лишь на ввод программы можно было потратить десятки часов… Ну прекрасно же. Романтика!
Вишенкой на тортик была традиционная беда советской промышленности — качество и количество деталей. В 1952 году попытка заменить немецкие лампы в М-1 на начавшие поступать отечественные пентоды 6X4 завершилась тем, что инженер поехал на завод лично отбирать несколько сотен ламп, уж больно разброс значений был велик (источник у Малиновского в большом тексте, поищите по слову «Светлана»). У военных с их спецприёмкой и цепким взглядом гэбистов на производство ситуация была лучше, но тоже не идеальна. Про опыт машиниста М-50 в 1959..1960 годах можно почитать здесь. По мелькающим в других статьях и мемуарах эпизодам… ну, думаю, автор объективно описал реалии.
Как итог, десятки КБ и заводов, сотни учёных, тысячи инженеров и армия рабочих множили зоопарк ЭВМ с азартом мартовских кроликов, тем самым умножая проблему ежегодно.

Что любопытно, на ЭВМ советская централизация и диктатура дала сбой. Творилась полная анархия, разработчики не знали друг о друге, заказы на заводы пропихивались разными занятными способами (тут помогут первые страницы книги «Так было» Карпиловича), программисты творили софт без единой базы (хотя… ну какое единство при такой «совместимости»?). Как в таких условиях реализовать что-либо плановое — не понять. Могу понять те гордость и спокойствие, с которым конструкторы вместе с историками описывают тот период, но есть нюанс: вспоминают свою работу, свои разработки. Был замечательный коллектив, с энтузиазмом придумали, воплотили, [не] получили премию. Но почти совершенно не упоминают то, с каким трудом это внедрялось, какие плелись интриги, как бригады с заводов мотались месяцами жить у пользователя в машинном зале, чтобы наладить очередное чудо. Боюсь, сгладило бы пастораль, на которой бяками сплошь партия и бюрократы.
Однако, следует признать, что всё-таки отрасль ЭВМ работала. Это сейчас не панибратски похлопывающая по плечу фраза, наоборот. Действительно хорошие архитектуры. Действительно толковое применение и зафиксированные рекорды. БЭСМ-6 няшка. Уралы няшки, Наири няшки. Всё нужное считалось быстро и по делу. Первые там, первые сям.
Но… Давайте на всего одном примере: Сетунь. В вычислительном центре МГУ силами 20 начинающих сотрудников создали ЭВМ. Ну и хорошо, да? Они сделали её троичной. Этому очень умиляются десятилетиями, но для неё надо было написать заново ВЕСЬ софт, у неё была лютая несовместимость вообще со всем. Ну кого из учёных это волновало? Никого. Сетунь начали толкать в серию. При этом Брусенцов отдал Казанскому заводу комплект чертежей, который разрабатывался для завода в Киеве. Казанские смотрели с интересом. Дальше началась эпопея с производством. Никому толком не нужная, никуда не влезающая по общей практике машина, созданная любителями вне системы производства. С грехом пополам выпустили 46 серийных образцов за 5 лет, да и всё. Зачем вообще её было создавать (а не выбить для МГУ имеющиеся варианты)? Зачем настолько выпадающую из ряда машину в серию? Зачем эту серию утвердили (потом опомнились и гасили)? Почему заводчан подключали так поздно? Сколько нужно разработчиков, чтобы поговорить с админом до запуска сервиса?
Так тонко подвожу к выводу, который сделал. Нет, учёные во всех этих историях не жертвы и не непонятые гении. В массе своей (если судить по разработкам) они упорно творили без оглядки на действительные нужды страны. В ущерб разуму, в ущерб стратегии, производству и общему благу пробивались свои архитектуры, но не архитектуры СССР, но Иванова, Петрова, Сидорова и ещё десяти дядь, решивших, что им никто не указ. Умные. Хорошие. Интересные люди. Но без нужного уровня [само]контроля. И укажу явно: были бюджеты, были заказы, всё было. Там, где не было, вина руководителя, который вне мейнстрима по собственной инициативе клепал. Но и после такого изделия пускались в серию, а коллективы получали не по рукам, но по конверту. В общем, гуляй, пока играет музыка.

Продолжение следует.

IT в СССР (как убили вычтех, вводная)

Объективное понимание того, как в СССР убили собственный вычтех решением комиссии по ВТ АН СССР и ГКНТ от 27 января 1967 г. под председательством академика А. А. Дородницына, невозможно без понимания пропасти между штучной научной разработкой и серийным производством для нужд промышленности, экономики, военных и прочих. И если современным разработчикам софта хоть кол на голове теши порою, отличие качественного продукта от ежеминутно падающего корявого велосипеда не увидят, в случае сложносоставных физических объектов всё намного очевиднее.

Компьютер с точки зрения учёного: прикольная штука, над которой 10 человек корпят в подвале пять лет, втыкая попавшиеся под руку прикольные детали (например, в М-1 1950 года немецкие купроксные выпрямители потому, что их случайно нашли на складе) и пробуя всякие прикольные идеи. Если чего переделать, монтажники и аспиранты за ночь перепилят. Вон тот костыль в углу нужен, им держится полочка, на которой атомные часы, которые тоже нужны.
Компьютер с точки зрения производства: штука, которую надо изготовить количеством сто тыщ за год с попутным изготовлением различной номенклатуры (от винтиков и корпусов до ламп с транзисторами) на имеющихся или новых производственных мощностях, которые тоже… и т.д., при этом всё с документацией, с подготовленным персоналом, с просчитанной экономикой производства, с логистикой (все же понимают, что на одном заводе это не делается), с расстановкой приоритетов. Простой пример: чтобы в 60-х делать компьютеры на транзисторах, нужны транзисторы; которым нужен германий; который промышленно начали производить в СССР только в 1959 году; который нужен не только вам.
Компьютер с точки зрения правительства: бесполезная игрушка учёных, ни копейки не дадим; уже полезная игрушка учёных? оно чёт считает даже! так, блин, вы чего? ещё вчера надо было тысячу компьютеров в сутки делать! на Колыму! в Сочи дельфинов зубочистками гонять! ааааа!!!
Соответственно, три вектора интересов, все три нужны и важны. Учёные толкают прогресс, они не могут без костылей. Производство реализует прогресс, им крайне важна технологичность, простота и надёжность. Правительство (администрация, управление) координирует, распределяет, стыкует, попутно применяя то кнут, то пряник.
В чистом виде описанное выше не существует, разве что в мультфильмах. На деле все тупят, всё смешано, в какой-то момент кто-то злобный стучит тапком по столу и всё валится в тартарары. Несколько проще с этим в бизнесе, там у власти не сотни голов партии, но есть проблемы с бюджетом на исследования и с монополией государства на некоторые. В общем, всегда конфликт, каждый тянет одеяло на себя. Тем толще, чем стратегичнее направление.

Также важно хорошо понимать области применения компьютеров. Без этого понимания не всегда ясно, почему иногда компьютеры ОЧЕНЬ важны, почему важно иметь СВОИ компьютеры и почему вообще важно иметь СВОЁ.
Во-первых, военные. Эти как начали прогресс, так и рулили им десятилетиями. Что ENIAC на слуху (заказан военными, использовался военными), что DARPA (интернет, BSD, TCP/IP…). СССР мало чем отличался. Пацифисты вздрогнут, но без задач уровня «летит ракета, система ПРО должна её обнаружить, обсчитать полёт, выпустить свою ракету, сбить вражескую» ничего бы не было, при этом ваши ракеты, ваша ПРО и ваши точность сбития должны быть шустрее противных, даже секунда решит дело. Бухгалтерия не требует реалтаймовой обработки бигдаты с дублирование систем. Требования по железу тоже другие. Вы не хотите, чтобы у защищающей ваш город системы сбойнул процессор от того, что рядом граната рванула.
Во-вторых, хозяйство. Так я бодрым единым махом записал в один пункт всё от энергетики до точного машиностроения, экономики и архивного дела. Здесь тоже нужны специальные системы во многих местах.
В-третьих, космонавтика. Если кратко, туда нужны специальные компьютеры со специальными микросхемами. Детальнее в старой статье на Хабре, но ленивым одно слово: радиация.
В-четвёртых, вычисления. Кластер, в который нужны суперкомпьютеры. Обычно штучный товар, заказывается / производится / покупается бюджетами уровня государства / корпораций, применяется для моделирования погоды, например, или ядерного взрыва.
Следствие простое. Даже если не учитывать нужды населения (а их никто не учитывал до первых PC, население не могло в подвале оборудовать компьютерный зал), компьютеры уже на второе десятилетие появления превратились в мечту любой отрасли. Нужны всем, нужны в огромном количестве (вопреки недоказанному утверждению «I think there is a world market for maybe five computers» от главы IBM 1943 года).
Вопрос: нафига париться, ведь можно у Intel покупать? Можно. Китай так и делал, пока США не решили, что нефиг использовать американские процессоры в суперкомпьютерах, считающих ядерную бяку в интересах Китая (в интересах США можно). Давайте ещё раз: если страна X покупает стратегический ресурс у страны Y, страна Y управляет стратегическим ресурсом страны X. И да, даже в светоче демократии и свободного рынка к бизнесу приходит государство и накладывает вето. Китай выводы сделал и теперь вовсю клепает свои процессоры. Это очень интересный современный (из исторических можно посмотреть на деятельность COCOM) прецедент. Войны нет. Торговля идёт. Граждане друг к другу катаются. Продукт не секретный, вон хоть вагонами таскай. Но правительство может запретить Intel продавать процессоры вон тому дяде и вон тому, т.к. эти процессоры используются не так, как считает правильным правительство.
Соответственно, страна, претендующая на независимость, должна сама производить свои компьютеры из своих комплектующих. Иначе можно в неудобный момент обнаружить пустую кладовку с запчастями к вот прям сейчас важным суперкомпьютерам.

Продолжение следует.

IT в СССР (кибернетика)

На очередной волне упоротости по истории информатики думал наваять (скомпилировать, щедро сдобрив узнаваемым остроумием) серию постов в формате полемики. Мол, вот Вася Пупкин считает, что СССР производила заднебивневых слонов, а на самом-то деле переднеприводных мамонтов, ахаха! Но обнаружил, что про историю информатики в СССР аще никто ничего не считает (кроме специальных историков и участников), потому просто начну серию эссе, в которых затрону мне интересное и важное, по пути снабжая ссылками, на которые кто кликнет и стремительно помудреет.
Основных источников, от которых начинаю раскручивать темы, несколько:

  • История информационных технологий в СССР и России — сайт. В списке литературы есть любопытное. Но, кажется, слегка заброшен.
  • Виртуальный компьютерный музей — сайт. Отличный. Электронная библиотека радует.
  • [Малиновский Б., Ревич Ю. Информационные технологии в СССР. Создатели советской вычислительной техники. БХВ-Петербург, 2014] — книга. Биографии основных конструкторов.
  • [История информационных технологий в СССР. Знаменитые проекты. Компьютеры, связь, микроэлектроника. Книма, 2016] — книга. Прям вот хороший сборник статей.
  • [Малашевич Б. 50 лет отечественной микроэлектронике. Краткие основы и история развития. Техносфера, 2013] — книга. Краткие, ага. 800 страниц истории мировой и отечественной микроэлектроники.

Может возникнуть вопрос «а нафига?» Ну… Хотя бы для того, чтобы понять, почему в компьютерах по миру процессоры Intel, а не Кострома-Самоцвет, например. Или для того, чтобы на отрезках в 10..40 лет увидеть последствия и причины научных и производственных решений, подумать над своими.


Кибернетика. Родная сестра генетики по закапыванию в землю и удобрению партийным навозом. Напомню, генетика — продажная девка империализма. Фразу сказал не Лысенко, но академик Лысенко эпично отметился в истории тем, что вместо плодотворных занятий агротехникой с 1948 года по 1960 год методично убивал советскую генетику, чем отбросил СССР на эти 20 с гаком лет в генетический назад, похоронив хороших людей, за что поколения запомнят академика редчайшей идиотии мудаком.
Так вот, рядом гнобили и кибернетику, но с некоторыми нюансами.
В-нулевых, кратко о претензии. По мнению партийных хвелософов кибернетика, раз механизирует человеческий разум, вознамерилась заменить рабочих роботами и вообще заполонить планету железными солдатами без чести и совести. Рабочие — люди социально святые, потому прогрессивное советское любомудрие стерпеть не смогло.
Во-первых, кибернетика и ЭВМ в те годы не были прям вот связаны. Грубо говоря, то, что одна рука с 1949 года притапливала буржуазное учение о системах и передаче информации, не мешало другой руке вовсю разрабатывать и клепать ламповые калькуляторы. В самый разгар критики были запущены МЭСМ, БЭСМ-1, Стрела и М-1. Более того, в статье 1952 года, яро нападающей на кибернетику, есть не менее ярая похвала вычтеху и ЭВМ. Ну т.е. с пониманием нужды в компьютерах в СССР на уровне инженеров и конструкторов (это важное уточнение) было норм.
Во-вторых, лидера мудаков вроде Лысенко не нашлось, зато нашлись защитники науки. Китов, Ляпунов и Соболев организовали противоход. И к ним прислушались, предложив в отделе науки ЦК ВКП(б) следующий вариант: кампания будет свёрнута, если научная общественность страны убедится в потенциальной пользе кибернетики. После этого начались выступления и семинары в вузах, в профильных учреждениях и т.д. Градус оценки уничтожения кибернетики в СССР можно снизить, если представить лекцию по оной в МГУ и в Минобороны, правда? В 1955 году ситуация была уже такая, что в «Вопросах философии», ранее активно долбивших Винера, спокойно опубликовали внятные статьи. Иными словами, всем на фоне генетики очень повезло. Спасибо, что никого в лагерях не сгноили (кажется).
cybernetics
В-третьих, занятна судьба книги в СССР. В Париже она вышла в 1948 году. Добравшиеся до СССР экземпляры (у некоторых учёных в личных библиотеках, а также в основных публичных библиотеках) сначала были условно доступны. Условно потому, что перевода не было, а самих экземпляров было невероятно мало. Но вскоре началась кампания и книгу заперли в спецфонды — места, в которых что-либо получить ты мог лишь с допуском на руках. Народ наблюдал битву с кибернетикой строго через окно прессы. Мол, есть такая штуковина у буржуев, фигня полная, потому вам об этом знать не надо. Запомните, что реакционная лженаука, да и хватит. После 1955 года, когда признали, что не реакционная и не лже, публичного издания так и не было вплоть до 1958 года. Только в этом году «Советское радио» выпустило текст на русском языке, пусть и с сокращениями — таки избавились от того, что ну совсем не стыковалось с политикой партии. До этого были ведомственные переводы для внутреннего пользования, но качество их хромало, потому про них все забыли.

Вот как-то так. На две трети это пересказ отличной статьи Шилова, с которой советую ознакомиться тем, кто желает узнать детали кампании и самостоятельно решить, какое влияние она оказала на развитие советских компьютеров. Как по мне, всё же небольшое.

Miscellanea X

При том, что GCC ещё долго будет в бою (более того, по бенчмаркам GCC 8 во многом лучше CLang 6), стратегически он уже проиграл войну CLang в частности, платформе LLVM в целом. Вообще хороший пример того, как правильная архитектура поначалу буксует и вызывает скепсис, но по мере выравнивания (в том числе содержимого голов) обязательно отгрызает пирог. Хоп! и университетский проект стоит на плечах Apple и Google. Ну хорошо, хопу уже 18 лет, но это норма.

В России в 2012 году сменился стандарт хэш-функции на ГОСТ Р 34.11-2012. Неофициально функция называется «Стрибог». Всё потому, что в конце текста стандарта одно из значений примера при преобразовании в Windows-1251 даёт текст «Се ветри, Стрибожи внуци, веютъ с моря стрелами на храбрыя плъкы Игоревы» из «Слова о полку Игореве». Няшненько.

История Minix vs Linux (раскручивать можно с поста на Хабре) очень-очень показательна. Обычно смотрят под углом вечного спора «монолит vs микроядро», но история показательна в другом. Упрощу ситуацию. Есть крутая проверенная система (Unix) за много денег. Есть крутая система, совершенно не готовая к production и вообще человекам (Minix). Есть наскоро сделанное нечто среднее — не крутое, но бесплатно и с ним можно работать (Linux). Риторический вопрос: что останется на рынке и начнёт распространяться в массах? Кейс настолько чистый, что должен входить в учебники. Не менее любопытно прикинуть стратегии выхода и удержания позиций для каждого варианта.

Продолжаю краем наблюдать за темой промышленного хранения данных в ДНК. Оказывается, пропустил новость, а ведь в конце февраля IARPA (то же, что и «военная» DARPA, но свежая и для разведки) сделало шаг в эту сторону в виде Molecular Information Storage (MIST) research program. Уже интересно. Как и список тех, кто готов вписаться: Harvard, Intel, Stanford, Western Digital и др. Всё это только начало и публично государство только принюхивается к задаче, но интригующе то, что заход сделала разведка через агентство, которое в фигне пока особо замечено не было.

Все слышали про язык Ada (хотя бы по тому, как часто говорят, что первая программист была Ада Лавлейс). Что-то, что в музее красиво стоит на полочке и красиво пылью покрывается. Ан нет. Во-первых, попался на глаза список 2014 года: Who’s Using Ada. Оооочень много суровых приложений языка. Во-вторых, у меня в голове стандарт ошибочно застыл на Ada 95 (эдакий последний реверанс в сторону эпохи), ан снова нет! Есть Ada 2005 и Ada 2012. Порыскал ещё и совсем вычеркнул язык из «забытых». Вовсю используется военными (в NATO чуть ли не must use) и авиацией с космонавтикой. Такие дела.

Судьба Forth

Начнём с начала. Чтобы язык стал массовым, он должен быть понятен массам (целевой аудитории). Чем больше масса (с максимумом в количество людей на планете), тем более массовый и «победивший» язык. Практика показывает, что на вершине этой метрики оказываются языки, в текущий момент наиболее близкие бытовому представлению о программировании. Эти же языки применяются в учёбе, что наращивает инерцию дальнейшего использования людьми.
BASIC разработан Курцем и Кемени в 1964 году как язык для студентов-непрограммистов. Pascal разрабатывался как упрощение Алгола с потенциалом обучения студентов структурному программированию (Вирт отмечал успех в этом 30 лет спустя, отметив также отсутствие поддержки индустрией) — да до сих в ряде вузов на Паскале кодят. Python используется сейчас первым языком для начинающих, как и JavaScript (книги «(Python|JavaScript) for kids» популярны). Это четыре сверхпопулярных массовых языка. И это четыре языка, которые могла освоить условная тётя Глаша из отдела инвентаризации столов и стульев. Вот вам и массовость.
У Forth уже его постфиксная нотация превратила массовость в недостижимую Фудзияму. И нужда в понимании стековой машины. Все действительно массовые языки исключают понимание работы памяти, стеков, регистров и т.п. Это слишком круто для тёти Глаши. А упрощать никто и не собирался. Соответственно, пока на всю планету было 17 программистов с тремя физмат высшими образованиями на каждого, Форт чувствовал себя прекрасно. Когда за клавиатуру сели Глаши, мир начал меняться.

Второе начало в компенсации человеческого фактора. Иначе говоря, даже лучший в мире программист будет безбожно косячить. От этого устали как сами программисты (ну кому нравится час скармливать стопку перфокарт, чтобы обнаружить непробитую дырочку), так и корпорации (вот весело в масштабах IBM размышлять о том, как твои 10000 программистов половину времени не продукт делают, но баги правят). Потому языки развиваются в стороны «наиболее раннее обнаружение ошибки на стадии разработки» (анализаторы, IDE), «средства языка для обработки ошибок» (исключения), «изгнание провоцирующих конструкций» (война с =/==, например), «приближение к бытовому мышлению» (скажем, та же инфиксная нотация, удобная людям, но неудобная парсерам).
Интересным следствием является поддержка кровавым энтерпрайзом расчудесного (шучу, на самом деле скукота) языка Java. Энтерпрайз требует валового производства ремесленного продукта. Если в мире 1M складов, должны быть 100K разработчиков, которые напишут 10K складских программ. Бизнес такой, особенно бизнес взаимоинтеграции этой свалки на уровне государственных тендеров. Так вот Java оказалась идеальна. Язык простой и безопасный, можно нанимать пушечное мясо. Язык достаточно строгий, потому адовая формализация процессов вместе с автоматикой тестирования и прочим компенсирует адочек в финале. Да, внутри кака, но работает. Язык достаточно развит (включая библиотеки), чтобы покрывать нужды энтерпрайза. Ура-ура. Недавно попадалась статья бойца из IBM, разбирались причины факапов. Так вот современный разработческий IBM — это интерфейс к Бангалору. Зато дёшево. Зато работает, если нанять не 10K, но 20K чуваков. Писать будут долго и мучительно, но ЗАТО ДЁШЕВО.
И снова это не про Forth. Язык, в котором вас никто не защищает ни от чего. Что написал, то в лоб и прилетит. Учитывая забавный синтаксис и стековые особенности… Скажем так, пока я осваивал первые 10 страниц учебника, завесил намертво gforth на Андроиде тоже 10+ раз.

Третье начало в универсальности. Универсальность — свойство языка, позволяющее X лет на Y архитектурах решать Z задач. Сюда стреляет всё. И поддержка массами, пишущими сотую библиотеку разбора командной строки. И поддержка корпорациями, решающими языками свои задачи (привет, Go, привет, Swift). И возможность создавать проекты любого масштаба (с каждым годом всё толще и толще). И включение народом или корпорациями поддержки новых явлений вроде цветных дисплеев и виртуальной реальности. Обилие учебной литературы. Включение в программу вузов (SICP на Python, эх). Выявить один решающий фактор невозможно, особенно во времена интернета. Не будь Райана Даля, были бы сейчас Node.js-программисты вместо jQuery-верстальщиков?
C, C++, Java, Python, Fortran — их объединяет также и расположенность к созданию библиотек, фреймворков, модулей, пакетов. Нафигачил, нафигачил, выложил, оно десятки лет живёт и всё ещё тёплое. Культура накопления и распространения. За эти же десятки лет набирается такая огромная гора решений задач на множестве платформ, что чуть ли не любая ваша обычная задача уже решена. Ну или вы можете её решить, подмазав кирпичик маслом, а шурупчик напильником.
Forth в этом контексте чистый лист. Y архитектур — да, хоть в настенной кукушке. X лет — да, он настолько прост, что его левой пяткой портируют из года в год на новое железо и в новые OS. Z задач — нет. Нечем. Forth не для прямого решения задач. Он для создания инструментов, которыми вы будете решать свои задачи. Нюанс, как мне кажется, в том, что отлично решена будет именно ваша задача, а вот сделать из решения «фреймворк»… не на Forth. Утомитесь любой привычный в других языках код писать с нуля. Утомитесь от нужды писать тысячи строк на языке, на котором эти тысячи строк неудобно читать. Forth позволяет за год сделать катану именно под вашу руку и под ваш стиль. C++ позволяет за месяц (допустим) написать завод по производству стандартных офицерских парадных шашек по сто штук в день, а на сдачу киоск Союзпечати. Разница универсальности в этом.

Вообще же у меня возникло впечатление, что авторам Forth и Forth-сообществу это и не требовалось. Массовость? Ну, побыли массовыми, когда программирование компьютеров было программированием микропроцессоров и микроконтроллеров, которым занимались специалисты. Компенсация человечности? А зачем, если фортофил готов каждый символ няшить и тешить до победы? Универсальность? Изначально не закладывалась, к ней не стремились и дальше. Удовольствие и ниша Forth — создание небольших чрезвычайно «ёмких» и «плотных» решений для крохотных (по нынешним меркам, конечно, а так-то IBM System/360 могли и комнату занять целиком) железок. Доить из Forth коммерцию? Как понимаю, и без того во взятых рамках плохо не было, контракты с NASA не копеечные, надеюсь.
Потому я не могу согласиться с тем, что язык убили. Он без борьбы отдал поле, за которое грызлись поколения BASIC (венцом Visual Basic) и Pascal (венцом Delphi), уехал в провинцию и там возделывает грядку.

Язык Forth

Лет двадцать пять назад копался в давно ископанной стопке книг на полке информатики в библиотеке и некоторое время крутил в руках [С.Н. Баранов, Н.Р. Ноздрунов. Язык Форт и его реализации. Л.: Машиностроение, 1988]. Покрутил, да и вернул обратно. Школота, интереснее казались другие языки, искал крупицы по Паскалю. Запомнил проходной момент потому, что запала в голову схожесть названия с Фортраном. Фигня же, а зацепилась, да.
Года два назад стояли с тестем в дворике на Плющихе, меланхолично курили в небо и долго обсуждали атипичные языки, на которые соскочили после обсуждения того, как на современных студентов влияют сладенькие песочницы Java и Python. Как-то докурили до ассемблеров, потом до стеков и регистров, ну и дальше по цепочке. И второй раз в жизни цепляющим за извилину эпизодом оказался Forth. Тесть как-то бодро рукой махнул, мол, на Форте можно планету покорить, а по пути ещё и Марс с Венерой на сдачу подмять. Я плечами пожал (толку обсуждать, если ничего не знаешь), но запомнил.
На днях ползаю по статьям о разработке. Бац, Forth. В статье 2016 года. И написано вовсе не про каки мамонтов. Тут уже зацепило за живое. Начал раскручивать, шо то воно такое. И докрутился до трёхчасового чтения перед сном.
Лирическое вступление для того, чтобы сразу стало ясно следующее: я не двигаю Forth в качестве рабочего языка, он применим очень узко. Если не используете, вам и не надо. Даже не топлю за него в теме «это знать каждому разработчику, желающему стать программистом». Причины интереса к нему… да вон выше описаны. А всё-таки интуитивно кажется, что с этим языком и его культурой стоит ознакомиться, если хочется почувствовать атмосферу 70..80-х гг. Да, вы не будете писать на Lisp, на Forth, на Ada и Algol. Зато до сих пор используете решения тех лет, потому полезно узнать, для борьбы с какими проблемами придумалось то или иное. Наконец, тексты программистов 30..40-летней давности — тексты людей, которые учат не использовать фреймворк X или быстрее выходить на рынок с прототипом, но учат быть программистом, который создаст язык, на котором создаст фреймворк, который сам по себе создаст рынок. Милый сердцу олдскул.

Так вот, Forth создан Чарльзом Муром в 1968..1970 годах. Если считать выходом языка выход stable production, получим 1971 год — полноценный Forth был доделан и прикручен к телескопу в National Radio Astronomy Observatory, в которой работал Мур. Ну и понеслось.
В первые минут 10..15 знакомства с синтаксисом умиляешься. Оно такое муси-пуси. Синтаксиса почти нет. Вот всё, что в голову приходит, всё отсутствует. В чистом виде Forth представляет собою метаязык, на котором вы сваяете что-то, что решит ваши проблемы. Описывать не буду, ссылок хватает. Задумываешься, ладно, мол, а куда вот это применять-то? Игры типа крестиков-ноликов клепать? Вы всё-таки походите по ссылкам, посмотрите, как язык выглядит. Тем занятнее будут примеры использования в нашем столетии. Приводить примеры из прошлого не вижу смысла, т.к. в период 1970..90 гг Forth был везде. Думаю, если накатить и начинать собирать яркие примеры из периодики («Forth Dimensions», «Journal of Forth Application and Research») и литературы (учебники, статьи в научных журналах, каталоги производителей и т.д.), блога не хватит. Ограничусь цитированием Баранова:

К середине 1980-х гг. Форт выдвинулся на третье место после языков Бейсик и Паскаль в качестве средства программирования для персональных ЭВМ, и рост его применения продолжается. Широкое распространение получили коммерческие программные продукты, написанные на Форте: системы обработки текстов, пакеты машинной графики, трансляторы, видеоигры. Стихийно быстрое распространение Форта и его практический успех обусловили необходимость стандартизации языка. В 1983 г. был опубликован стандарт «Форт-83», в соответствии с которым ведется изложение материала в этой книге.

Вот как-то так это тогда и выглядело, да.


Итак, где нынче живёт Forth.
Космонавтика. Главное в этом разделе — микроконтроллер RTX20x0, выполняющий код на Forth. Этот микроконтроллер впаивали во всё (список собирался до 2003 года, потому полным не является): миссии IMAGE, ROSETTA, Deep Impact, Shuttle, CASSINI и т.д. Да чего далеко ходить. Помните миссию Philae, которая про комету? Так вот там два RTX2010 зарулили.
Embedded. До сих пор используется во всякой цифровой мелочи. Много точечных ссылок и упоминаний, включу лишь одно интересное. Вот на этой странице отмотать вниз до Partial customer list. Partial потому, что NDA. Интересно тем, что это «покупатели» VFX Forth — от BAE и NASA до Rolls Royce и Saab. Sapienti sat. Сюда же можно добавить и этот список. Пролистал также 40+ страниц современных форумов и переписок, выяснил, что (как минимум) в США язык жив не только в заводских условиях. Инженеры его используют для своих поделок и для прототипирования (в чём он знатно силён, как начинаю всё больше понимать).
Наука. Научные статьи выходят до сих пор, т.к. стековые машины всё в той же зоне внимания, а Forth прекрасен в своей чистоте реализации идеи. Правда, это ничему не показатель, учёное сообщество по любой давной забытой штуковине статьи сотнями выпускать будет, но всё же.
А и всё, пожалуй. Космос, промышленность, наука — три современных ниши языка. Более ничего не нашёл, хоть искал старательно, уверяю.

С литературой швах. Есть стандарты, есть ворох всего по начало 2000-х, дальше тишина. Варианты Форт-систем спокойно разрабатываются внутри контор, нужды им информацию наружу выплёскивать особой и нет, потребителя, нуждающегося в свежих учебниках / руководствах, тоже нет. Потому голову питаем прошлым.
На данный момент самыми интересными источниками знания про Forth оказались вот эти (либо прочёл, либо читаю, но уже оценил):

  • Статьище «The Evolution of Forth» — информация из первых рук.
  • Журнал «BYTE, Vol.5, No 8, August, 1980» (200MB PDF). 2/3 номера в 300+ страниц посвящены языку. А ещё там реклама 26-мегабайтного винта за $5К. Были же времена, а. Даже если не читать, важно отметить то, как массовый журнал для народа выделяет целый номер под одну тему. Этого не бывает с маргинальными разработками, ну и 80-е — начало пика популярности Форт-систем, что BYTE не мог пропустить.
  • Книга «Thinking Forth». Выпустили в 1984 году, стала бестселлером. Перевыпустили в 1994. Потом в 2004, уже под CC-лицензией. Исправили опечатки, улучшили типографику и т.д. Книга одна из культовых в мире Forth и правильно — читается запойнее художественного романа.
  • Статья «Язык Форт в СССР и России» — любопытная статья с деталями, из неё же и цитата post scriptum’а.
  • Книга «Язык Форт и его реализации» — первая глубокая отечественная книга по Forth. Интересна ещё и тем, что в «Приложении 2» приведён список распространённых в 80-е Форт-систем, но по понятным причинам почти сплошь советские.

Не проработал (даже не полистал, но собираюсь) следующее потенциально интересное:

  • Кладовка древних ссылок на Forth-ресурсы, половина уже не с нами. Достаточно сказать, что там используется слово webring. ^_^
  • Книга Starting Forth того же Броуди. Примечательна и тем, что в СССР вышел её перевод [Лео Броуди. Начальный курс программирования на языке Форт. Финансы и статистика, 1990]. Милота: «Starting» vs «Начальный курс программирования».
  • Стандарт ANS Forth-1994 для хардкора.
  • Логово фортолюбов. Тоже кладовка ссылок.
  • Наконец, компания тех, кто Forth придумал, использовал и продолжает его двигать.

В сумме ссылок хватит, чтобы обеспечить извилины гимнастикой надолго. Ну и вообще есть смысл поискать издания по Forth 80-х, в США их много вышло, хоть коллекцию собирай.


PS. Хотел бы обратить внимание на слова про упомянутую в первом абзаце монографию: «Первый тираж составил 50 тыс. экземпляров, но затем издательство получило столько запросов с мест, что пришлось допечатать еще 50 тысяч – редкий случай в практике!». Современные тиражи IT/CS-книг для профессионалов — 200..3000 экземпляров за редким исключением. Для объективной оценки тиража и допечатки советую прикинуть, сколько в 1988 году в СССР было компьютеров, программистов и людей, которые могли освоить / использовать Forth.

IT в Китае, часть I

Довольно много читаю про Китай, решил короткими карточками собирать сюда любопытные детали.

В 2015 году китайцы приняли «пятилетку» Made in China 2025. Суть в том, чтобы двинуть промышленность (и около неё) на новый уровень, прям крутой-крутой. Одним из кирпичей плана является продвинутый IT-сектор. Туда вливаются деньги, люди, политика партии, наконец. Соответственно, нарастает давление на людей, с 2015-2016 гг. в хайтеке появился режим работы 996 — с 9 утра до 9 вечера 6 дней в неделю. Режим напрочь против китайского КЗоТ’а, но «всем выгодно», потому ситуация сложилась занятная. С одной стороны закон против и формально никто не может вас заставить так работать. С другой стороны так работают даже в топовых гигантах, правительство в курсе, а попасть под увольнение мало кто желает. Более того, хватает тех, кто не против такой ценой прыгнуть вверх в карьере. В общем, Китай снова забрасывает амбразуры телами.

В 1994 году в Китае появился интернет. В 1998 году правительство решило его контролировать. Так и появился проект «Золотой щит», частью (!) которого является известный всем Great Firewall of China. Или не является. В этом месте все запутались, потому многие источники пишут «быть может». Любопытно же то, что на первых этапах GFK строился отнюдь не одними лишь китайцами, но вполне западными компаниями: Nortel Networks, Motorola, Sun Microsystems, Cisco Systems, Websense, Microsoft. Правда, тот же Nortel уже через несколько лет начал получал на орехи от правозащитников (впрочем, юристы EEF в 2016 году косо смотрели и на Cisco), но бизнес, ничего личного, ага. Попытки засудить участников дележа этого большого китайского пирога не утихают до сих пор.

На удивление быстро и бегло упоминается в 2017 году то, что китайцы разрабатывают квантовую компьютерную сеть — Jinan Project. Призвана защитить от атак хакеров и т.д., сначала подключат военных, финансы и вообще всякое деликатное. Что занятно, новость была одна. Та сотня упоминаний, что есть, основана на ней. А вот дальше тишина, потому ни фига не понять, получилось ли у них, запустились ли. Но сам факт любопытный.

В 2007 году Scott J. Henderson написал книгу The Dark Visitor — годный сборник ключевых слов и событий первых 10 лет китайского хакерства. Годы любопытны тем, как поначалу активно хакеры участвовали в… даже вот как бы назвать… политической жизни. Ну т.е. ломали поначалу всё не денег ради, но исторической китайской справедливости для. Также наводит на размышления о том, как терпимо государство относится к сообществу хакеров, если хакеры атакуют то, что совпадает с целями государства. Ну и в целом любопытно посмотреть на почву, из которой вырос китайский cyber warfare.

Объёмы и масштабы китайской песочницы разработки можно судить по таким числам: 1) выпуск до 100К разработчиков в год, 2) почти 6М разработчиков всего, 3) свыше 40К софтварных компаний. Так, горстка чисел в дискуссии, чтобы живее было.