Подробные статьи о технологиях, определяющих будущее.

VisiCalc: как таблица продала целые компьютеры

VisiCalc не просто изобрела электронную таблицу. Она доказала, что софт способен продавать железо и навсегда изменила экономику вычислений.

Бумажная бухгалтерская сетка растворяется в зелёном экране винтажного компьютера 1970-х

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

Дэн Бриклин и Боб Франкстон выпустили VisiCalc в 1979 году. Через год продажи Apple II выросли в шесть раз. Люди заходили в магазины и говорили: «Мне нужна машина, на которой работает VisiCalc». Так родилась концепция «убийственного приложения», то есть софта, ради которого покупают железо. Этот паттерн повторялся на протяжении всей истории вычислительной техники, и он помогает понять, почему hardware и software связаны именно так, как связаны.

Что именно делала VisiCalc

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

Проблема была в итерациях. Если менялось одно допущение, например прогнозируемый рост повышался с 8% до 10%, бухгалтеру приходилось пересчитывать каждую ячейку, которая от него зависела. В сложной модели это означало часы ручных пересчётов, и каждый из них был шансом ошибиться. Анализ «что, если», то есть исследование того, как разные допущения влияют на результат, был настолько трудоёмким, что его редко делали основательно.

VisiCalc полностью автоматизировала этот процесс. Меняешь одну ячейку, и все зависящие от неё ячейки обновляются мгновенно. То, на что у бухгалтера уходили часы, теперь занимало секунды. Ценность была не в том, чтобы «использовать компьютер вместо бумаги», а в том, чтобы «перебрать 50 сценариев за то время, которое раньше уходило на один». Это качественное изменение того, чего можно добиться в финансовом анализе.

Технические ограничения, которые определили дизайн

VisiCalc работала на Apple II с 32 КБ оперативной памяти, процессором на 1 МГц и текстовым дисплеем на 40 столбцов. Эти ограничения вынуждали принимать решения, которые впоследствии оказались дальновидными.

Модель сетки, то есть строки и столбцы ячеек, каждая из которых содержит значение или формулу, отчасти была ответом на ограниченный дисплей. Экран 40×24 символа естественно показывает сетку. Свободный холст документа потребовал бы прокрутки и алгоритмов вёрстки, с которыми железо не справилось бы. Сетка делала интерфейс понятным сразу: структуру данных было видно без всякой инструкции.

Система формул по умолчанию использовала относительные ссылки на ячейки: формула в C1, ссылающаяся на A1 и B1, при копировании в C2 автоматически начинала ссылаться на A2 и B2. Это решение родилось из наблюдения, что большинство формул в таблицах следуют закономерностям по строкам или столбцам. Оно сильно упрощало построение модели: формулу задаёшь один раз, протягиваешь вниз по столбцу, и готово.

При 32 КБ VisiCalc не могла держать в памяти огромную сетку. Решение: хранились только ячейки с данными, а пустые не занимали памяти вовсе. Такое разреженное представление до сих пор лежит в основе современных таблиц. Если бы сетка Excel на 17 миллиардов ячеек хранилась плотно, ей потребовались бы петабайты. Ограничение, которое подтолкнуло VisiCalc к разреженному хранению, оказалось архитектурно верным решением независимо от объёма памяти.

Паттерн «убийственного приложения»

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

  • VisiCalc → Apple II. Apple II стоил $1 300–$2 700 (примерно $5 000–$10 000 в сегодняшних деньгах). VisiCalc стоила $100. Бизнес покупал компьютеры за $2 000, чтобы запускать программу за $100, потому что выигрыш в производительности окупался за несколько недель.
  • Lotus 1-2-3 → IBM PC. Когда перенос VisiCalc на IBM PC затянулся, Lotus 1-2-3 заполнил пустоту и стал убийственным приложением для совместимых с IBM компьютеров. Lotus изначально проектировали под аппаратную часть IBM PC, и в типовых задачах он работал быстрее VisiCalc.
  • PageMaker → Macintosh + LaserWriter. Настольная издательская система оправдывала премиальную цену Macintosh. Mac вместе с LaserWriter стоил $7 000+, но заменял типографское оборудование за $50 000.
  • Веб-браузер → интернет-подключение. Netscape Navigator сделал интернет полезным для нетехнических пользователей, что подстегнуло спрос на подписки провайдеров и сетевую инфраструктуру.
  • ChatGPT → GPU-кластеры. Нынешний бум ИИ создаёт небывалый спрос на оборудование NVIDIA. Компании тратят миллиарды на GPU-инфраструктуру, потому что ИИ-приложения создают достаточно ценности, чтобы это оправдать.

