Глава 8 Язык ГОСТов

Утро следующего понедельника встретило Алексей не гулом вентиляторов, а шелестом бумаги.

КБ вяло просыпалось после выходных: кто‑то в коридоре уже требовал у секретарши чай, Михалыч медленно шёл по коридору, разглядывая новую стенгазету, а на доске объявлений висела свежая бумажка «О порядке экономии бумажной продукции». Под ней кто‑то аккуратно приписал карандашом: «Особенно при составлении ТЗ».

Алексей остановился на секунду, усмехнулся и поправил под мышкой пухлую папку. В папке лежала их вчерашняя «Сфера» — схемы, заметки, лист с аккуратным списком того, что они решили протащить в техзадание. Шина, ЦУБ, порты, ВКУ, магнитофон, устойчивость к провалам питания.

Теперь всё это предстояло перевести на язык, который понимало Министерство и не слишком любил Первый отдел: на язык ГОСТов.

* * *

Отдел документации жил в отдельной вселенной.

В КБ пахло канифолью и горячим текстолитом, а здесь — свежей бумагой, типографской краской и чем‑то ещё, тягучим, от чего вспоминались школьные библиотеки. Стены сплошь заставлены шкафами с корешками: «ГОСТ 2.101–68», «ГОСТ 15.001–73», «Типовые формы ТЗ», сверху — аккуратные коробки с надписями «Архив. Не трогать».

За длинными столами сидели женщины разного возраста, вооружённые линейками, красными ручками и печатными машинками. Бумага шуршала, каретки стучали, где‑то жужжала «Эрика». В углу негромко играл «Маяк» — ведущий бодрым голосом рассказывал о досрочном выполнении планов по выпуску чего‑то важного и крупносерийного.

У окна — отдельный стол. На нём, как на пьедестале, — лампа зелёного стекла, аккуратная стопка ГОСТов, чернильница, набор цветных карандашей. И за всем этим — Наталья Сергеевна.

Она подняла глаза, когда тень от Алексея легла на её бумаги, и отточенным движением достучала фразу на машинке.

— Алексей Николаевич, — сказала она нейтрально. — С «табличным прибором» пришли?

— Сколько у нас теперь названий? — откликнулся он. — По дороге сюда успели назвать «табличным прибором», «счётной машинкой» и «настольным вычислителем».

— В протоколе он пока БВП‑1, — напомнила Наталья. — Бытовой вычислительный прибор. Всё остальное — творчество масс.

Она указала ему на стул напротив, строгим жестом отодвинула в сторону текущую папку и положила перед собой чистый бланк с заголовком «Техническое задание».

— Ну что ж, — сказала она. — Попробуем из вашего творчества сделать документ.

Она посмотрела на папку у него под мышкой. — Это что, целиком вы от руки написали? Или коллективно рисовали?

— Коллектив народный, — ответил Алексей, выкладывая на стол тетрадь, несколько листов кальки и аккуратный лист с тезисами. — Я, Люба Ветрова, Евгений Громов. Схема, пояснения, список желаний.

— Желаний, — повторила она. — Ага. Значит, мне предстоит отделить желания от того, за что на планёрке спросят с Седых.

Она пролистала первые листы, остановилась на схеме с ЦУБом и тонкой шиной, приподняла бровь.

— Внутренние связи, — быстро поправил Алексей. — Унифицированные.

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

Она перевела взгляд с чертежей на него.

— Давайте так, Алексей Николаевич. Я сейчас внимательно слушаю, что вы хотите, а потом будем вместе решать, что «из этого можно», а что «из этого можно, но по‑другому написано».

Она чуть улыбнулась уголком губ. — И что совсем нельзя, если вы хотите жить спокойно.


* * *

Он коротко изложил.

Без «компьютера» и «программирования». Только «табличный прибор», который умеет не только считать по одной методике, но и хранить несколько типовых методик, позволять оператору выбирать нужную, а в идеале — ещё и задавать последовательность шагов. Память — для чисел и для этих самых «последовательностей». Возможность «перескочить» с одной части последовательности на другую, если условие в таблице выполняется или нет. Плюс — ВКУ и магнитофон.

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

