Проект «Сфера-82»: Цвет и слой - Станислав Миков
— Разумная привычка, — одобрил Беспалов.
— Опасная привычка, — поправил Слава. — Если ее заметит случайный проверяющий, Евгений еще полдня будет объяснять, почему в технической командировке у него в портфеле неучтенные диски.
Громов усмехнулся, но диски обратно не убрал.
Беспалов постучал пальцем по верхнему конверту.
— Тогда я вам кое-что запишу.
— Только избавьте меня от очередного редактора, — попросил Громов. — С редакторами я уже разобрался. Один работает, пока у него родной терминал, второй держится за свой накопитель, третий пишет на экран в обход общего порядка.
— Транслятор языка Си.
Громов посмотрел на него с таким лицом, будто Беспалов предложил ему изучить бухгалтерский учет добровольно и без командировочных.
— Какого языка?
— Си, — терпеливо повторил Юрий Сергеевич. — Есть такая рабочая копия под CP/M. BDS C. Небольшой микромашинный транслятор: без роскоши, местами грубый, зато помещается в разумный объём памяти и даёт код для восьмиразрядной машины. Пишете программу на Си, он переводит её в машинные команды.
— С языками высокого уровня я знаком, — сказал Громов, скрестив руки на груди. — Фортран знаю очень хорошо, тяжеловесным PL/I под ЕС меня тоже не испугать. Бейсик я вообще своими руками изнутри реализовывал, Алгол в теории разбирал. Но когда лезешь к устройствам, я предпочитаю машинные коды и ассемблер. Команды, которые сам вижу. Там хотя бы понятно, кто виноват. Я виноват. Процессор виноват. Иногда бумага виновата. А тут появится еще один посредник, который будет делать вид, что он умнее меня.
Беспалов оживился: похоже, именно такой реакции он и ждал.
— Вот поэтому и надо посмотреть. Для регистров и обращения к устройствам ассемблер останется. А если вам нужно разобрать текстовый файл, пройти по таблице, посчитать сумму, сравнить строки, собрать простую проверочную программу — зачем каждый раз руками вылизывать переходы и счетчики? Си держится ближе к машине, чем Фортран или Алгол, и позволяет уйти от одной и той же канители в сотый раз.
Громов скептически повертел чистый конверт.
— Ближе к машине, чем Фортран, но дальше, чем ассемблер. То есть ровно там, где можно получить и медленно, и непонятно.
— Можно, — согласился Беспалов. — Если писать без головы. А если с головой, то часть работы быстрее. BDS C требует такой же дисциплины, как любой транслятор. Сложные вычисления ему противопоказаны, с действительными числами там надо осторожно, библиотека небогатая. Зато для текстовых программ и маленьких средств проверки он очень удобен. Главное — требовать от него посильной работы, а ассемблер и бессонную ночь оставлять для своего участка.
Слава тихо рассмеялся.
— Юра, ты сейчас рекламируешь так, что Евгений Александрович обязан отказаться из чувства самосохранения.
— Я предупреждаю, — сказал Беспалов. — Пусть лучше человек сразу узнает правду. Си — хороший напильник. Им можно поправить деталь, а можно испортить палец.
Громов всё еще держал дискету двумя пальцами. Потом провел ногтем по краю бумажного конверта и спросил уже тише, без прежней гримасы:
— Команды какие?
Беспалов улыбнулся.
— Вот теперь разговор пошел правильно. Запишу рабочую копию и короткую памятку. Как включать, как собирать, где смотреть ошибки. Ваш накопитель может споткнуться о наш диск с первого раза.
— При таком исходе, — сказал Громов, — я буду считать, что судьба спасла меня от лишнего языка.
— При таком исходе, — ответил Беспалов, — я дам вам распечатку начального примера и список файлов. Всё равно вернетесь.
Он взял верхний конверт, аккуратно проверил, не загнут ли угол, и сделал на бумажной оболочке маленькую помету карандашом: «Си / CP/M / BDS». Потом полез к соседнему столу, где стоял дисковод, прикрытый серым чехлом, и начал освобождать место среди журналов машинного времени.
Громов наблюдал за ним с видом человека, которому только что всучили долговую расписку.
— Учить новый язык в командировке, — пробормотал он. — Прекрасно. Просто прекрасно. У меня теперь есть МИЭТ, топологи, форматы данных, контрольные суммы, Липатов с вопросами, Кац со своими выписками, и еще Си. Полный комплект счастья.
— Вы же программист, — сказал Слава. — Вам положено страдать от новых способов облегчить себе жизнь.
— Мне положено писать работающие программы, — буркнул Громов. — А страдать я умею и старыми способами.
Дисковод щелкнул, принимая чистый диск. Короткий механический звук прозвучал буднично: чужой накопитель взял владимирский носитель без лишних вопросов. Громов задержал взгляд на сером чехле с тем раздраженным любопытством, с каким смотрел на любой инструмент, который сначала хочется обругать, а потом всё равно приходится разбирать.
Громов провел пальцем по корешкам папок. На одних были аккуратные машинописные наклейки: «транслятор ассемблера», «программа сравнения файлов», «редактор исходных текстов», «контрольные суммы». На других стояли только внутренние номера и инициалы.
— Вы это как используете?
— Осторожно, — сказал Беспалов. — На отдельных стендах, в основном для своих задач. Где-то смотрим приемы, где-то переносим идею, где-то просто сравниваем, как люди пишут. Если начальству рассказать, что здесь лежит готовая западная библиотека, они решат, что завтра можно закрыть все наши работы и копировать. А на деле половина этого добра живет только вместе со своим терминалом, своим накопителем и своей таблицей знаков.
Он посмотрел на часы над дверью.
— Для ваших дисков я пригожусь. Для «СЛОЯ-81» вам нужен Кац. Я попросил его зайти, если он выберется от Ахметова.
Дверь открылась, и в комнату вошел Роман Борисович Кац. Он нес под мышкой тонкую папку с закладками и широкую распечатку, сложенную гармошкой. Очки были сдвинуты на кончик носа, лицо усталое, но внимательное: так смотрят на новый прибор, сразу прикидывая, куда его можно включить, чтобы он не испортил действующую схему.
— Уже выбрался, — сказал он, проходя к столу.
— Слава сказал, что вы наконец добрались до нашей программной кухни. Тогда лучше сразу снять лишние надежды. Здесь несколько разных порядков работы, и каждый оставляет после себя данные в своем виде.
Он положил распечатку на край стола.
— Большие ЭВМ считают тяжелые вещи: матрицы, участки топологии, технологические таблицы, статистику по партиям. Задания идут через машинное бюро, через перфокарты, перфоленты, иногда через магнитную ленту. Часть результата человек видит