Паттерн поразительно стабилен: кто-то создаёт софт, который превращает железо из диковинки в необходимость. Производитель железа получает огромную выгоду (бизнес Apple, по сути, построен на VisiCalc), но создатель софта часто получает меньше всего. Компания Дэна Бриклина и Боба Франкстона, Software Arts, в итоге была поглощена в ходе враждебного поглощения собственным издателем. Электронная таблица, которую они придумали, ежегодно генерирует триллионы долларов экономической ценности. Им досталось лишь крохи.

Почему электронная таблица живёт до сих пор

VisiCalc вытеснила Lotus 1-2-3, которую вытеснил Excel, а сейчас Excel оспаривает Google Таблицы. Но базовая идея, сетка ячеек со значениями и формулами с автоматическим пересчётом, не менялась уже 45 лет. Почему?

Электронная таблица, пожалуй, самая успешная среда программирования из когда-либо созданных. Непрограммисты пишут формулы, которые по структуре представляют собой функциональный язык: чистые функции (у формул нет побочных эффектов), ссылочная прозрачность (ссылка на ячейку всегда возвращает актуальное значение) и реактивные обновления (изменение входа автоматически распространяется дальше). Пользователи Excel ежегодно пишут больше «кода», чем все профессиональные программисты вместе взятые.

Ключевая идея, которую VisiCalc поняла правильно и которую сохранил каждый её преемник, это мгновенная обратная связь. Меняешь значение, сразу видишь результат. Никакой компиляции, деплоя или ожидания. Этот плотный цикл обратной связи делает таблицу естественным инструментом для исследовательской работы с данными, быстрых расчётов и ad-hoc анализа. Любая попытка заменить таблицы «нормальным» софтом (специализированными инструментами бюджетирования, платформами бизнес-аналитики, самописными приложениями) упирается в один факт: в таблице можно начать работать за три секунды.

Реконструкция VisiCalc

Недавние проекты по восстановлению VisiCalc из исходного кода дают увлекательный взгляд на то, как писали софт в экстремальных ограничениях. Оригинальная версия для Apple II была написана целиком на ассемблере 6502. Подходящего языка высокого уровня, который поместился бы в 32 КБ и при этом был бы достаточно быстрым для интерактивного пересчёта, просто не существовало.

Чтение реконструкции показывает, сколько изобретательности вложили в то, чтобы программа ощущалась отзывчивой на процессоре в 1 МГц. Движок пересчёта отдавал приоритет видимым ячейкам: сначала пересчитывались те, что сейчас отображались на экране, так что пользователь сразу видел результат, а зависимые ячейки обновлялись в фоне. Эта оптимизация под восприятие делала VisiCalc быстрее, чем она была на самом деле.

Система хранения ячеек использовала связный список, отсортированный по столбцам, а внутри каждого столбца по строкам. Это ускоряло операции по столбцам, например суммирование и вставку столбца, и отражало допущение, что финансовые таблицы обычно устроены так: периоды времени идут в столбцах, категории в строках. Структура данных кодировала предметное знание о том, как мыслят бухгалтеры.

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

Уроки для современного софта

Успех VisiCalc содержит уроки, которые легко упустить в эпоху избытка вычислительных ресурсов.

  • Решайте реальную проблему для реальных людей. VisiCalc не создала рынок, а автоматизировала рабочий процесс, который миллионы людей уже выполняли вручную. Лучший софт убирает рутину, а не создаёт возможности на пустом месте. Бухгалтеры и так умели строить финансовые модели. VisiCalc просто сделала это в 100 раз быстрее.
  • Ограничения рождают хороший дизайн. Лимит в 32 КБ вынудил использовать разреженное хранение. Дисплей на 40 столбцов задал интерфейс-сетку. Процессор на 1 МГц потребовал оптимизаций под восприятие. Каждое ограничение породило решение, которое оказалось верным в любом масштабе.
  • Скорость обратной связи — это фича. Мгновенный пересчёт, который делал VisiCalc такой привлекательной, стоит за тем же принципом, что и hot-reload в современных средах разработки, живой предпросмотр в дизайнерских инструментах и REPL-разработка. Время между изменением и видимым результатом напрямую влияет на то, как люди думают о своей работе.
  • Изобретатель редко получает свою долю ценности. Бриклин и Франкстон изобрели электронную таблицу, но финансово выиграли непропорционально мало. Этот паттерн повторяется: создатели трансформирующего софта часто видят, что основная часть ценности уходит производителям железа, владельцам платформ или поздним игрокам, которые умеют распространять продукт. Прежде чем что-то строить, стоит подумать о бизнес-модели.

Сорок пять лет спустя мы всё ещё живём в мире, который создала VisiCalc. Электронная таблица остаётся инструментом по умолчанию для ad-hoc работы с данными. Паттерн «убийственного приложения» по-прежнему двигает продажи железа: достаточно заменить VisiCalc на ChatGPT, а Apple II на NVIDIA H100. И принцип, что софт создаёт больше ценности, чем железо, остаётся таким же верным, как тогда, когда программа за $100 превратила компьютер за $2 000 из диковинки в бизнес-необходимость.