Наталья слушала, не перебивая, делая пометки в своём блокноте. Разве что при словах «выбирать последовательность шагов» чуть‑чуть нахмурилась.

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

— В рамках разрешённых, — уточнил Алексей. — С фиксированным набором операций. Сложить, вычесть, умножить, перенести, перейти к следующей строке…

Она кивнула.

— И чтобы прибор эту последовательность… запоминал?

Он осторожно кивнул.

— На уровне прибор — ничего не «понимает», — сказал он. — Просто в таблице для каждой «формулы» хранится набор шагов. Оператор вводит — прибор воспроизводит.

Он поймал её взгляд и добавил: — Мы не говорим «программа». Мы говорим «методика расчёта» или «набор табличных операций».

Наталья посмотрела на бланк ТЗ, потом снова на него.

— Хорошо, — сказала она. — Тогда давайте начнём сверху.

Она вставила бланк в машинку, старательно выровняла поля.

— Раздел первый: «Назначение и область применения». Здесь всё просто: «Прибор предназначен для выполнения типовых табличных расчётов в бухгалтериях, плановых отделах и учебных заведениях».

Она пощёлкала клавишами, проговаривая вслух. — «…обеспечивает повышение производительности труда и сокращение трудоёмкости расчётных операций». Это стандарт.

Алексей кивнул. Это была безопасная часть — все любили фразу «повышение производительности труда».

— Теперь «Основные функции». Вот здесь начнётся весёлое.

Она достала из стопки тоненькую брошюру «Типовая форма технического задания» и развернула закладку на середине.

— Смотрите, — показала она ему строчку. — Тут прямо написано: «В данном разделе перечисляются функции изделия и при необходимости — специальные режимы работы».

Она подчеркнула ногтем «при необходимости». — То есть всё, что будет звучать как «что‑то новое», сразу попадёт под лупу. Особенно если там будет хоть отдалённо что‑то про «самостоятельную деятельность оператора».

— Мы можем назвать это «расширенные режимы обработки табличных данных», — предложил Алексей. — Без уточнения.

— Можем, — согласилась она. — Но этого мало. Вопрос зададут при согласовании: какие именно режимы?

Она взяла карандаш, открыла чистую страницу блокнота и разделила её на две колонки.

Слева написала: «Как говорят инженеры», справа — «Как писать в ТЗ».

— Итак. Вы сказали: «адресуемое поле ячеек». Как вы это себе представляете?

— У нас таблица, — объяснил Алексей. — Строки и столбцы. Каждая ячейка имеет номер — адрес. Оператор должен иметь возможность сказать прибору: сейчас работаем с этой ячейкой, потом с той. Тогда можно хранить не просто последовательность действий «в целом», а операции над конкретными позициями.

Наталья аккуратно вывела слева: «Адресуемое поле ячеек». Справа — пока оставила пусто.

— Следующее. «Условный переход».

— Если мы при вычислении получаем результат — скажем, сумму больше нуля — нам иногда нужно перескочить не на следующий шаг, а на какой‑то другой.

Алексей легко видел перед глазами знакомую конструкцию: `IF ×0 THEN GOTO 50`. Только вместо X — содержимое ячейки, вместо 50 — номер строки в таблице. В детстве он проверял такие вещи, щёлкая по клавишам БК, пока строчка «IF» не вырезалась в мозгу.

— То есть, по‑нашему, это «условный переход», — продолжил он вслух. — По‑вашему…?

Наталья покачала головой.

— По‑моему, слово «условный переход» в ТЗ на бытовой прибор — это прямой билет на беседу в одном соседнем кабинете, — сухо сказала она. — Условные переходы у нас бывают в больших ЭВМ и в задачах оборонного значения.

Она постучала карандашом по пустой правой колонке. — Для начала давайте заменим это на что‑то вроде «изменения порядка обработки строк в зависимости от результатов вычислений».

Алексей прикинул.

— «Порядка обработки строк» — звучит невинно, — признал он. — Содержит, по сути, то же самое.

