Тема номера
Скупой платит дважды
Анатолий Вассерман
Редакционный комментарий к одной из моих публикаций объяснял мою неприязнь к Intel большей комфортабельностью Motorola для разработчиков. Я вполне разделяю это мнение редакции.
Комфорт для разработчиков, казалось бы, совершенно необязателен. «Настоящий испытатель должен летать на всём, что может летать, и (с некоторым трудом) на том, что, вообще говоря, летать не может». Настоящие программисты эту заповедь блюдут столь же строго. И иной раз творят чудеса. Как писал Э.Йодан: «Они умели заставить IBM-1401 встать на голову и выплёвывать деревянные пятицентовики...»
Мне и самому приходилось работать на машинах, возможности которых не могут нынче вызвать ничего, кроме соболезнований. «Промiнь» (по-украински – луч): 100 команд, заносимых в компьютер фигурными штекерами (по три на команду), и 100 ячеек памяти по 5 десятичных знаков мантиссы и 2 знака порядка. Микроконтроллер, разработанный в системном отделе «Пищепромавтоматики»: процессор Intel 8080,16 Кбайт постоянной памяти и 2 Кбайт оперативной. На этом фоне даже СМ-2 (256 Кбайт оперативной памяти, от 4,8 до 40 Мбайт дисковой) выглядит вполне почтенно и комфортабельно.
Если возможности компьютера ограничены – невелика и его цена. Разработку программы приходится оплатить лишь один раз. Зато дешёвых компьютеров продать можно куда больше, чем серьёзных. Выигрыш на числе проданных экземпляров вполне окупает перерасход на разработку.
Только вышеприведенная фраза Йодана кончается: «...но они не были хорошими программистами». Не были потому, что все силы приходилось тратить на борьбу с ограничениями компьютера. А на решение основной задачи ничего не оставалось.
Одновременно с СМ-2, ведущей свою родословную от Hewlett-Packard 21, в СССР появилась СМ-4 – копия PDP-11 Digital Equipment Corporation. Аппаратные ресурсы обеих машин отличались не по объёму. По структуре.
Специалисты HP и северодонецкого НИИ управляющих вычислительных машин создали конструкцию действительно экономную. И очень остроумную. Чего стоит хотя бы упаковка в одной команде целой последовательности манипуляций с содержимым регистра: сдвиги, инверсии, проверки условий – до шести операций в одной! Не зря этой идее обещано новое воплощение в совместной разработке Hewlett-Packard и Intel – процессоре с очень большой шириной команды (very large instruction width) под условным названием Р7.
Программы для DEC PDP-11 были, как правило, заметно объёмистее, чем для HP 21, – при тогдашних ограниченных ресурсах компьютеров очень ощутимо. Объём рос прежде всего из-за меньшей изощрённости системы команд. Большинства трюков, обеспечивающих большую функциональность каждой команды HP, в DEC просто не было.
Зато всё остроумие инженеров DEC обратилось на способы адресации данных в компьютере. Это не слишком сокращает программу. Но резко упрощает её составление. Тот самый комфорт для разработчика.
В результате программы для DEC писались раза в два быстрее, чем для HP. Конечно, ассемблерные программы. Только на языках высокого уровня все фокусы архитектуры HP всё равно толком не использовались – слишком уж они нелогичны. Зато методы адресации DEC, чётко систематизированные, автоматизации поддавались весьма эффективно. Кстати, сами трансляторы писались в основном на ассемблере. Так что и составлять их для DEC было куда легче. На СМ-2 я располагал всего тремя трансляторами, из которых только один был приемлемо эффективен. А мои коллеги на СМ-4 выбирали из доброго десятка языков программирования.
Не зря популярнейшая и по сей день операционная система Unix зародилась именно на PDP. А вот для HP 21 и СМ-2 её версий так и не успели создать.
За то время, пока моя группа разрабатывала одну автоматизированную систему управления технологическими процессами (АСУТП), аналогичная группа на СМ-4 выпускала две. И этим компенсировала всю разницу в цене компьютеров.
И на других дешёвых машинах картина отличалась мало.
«Промiнь» раз в пятьдесят-сто дешевле М-220, с которой я работал в те же дни (появилась она лет на десять раньше «Променя»). Зато задачи она решала такие, с которыми и тысяча «Променiв» не справились бы. Аза время программирования любой задачи на «Промен!» можно было на М-220 сделать несколько десятков программ – куда более объёмистых. Так что пользоваться «Променем» приходилось лишь потому, что почти все М-220 решали задачи военно-промышленного комплекса.
На программное обеспечение для микроконтроллера мы потратили более двух лет. И половина срока ушла на втискивание всех системных программ, включая интерпретатор встроенного языка программирования пользовательских задач, в 16 Кбайт ПЗУ. Одной зарплаты программистов за потерянный год хватило бы на дополнительные 16 Кбайт для доброй сотни контроллеров. И 2 Кбайт ОЗУ явно не хватало для задач действительно серьёзных. Поэтому покупатели нашлись менее чем на тысячу машин. Тем более что за время нашей разработки на рынок пришли и другие контроллеры – подороже, зато вовремя. Похоже, тут экономия не окупилась.
Впрочем, не только мой личный опыт свидетельствует: экономия на комфорте разработчиков – дело рискованное.
Система команд микропроцессоров Motorola основана на опыте DEC. И на этих микропроцессорах зародилось пять семейств компьютеров: Apple, Sun, Atari, Amiga, NeXT. Правда, единственное семейство персоналок на процессорах Intel – IBM PC – превосходит их по поголовью на порядок. Но это заслуга скорее не инженеров, а умелых коммерсантов. Колоссальные производственные мощности IBM позволили торговать PC по ценам бытовой электроники и этим обеспечить грандиозные тиражи. Чем и привлекли сотни клонмейкеров.
Зато Apple Macintosh изначально предоставил разработчикам куда больший комфорт, нежели фантастически нелогичная писишка. Это окупилось мгновенно. Ибо программы разрабатываются для пользователей. И обеспечить комфорт пользователю, не дав удобств разработчику, трудновато. Пользовательский интерфейс Мас'ов и по сей день остаётся для IBM PC труднодосягаемым эталоном. Только Windows 95 смогла приблизиться к удобствам, предоставленным пользователям MacOS ещё в 84-м. И большинство программ работы с изображениями – рисовалки, ретушёры, издатели – появляются прежде всего на Apple Macintosh и лишь впоследствии адаптируются к IBM PC. Издательства во всём мире комплектуются в основном Мас'ами.
Ещё дальше по пути комфорта разработчиков пошёл Стивен Джобс. Ради этого он даже покинул в 1985-м основанную им и Степаном Возняком Apple и создал фирму NeXT. Правда, проект опередил своё время – основные инженерные решения NeXT пришли на Мас'и лет через шесть-семь, а до IBМ PC добрели лишь сейчас. Так что Джобс к 1993-му свернул выпуск компьютеров – слишком мало было покупателей. Зато программисты Джобса успели за эти годы создать операционную систему NeXTStep – столь совершенную, что её развитие продолжается и по сей день. Конечно, уже на другой технике – Sun, IBM PC, больших машинах IBM...
Существуют версии Unix для обычных IBM PC. Но компьютеры, архитектура которых специально разработана для устойчивой работы под этой системой, значительно дороже персоналок. Неудивительно: очень уж разносторонне Unix нагружает машину. В своё время говорили: «Если на СМ-4 работает Unix, вызывать электронщиков незачем – машина заведомо в полном порядке». А программы под Unix дороже персоналочьих аналогов иной раз в десятки раз. Слишком мал их тираж, слишком немногим пользователям приходится оплачивать разработку.
И всё же есть немало желающих потратить деньги и на эти программы, и на соответствующую им технику. Ибо комфортабельные условия разработки позволили программистам обеспечить надёжность этих программ, устойчивость их работы. В тех приложениях, где без надёжности обойтись нельзя(прежде всего в банковских и прочих коммерческих информационных сетях), позиции Unix стабильны.
Даже те коммерсанты, кто уже потратился на создание сетей из IBM PC, зачастую перевооружаются Unix-серверами и Unix-терминалами. Так же, как недавно заменяли персоналки, собранные «на коленке», брэнд-неймами. Повторяя про себя поговорку, которой я озаглавил эту заметку.
Хотя поговорка, пожалуй, устарела. Если подсчитать все потери из-за ошибок, допущенных программистами вследствие дискомфорта при разработке, можно грустно сказать: скупой платит сторицею.