Аннотация: Фанфик от dimka про электронные таблицы.
ElTab
Социализм - это учет и контроль. А распечатка текстов с ноута - процесс хлопотный и нервный. Файлов много, печатаются параллельно, то сбойнет что-то, то просто пропустишь. Чтобы ничего не пропустить Катя вела учет. В Excel. Простенькая табличка - когда, какой файл, сколько страниц , в какой ящик и на какой полке спрятали. Плюс название и описание - иногда кусок вступления, иногда содержание, иногда еще что-нибудь. Все это периодически допечатывалось и пряталось в отдельную коробку. И вот Кате потребовалась простенькая доработка - чтобы при начале печати нового файла его имя автоматически добавлялось в табличку. Сделал за два часа, добавив кроме имени файла еще и дату начала печати, и количество страниц. Казалось бы, сделал и сделал, но в голове возникла мысль и не давала покоя. Excel популярен, более того преподаватель в институте как-то сказал, что электронные таблицы были очень популярны еще до возникновения майкрософт.
А ведь микропроцессор обещают уже летом. И ЭВМ на нем будет ну никак не позже нового года. Конечно, в СССР это будет, прежде всего, управляющая ЭВМ. Но очень хочется выйти и на западные рынки, прежде всего американский. И для этого программа, позволяющая позиционировать компьютер не только как игрушку, была бы исключительно полезна. Вопрос в том насколько сложно ее сделать и что, собственно, она должна уметь. Обдумывание последнего заняло почти неделю, по истечении которой я решил обсудить результат с Федором и Иванами. Они не программисты, но обсуждать это с ребятами Староса или с ТЭЦ пока не хотелось.
Идея не то, чтобы не встретила энтузиазма, она оказалась просто не понята, и только вера в своего директора заставила отнестись к ней полностью серьезно. Добавив по результатам обсуждения в ТЗ синус, косинус, экспоненту и логарифмы, я передал его тем же программистам с ТЭЦ, которые адаптировали тетрис для геологов. С нашей стороны содействие оказывали два Ивана.
Управились неожиданно быстро, всего через четыре месяца гордая команда демонстрировала мне результат своих трудов. Результат не впечатлял. Это был совсем не Excel. Даже через час после начала показа я все еще не понимал можно ли на этом делать что-то полезное и востребованное. Хотя на словах все было красиво. 63 столбца, 254 строки и максимальная длина текста в ячейке 63 символа. Куча разных функций, включая логические и агрегирующие. Пересчёт таблицы с учётом зависимостей между ячейками. И все это требовало для работы всего лишь 46к оперативки. И две Спирали. На одной хранилась сама таблица, а другая использовалась для хранения программы и дополнительных функций. Можно было обойтись и одной, но тогда все время приходилось переставлять диск. Для снижения объема занимаемой памяти хранилась только информация в ячейках, содержащих данные, а также сведения о том, какие ячейки являются пустыми. Еще было много разных слов, но их смысловая нагрузка от меня ускользала. Судя по рассказу, в ходе разработки возникла целая куча проблем, для решения которых активно привлекались друзья, знакомые и знакомые знакомых. Вопрос генератора случайных чисел обсуждался консилиумом двух докторов, пяти кандидатов и неизвестного количества нетитулованных участников. Первоначальная идея оптимизации нового и популярного алгоритма RANDU под восьмибитное слово привела к неожиданным выводам - существует линейная зависимость между тремя соседними элементами последовательности и, как следствие, этот алгоритм вообще использовать нельзя. В результате получилось две функции генератора: одна использует линейный конгруэнтный метод, результат которого назвать случайным - это сильно погрешить против истины, и вторая на методе Фибоначчи с запаздываниями, алгоритм хороший, но уж очень медленный. В общем, по результатам работы, десять статей для журнала 'Радио' уже написано и еще чуть больше на подходе. Пришлось слегка остудить горячие головы, отложив все публикации на период после опытной эксплуатации. Предложив подготовить на завтра десяток демонстрационных примеров, вернулся в кабинет и попытался уложить скачущие мысли. Мыслей было много и все на разные темы. Как практически применить новую программу так и не придумалось, но заметный, хотя и не совсем понятный энтузиазм всех разработчиков вселял некоторый оптимизм. Затем мысли зацепились за случайные числа. О том, что проблемы с этим были еще и в 90х я знал все от того же преподавателя, который похоже очень любил приводить их в примет того, как все бывает непросто. Подробностей я ,конечно же не помнил, точнее говоря даже и не знал никогда, но зато знал где посмотреть. Еще разбирая завалы всякого мусора на винте, я нашел и несколько жемчужин, в то числе и широко известное, но мало кем читаное "Искусство программирования" Кнута. Руки до него до сих пор так и не дошли, но похоже настало и его время, может найдется что-то интересное. Шесть часов спустя стало понятно - интересного действительно очень много. Но чтобы понять, что именно, нужны специалисты. Нет, не смотря на то ли тяжелый язык изложения, то ли удачный перевод, понять, что к чему было вполне возможно. А вот решить, что же с этим делать и, что это дает, было гораздо сложнее. Кое-что было понятно сразу. Например, о возможных проблемах с RANDU была публикация еще в 65 году, но на нее никто особо не обратил внимания. Гораздо интереснее оказалось, что генераторы последовательности Фибоначчи с запаздыванием успешно применявшиеся с 1958 года, фактически провалились на крайне простом критерии случайности. Выяснилось это, правда, только в 90х, тогда же предложили методы решения этой проблемы, отбрасывая ненужные элементы последовательности. Все это, а так же и другие методы, достаточно подробно описывалось, местами даже с кодом на каком-то странном ассемблере. Не меньший интерес представляли и задачи с решениями.
Пытаясь оценить новизну, быстро пробежался поиском по всему тому. Нашлось много ссылок на публикации или открытия 70х,80х и 90х годов. Но что же делать со всем этим богатством? Почистить от дат, ссылок и опубликовать? Слишком уж много косяков и нестыковок может вылезти. Разбить на части или, даже повыдергивать отдельные алгоритмы? Но для этого надо хорошо понимать, что там к чему. И как ни крути, риск вызвать пристальный интерес и подозрения очень велик. А объяснить необходимость такого риска я не могу. Как объяснить какая польза от хорошего генератора случайных чисел или от полиноминальной арифметики. Если о последней я только из самого Кнута и узнал, а для чего она используется - темный лес. Все же, собравшись с мыслями, сел писать письмо Шелепину, возможно он или Семичастный смогут придумать ,как легендировать столько новинок и как добиться чтобы они принесли пользу, причем нам, а не тем же американцам.
Придя не выспавшимся на работу и отправив письмо, в поисках возможности практического применения электронных таблиц позвал на просмотр главбуха. Как ни странно она проявила больше интереса. Возможно, ей понравилось наличие колонки и строки с итогами. Позвонив в бухгалтерию, она вызывала девочку с каким-то отчетом. Усадив девочку за компьютер при мощной поддержке разработчиков, попытались ввести отчет. Ровно через пятнадцать минут программа зависла. Повторная попытка привела к аналогичному результату. Разошлись, оставив программистов разбираться. В 12 часов ночи позвонил радостный Иван старший с сообщением, что разобрались и исправили. Оказывается, одна ячейка ссылалась на другую, та на третью, а третья на первую. Чтобы избежать зависания ввели предварительный контроль и вывод сообщения об ошибке. Очень радостно похвалил Ивана и пошел досыпать. Проблемы на этом не закончились. Ошибки под руками бухгалтера лезли сплошным потоком. Только через месяц удалось добиться стабильной работы с результатами похожими на правильные. Дополнительно Иваны протестировали работу математических функций. Очередной показ прошел более-менее успещно.Впрочем, перспективы практического применения оставались крайне туманны. Список замечаний и пожеланий включал в себя свыше 40 позиций. Но основной проблемой были 40к Спирали. Большие таблицы не лезли в них несмотря на все ухищрения. Еще бухгалтерия очень хотела хотя бы 100 знаков на ячейку, а лучше 120. И печать псевдографики. А так же сортировку по строкам и по столбцам и фильтры. И если в оперативную память по прикидкам это еще лезло, то с долговременное хранение становилось все более и более узким местом. Нужен, как минимум, нормальный дисковод килобайт хотя бы на 160, да и жесткий хоть на пятерочку был бы очень кстати.(тут можно по поводу дисков что-то вставить в зависимости от того, что планируется).
Сам же я, в это время занимался, в основном, Кнутом и его искусством. Шелепин переключил этот вопрос на Семичастного, а тот предложил подготовить, для начала, подробный список затронутых в книге вопросов. Специалисты КГБ подготовят обзоры текущего положения, а потом к ним, может быть, добавим кусочки из книги и передадим для оценивания отечественным математикам на экспертизу. Все под грифом, конечно. Без грифа в СССР идут только такие тайны за которые сразу исчезнешь если что.
Через неделю полсе показа стало понятно, чем вызван энтузиазм разработчиков. И рассказал мне обо всем Анатолий. Во всех технических вузах есть курсовые или расчетные работы на симплекс-метод. Считать их вручную долго и муторно. А посчитать на ЭВМ мало кому доступно. Побывав в процессе разработки в нескольких вузах, ребята завели полезные связи среди студентов, преподавателей и научных сотрудников. Таблички для типовых примеров они сделали за два дня. Даже дописали несколько специальных дополнительных функций. Работу целиком они не делали, только расчет, все остальное делали или старшекурсники или аспиранты. За расчет брали скромно - 5(тут сложно сказать какая сумма адекватна. В конце 70х, начале 80х за сложный курсовой с расчетами брали 100+) рублей. Кроме симплекса добавили еще несколько типовых расчетов, и венцом стала задача оптимизации графика движения, методом последовательных приближений к каким-то средним квадратам. За месяц на четверых получилось больше тысячи. Причем не только без отвлечения от основной работы, но и с пользой для программы. Основным потребителем выступали заочники. Первый отдел отслеживал ситуацию прямо с начала консультаций, но не вмешивался. Я не стал спрашивать почему, а Анатолий и не сказал.
Программу решили назвать ЭлТаб. ElTab на американском. Я так и не смог смотреть на нее без содрогания, но у мира был свой взгляд. И если в СССР она просто шла в стандартной поставке Денди2(условное название), то в тех же штатах за нее приходилось доплачивать. Цену поставили $149 за одну копию и $129 при покупке от трех и выше, а неограниченную лицензию продавали за $20000. И покупали. За пять лет пользовательская база программы превысила 200000 установок. Ее портировали на все популярные ЭВМ начиная ПДП11(думаю пдп все равно взлетит). Она стала корпоративным стандартом во многих крупных компаниях. И фактически эволюционировала в привычный мне вид с появлением графического интерфейса.