— Именно, — сказала она. — Наша задача — чтобы любой начальник, не вдаваясь в детали, увидел слова «строки», «таблицы», «учёт» и успокоился. А человек, который умеет читать между строк, понял, что там есть возможности.

Она осторожно вписала справа: «изменение порядка обработки элементов таблицы в зависимости от значений промежуточных результатов».

— Дальше, — подтолкнула она. — Что там у вас ещё… «Язык формул»?

Алексей чуть не поперхнулся.

— Я старался этого слова избегать, — сказал он. — Но да. Нам нужен хотя бы примитивный способ задавать последовательность действий так, чтобы оператор мог её посмотреть, поправить, сохранить.

Она вздохнула.

— Алексей Николаевич… люди боятся слова «язык», если это не «русский» и не «английский для специалистов по внешней торговле», — заметила она. — Особенно, если этот язык понимает техника.

Он помолчал секунду, потом осторожно:

— В руководстве по эксплуатации мы всё равно не будем писать «язык». Можно назвать это «режим табличных формул».

Он вспомнил свою первую книжку по BASIC для школьников. Тонкая, с зелёной обложкой, «Язык Бейсик для начинающих». Там автор осторожно объяснял, что это «средство составления алгоритмов решения задач». Слово «игра» в книге не встречалось ни разу, хотя половина класса использовала этот BASIC исключительно для «морского боя».

— В ТЗ, — продолжил Алексей, — можно ограничиться фразой: «Прибор обеспечивает формирование и хранение последовательностей табличных операций оператором».

Наталья потянулась к ГОСТу, полистала, что‑то ищет, потом кивнула.

— Это уже ближе к тексту, который не сгрызут на экспертизе, — сказала она. — «Формирование последовательностей» звучит скучно и безопасно.

Она записала справа: «оператор имеет возможность задавать и корректировать последовательность выполнения табличных операций с последующим их хранением в памяти прибора».

— Видите? — она повернула блокнот к нему. — Ни слова про «язык», ни про «программы». Но любой более‑менее толковый инженер поймёт, что это.

Алексей посмотрел на две колонки и не удержался от улыбки.

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

— Не обижайте спецификации, — серьёзно ответила Наталья. — В отличие от многих программ, они иногда работают десятилетиями.

* * *

Часов через два у них появилась своя маленькая «таблица истинности» между инженерной и ГОСТовской речью.

«Шина данных» превращалась в «систему унифицированных внутренних соединений прибора».

«Регистры общего назначения» — в «внутреннее оперативное поле для хранения промежуточных результатов».

«Стек» — в «устройство временного запоминания параметров при выполнении сложных табличных расчётов».

— А если я напишу «последовательность операций с возможностью возврата к предыдущему состоянию», — сказала Наталья, — вы будете довольны?

Алексей прикинул.

— Это почти стек, — признал он. — По смыслу.

— И никаких стеков в документе, — удовлетворённо подытожила она. — Секретный стек.

Где‑то к концу третьего часа они добрались до самого скользкого.

— «Адресуемое поле ячеек», — напомнила Наталья, касаясь ногтем этой строки. — Мне эта формулировка не нравится.

— Но без неё… — начал Алексей.

— Я понимаю, — перебила она. — Если нельзя указать, с какой именно ячейкой таблицы работать, ваш прибор превращается в очередной счётный аппарат с красивым корпусом.

Она наклонилась, задумчиво постучала ручкой по столу.

— Смотрите, если мы напишем «адресуемое поле ячеек», любой скучающий рецензент спросит: «А кто будет задавать эти адреса? С какой целью? Можно ли там что‑то не то посчитать?»

Она подняла на него взгляд. — Вопросы «можно ли там что‑то не то посчитать» нам с вами не нужны.

Алексей молча с этим согласился. В его времени к таким вопросам привыкали службы безопасности крупных корпораций. Здесь за них отвечал Первый отдел.

— Нам нужно так, — продолжила она. — Чтобы снаружи казалось: оператор только выбирает строки и столбцы, ничего особенного. А внутри вы можете работать с адресами сколько хотите.

Она сняла очки, протёрла их уголком платка, снова надела.

— Попробуем обойтись через «номера строк и граф», — сказала она. — В табличных документах это привычно.

— Вроде «оператор выбирает номер строки, номер графы»… — подхватил Алексей.

— … и прибор выполняет над соответствующим элементом таблицы указанную типовую операцию, — закончила она.

Она уже печатала, отстукивая фразу уверенно и быстро. — «…Прибор обеспечивает возможность обращения к любому элементу таблицы по его номеру строки и графы».

Алексей тихо хмыкнул.

— Это же и есть адресуемость, — сказал он. — Только вежливая.

— Адресуемость — внутри вашей схемы, — заметила Наталья. — Снаружи — у нас «нумерация строк».

Она задумалась, потом добавила ещё одну строчку: — «…включая возможность автоматического перехода к следующей или заданной строке в зависимости от результатов расчёта».

Пальцы Алексея словно рефлекторно дорисовали в воздухе: `IF SUM0 THEN GOTO NEXT`.

— «Автоматический переход к заданной строке в зависимости от результатов»… — повторил он. — Наталья Сергеевна, вы только что собственноручно легализовали условный переход.

— Я ничего не легализовала, — сухо сказала она. — Я всего лишь предусмотрела «удобства для оператора».

Она выдержала паузу. — Но да, если очень захотеть, на этом можно построить и то, что вы там себе придумали.

В её голосе прозвучало что‑то вроде лёгкого вызова.

— Вы точно понимаете, что делаете? — спросил он.

— Вы думаете, вы один тут умный? — обиделась она без злости. — Я десяток лет пишу ТЗ на приборы, которые «по документам» всё время делают что‑то скучное. А реально все знают, что делают они ещё пять интересных вещей.

Она постучала по бланку. — Вопрос только в том, как это написано. И кто за это отвечает.

— И кто за это отвечает, — эхом повторил он. — Я тут — новичок, вы — человек с репутацией.

— Поэтому я и выбираю слова, — сказала Наталья. — Так, чтобы если кто‑нибудь придёт с вопросами, я могла спокойно показать на ГОСТ и сказать: «Я всё сделала по образцу».

Она положила ладонь на брошюру «Типовая форма ТЗ», как на щит.

— А тех, кто будет использовать возможности прибора… — она пожала плечами. — Это уже не ко мне. Я отвечаю за бумагу.

* * *

К обеду у них уже был почти готов раздел «Основные функции».

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

— «Магнитной ленте бытового магнитофона» — это я смелая, — призналась Наталья, перечитывая вслух. — Но в типовом ТЗ по связи я уже видела такую формулировку. Значит, обкатано.

— С магистралями у нас не прошло, а с магнитофоном, может, пройдёт, — заметил Алексей. — Тем более, если это «резервный режим» и «для повышения надёжности хранения табличных данных».

— Я именно так и написала, — сказала она, подчёркивая абзац. — «…что повышает надёжность хранения и сокращает потери рабочего времени при возможных сбоях питания».

Она хмыкнула. — Одна эта фраза любит три разных начальника: энергетик, экономист и тот, кто отвечает за выполнение плана.

Алексей поймал себя на том, что чувствует почти профессиональную зависть. В его сорокапятилетней голове сидели десятки языков описания аппаратуры — от Verilog до SystemC, — но так изящно кодировать смысл в ГОСТ‑овские формулы он не умел.

«По сути, я сейчас пишу первый компилятор под „Сферу‑80“, — с некоторым уважением подумал он. — Только фронтенд у меня — Наталья Сергеевна».

* * *

После обеда они добили более скучные разделы: климат, питание, габариты.

— «Прибор должен сохранять работоспособность при кратковременных провалах напряжения питающей сети до…» — диктовал Алексей, глядя в свои заметки из общаги. — … ну, две‑три секунды.

— Две‑три секунды — это вы кому рассказываете? — отрезала Наталья. — Там на стенде кто‑нибудь утюг включит — и будет не провал, а натуральный обрыв на полминуты.

— Тогда пишите «кратковременных нарушениях», — предложил он. — Без числа. И добавьте «не приводящих к потере информации о состоянии табличных расчётов».

— «…а также к искажению ранее введённых данных», — по привычке усилила она формулировку.

Он кивнул. Это был маленький, но важный нюанс.

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

— Вы это откуда взяли? — спросила Наталья, печатая. — «Не приводящих к потере информации»… Вчера в критику на другое ТЗ писали, что это излишне. «Оператор должен дублировать записи в журнале».

— Оператор в жизни дублировать не будет, — сказал он. — Это я вам как бывший оператор говорю.

Он поймал её взгляд и чуть смягчил тон. — Это не только про удобство. Это про то, что люди перестанут проклинать прибор при каждом мигании света.

Наталья чуть смягчилась.

— Ладно, — сказала она. — Пусть будет ваша «не приводящая».

Она добавила: — Главное, чтобы энергетики потом не решили, что это их снимает с ответственности.

— Никого ни с чего не снимает, — успокоил он. — Просто даёт нам повод получить ещё пару конденсаторов и нормальный стабилизатор в смету.

Она коротко усмехнулась:

— Вот это уже речь инженера.

* * *

Ближе к вечеру комната опустела: кто‑то ушёл на почту, кто‑то — на курилку. «Маяк» перешёл с сводок о стройках на концерт симфонической музыки, и только строчки на листе медленно множились под стук клавиш.

Остались они двое да дежурная машинистка в дальнем углу.

Наталья вытащила бланк почти готового ТЗ из машинки, пробежалась по нему глазами, делая пометки цветным карандашом.

— Так, — сказала она. — Вот это спорное.

Она обвела две фразы.

Первая: «оператор имеет возможность задавать и корректировать последовательность выполнения табличных операций с последующим их хранением в памяти прибора».

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

— Если где‑то и споткнутся, то здесь, — честно сказала она. — Здесь слово «оператор» слишком активный, а «автоматический переход» слишком умный.

Алексей помолчал.

— Если мы это выкинем, — сказал он тихо, — у нас останется просто электронный арифмометр. Всё остальное мы потом будем проталкивать по кускам, через пояснительные записки, через изменения.

Он посмотрел на неё. — А сейчас у нас есть шанс за один заход заложить основу. Потом нас будут ругать за то, что мы «чуть сложнее сделали», но формально всё будет соответствовать ТЗ.

Он видел, как она взвешивает. Тут уже была не игра словами, а вполне реальный выбор: сколько риска она готова взять на свою аккуратную подпись.

— Я знаю, — сказал он, не дожидаясь ответа. — Если хотите, мы можем смягчить. Вместо «оператор имеет возможность» — «конструкция прибора допускает»…

— Не нужно, — перебила она неожиданно жёстко. — «Допускает» — это любимое слово тех, кто ни за что не отвечает.

Она чуть сжала губы. — Пусть будет «оператор имеет возможность». В конце концов, оператор у нас тоже не ребёнок. Доверят прибор — пусть имеют возможность.

— А «автоматический переход»? — осторожно напомнил он.

— Я уберу «автоматический», — сказала она после секунды. — Напишу «переход к заданной строке таблицы в зависимости от…»

Она чуть улыбнулась. — Логика останется та же. Просто слово «автоматический» действует на некоторых начальников, как красная тряпка.

Она аккуратно зачеркнула на машинописи одно слово и приписала сверху другое — привычным каллиграфическим почерком.

— Вот, — сказала Наталья. — Теперь живём чуть спокойнее. Но по сути у вас остался и «язык формул», и «условный переход».

Она посмотрела на него внимательно. — В общем, можно сказать, что я стала соавтором вашего хитрого ТЗ. Надеюсь, вы меня за это когда‑нибудь вспомните, а не только проклянете, когда придётся объясняться в министерстве.

Алексей почувствовал, как невидимое напряжение, натянутое между ними весь день, чуть ослабло.

— Вспомню, — сказал он серьёзно. — Обещаю.

Он позволил себе чуть мягче: — И проклинать не буду. Если кого и проклинать, так это тех, кто будет пытаться по этому ТЗ сделать ещё дешевле и хуже.

Она усмехнулась.

— Тогда мы с вами по одну сторону, — сказала Наталья. — Я тоже люблю, когда по моим ТЗ делают как задумано, а не как получилось.

Она аккуратно собрала листы ТЗ в стопку, выровняла по краю, надела на них обложку с скучным заголовком: «Техническое задание на разработку бытового табличного вычислительного прибора БВП‑1 (учебно‑демонстрационный комплекс)».

— Название, конечно, — она скривилась, — не «Сфера», но что поделать.

Она взглянула на него в упор. — Это вы там в своих тетрадках как хотите называйте. А у нас по документам — «учебно‑демонстрационный комплекс». Так спокойнее.

— Пусть так, — согласился Алексей. — Главное, что внутри.

* * *

Под вечер они вдвоём отнесли ТЗ к Седых — на подпись.

Виктор Петрович прочёл только первую страницу, пробежал диагональю по разделу «Назначение» и удовлетворённо кивнул, когда увидел слова «повышение производительности труда» и «учебно‑демонстрационный».

— Ну, неплохо, — сказал он. — Главное, чтобы там не было ничего такого…

Он помахал рукой неопределённо, явно имея в виду всё, что может вызвать вопросы у министерства или Первого отдела.

— Всё строго по типовой форме, — ровно ответила Наталья. — С учётом особенностей применяемой элементной базы.

Седых расплылся в облегчённой улыбке, поставил подпись почти не глядя, сверху захлопнул ТЗ ладонью, как крышку аппарата.

— Молодцы, что не затянули, — сказал он. — Завтра пошлю в министерство. А вы, Алексей Николаевич, готовьте уже свои…

Он поискал слово.

— Макеты, — подсказал Алексей.

— Вот, — с облегчением ухватился Седых. — Макеты. С макетами у нас разговор предметный.

Когда они вышли из кабинета, ТЗ с подписью лежало у Натальи в руках, как нечто хрупкое и тяжёлое одновременно.

В коридоре она остановилась, повернулась к нему.

— Учтите, — сказала она негромко. — Если через полгода кто‑то начнёт кричать, что ваш прибор «слишком умный», я буду честно показывать им ТЗ и говорить: «Вот, всё написано, вы сами согласовали».

Она подняла папку. — А вы к тому времени обязаны сделать так, чтобы он не только был «умным», но и работал. Чтобы за него было не стыдно.

— Это у нас по плану, — ответил Алексей. — Сначала — чтобы работал. Потом — чтобы был умным.

Он добавил после короткой паузы: — Спасибо, что вы тоже рискнули.

Наталья посмотрела на него чуть теплее, чем утром.

— Ну, мне тоже иногда хочется сделать что‑нибудь… — она поискала слово и всё‑таки выбрала сухое, — нестандартное.

Она коротко кивнула в сторону папки. — Идите уже к своим железкам. Завтра я вам дам один экземпляр, будете его у себя в КБ как икону держать.

— Будем как исходники хранить, — отозвался он.

Она не поняла, но улыбнулась.

* * *

Вечером, уже в комнате 317, он развернул тетрадь с надписью «Табличный вычислитель. Черновики» и аккуратно вписал на первой странице:

'ТЗ согласовано. 9 августа 1976 г. Основные тезисы:

— последовательности табличных операций, задаваемые оператором;

— переход к заданной строке в зависимости от результатов;

— хранение таблиц и методик на магнитофонной ленте;

— устойчивость к кратковременным нарушениям питания'.

Рядом, всё тем же карандашом, чуть мельче:

«Н. С. — соавтор языка ГОСТов для Сферы‑80».

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

И если завтра в Министерстве кто‑то лениво пробежит глазами по словам «табличные операции» и «секвенции», не уловив скрытого смысла, — значит, компилятор сработал правильно.

Оставалось только написать остальную часть — на канифоли, микросхемах и ночных прогонках в машинном зале.

Загрузка...