Записки парасистемного программиста - [8]
Этюд.
В некоторой системе подготовки данных за единицу данных принят документ (термин, понятный персоналу подготовки данных), который состоит из реквизитов. Первым реквизитом всегда идет номер документа, который может не указываться оператором подготовки данных. Система присвоит ему номер сама так, чтобы документ поместился на хранение вслед за последним из записанных в хранилище. Оператор подготовки данных не знает ни ОС, ни языка управления заданиями, ни даже того, что эти хранилища (их все называют "ячейками") — это наборы данных на устройствах прямого доступа. Вслед за номером документа идет реквизит — признак вычеркивания. Это буква "ы". Затем идут остальные реквизиты. Документы или исправления документов, относящиеся к разным "ячейкам", разделены специальным документом "бирка". Например, документы в потоке ввода системы могут выглядеть так:
>@@бирка а25н34е48
>::тетрадь:25 7
>::чернильница:45 5:ы:
>::карандаш:2
>::ручка:210:
>@@биркар34а56н37
>::чехова: ул:25:18:
Этот поток записей означает, что в одну ячейку будут добавлены в ее конец документы про тетрадь, карандаш и ручку, заменен документ с номером 7 и вычеркнут документ с номером 5. В другой же ячейке будет добавлен в ее конец еще один документ — информация про подписчика газеты. Мы видим, что оператору подготовки данных совсем не нужно знать утилиту IEBUPDTE и выполнять ее странные для непрограммиста требования о рассортированности запросов на исправление в порядке следования записей и т. п.
Кто не знает утилиты IEBPTPCH ОС ЕС? Вряд ли кому-нибудь из пользователей или системщиков, обслуживающих ос ЕС удалось без нее обойтись. Хуже всего приходится тем из них, кто встречается с ней реже, чем раз в две недели. Потому что, не смотря на всю скудность действий, которые она может выполнить, язык, при помощи которого приходится управлять этой программой, по своей красоте, сложности и многогранности, количеству подтекстов слегка смахивает на язык великого шекспира. Прежде всего, эта утилита пожелает узнать у вас, сколько разделов библиотечного набора данных вы хотите распечатать и сколько полей в строке распечатки вы захотите выделить. Hе дай вам бог забыть указать это с помощью операндов MAXNAME и MAXFLDS. Сама она пресчитать ваши разделы и поля не может, а если и вы ленитесь считать, то вы недостойны этой утилиты. Правда, если вы укажете эти величины большими, чем нужно, то так и быть, она до вас снизойдет. Зачем же нужно ей знать заранее такие подробности? Видимо, для того, чтобы сэкономить два десятка байт основной памяти. Впрочем, это только мое предположение, которое очень трудно проверить. Ос ЕС сообщает количество используемой оп с точностью до пары килобайт. Hо это еще не все. С этим еще можно было бы смириться. Совсем непонятно, зачем нужно указывать эти операнды, если требуется распечатать один раздел в виде одного поля на строке. Это самый типовой случай использования этой утилиты. Hо и это не все. Исходя из каких соображений имена этих операндов выбраны такими, а не MAXFIELD и MAXNMS, например? Hу почему в первом операнде английское слово FIELD сокращается с выпусканием гласных и берется в множественном числе, а в другом слово NAME не сокращается и берется в единственном числе? Только вчера я пользовался этой утилитой в последний раз после месячного перерыва. С третьей попытки мне удалось, наконец, получить от нее то, что я хотел (а ведь я знал уже, с чем имею дело), а теперь я уже не помню, правильно ли я пишу операнды MAXGROUPS и MAXLINE. Может, надо MAXGRP и MAXLINES? Разработчиков этой утилиты в ОС ЕС можно еще понять. Им совсем не обязательно было знать какие-нибудь языки. А программисту фирмы IBM нечего сказать в свое оправдание. Я думаю, что эту утилиту делал двоюродный племянник коммерческого директора этой фирмы. Он, впрочем, успел и еще кое что подпортить. Наверное, это он придумал одно и то же действие по управлению данными в разных случаях запрашивать то как UNCATLG, то как UNCTLG. Возможно, это он предложил оператору при запуске программы системного вывода классы задавать так: "ABC", при модификации этой же программы классы задавать так: "CLASS=ABC", а при задерживании очередей классы задавать так: "Q=(A,B,C)". А вот утилита IEBGENER ОС ЕС выполняет свои самые типовые действия вообще без всяких управляющих операторов. И только, если вам хочется чего-нибудь экзотического, то вам придется посмотреть описание этой утилиты. Принцип умолчания вреден только в языках программирования и лишь в том случае, когда нужно сделать надежную программу. А если нужно всего один раз получить легко проверяемый на корректность результат? Когда мы садимся в лифт, то мы нажимаем кнопку нужного нам этажа. Можно даже представить себе лифт, где два одинаковых ряда кнопок с одними и теми же номерами этажей, и лифт тронется, лишь если нажаты обе кнопки с одним и тем же номером. Hо очень трудно представить себе лифт, в котором стоит дисплей, и мы должны набрать на его клавиатуре фразу на французском языке, количество гласных букв в которой, деленное на тринадцать, даст в остатке номер нашего этажа. Вряд ли нас обрадует такой лифт, даже если в нем на полке будет стоять французско-русский словарь. Так почему же мы так часто делаем подобные программные системы?
Отечественная война 1812 года – одна из самых славных страниц в истории Донского казачества. Вклад казаков в победу над Наполеоном трудно переоценить. По признанию М.И. Кутузова, их подвиги «были главнейшею причиною к истреблению неприятеля». Казачьи полки отличились в первых же арьергардных боях, прикрывая отступление русской армии. Фланговый рейд атамана Платова помешал Бонапарту ввести в бой гвардию, что в конечном счете предопределило исход Бородинского сражения. Летучие казачьи отряды наводили ужас на французов во время их бегства из Москвы.
В монографии освещаются ключевые моменты социально-политического развития Пскова XI–XIV вв. в контексте его взаимоотношений с Новгородской республикой. В первой части исследования автор рассматривает историю псковского летописания и реконструирует начальный псковский свод 50-х годов XIV в., в во второй и третьей частях на основании изученной источниковой базы анализирует социально-политические процессы в средневековом Пскове. По многим спорным и малоизученным вопросам Северо-Западной Руси предложена оригинальная трактовка фактов и событий.
Книга для чтения стройно, в меру детально, увлекательно освещает историю возникновения, развития, расцвета и падения Ромейского царства — Византийской империи, историю византийской Церкви, культуры и искусства, экономику, повседневную жизнь и менталитет византийцев. Разделы первых двух частей книги сопровождаются заданиями для самостоятельной работы, самообучения и подборкой письменных источников, позволяющих читателям изучать факты и развивать навыки самостоятельного критического осмысления прочитанного.
"Предлагаемый вниманию читателей очерк имеет целью представить в связной форме свод важнейших данных по истории Крыма в последовательности событий от того далекого начала, с какого идут исторические свидетельства о жизни этой части нашего великого отечества. Свет истории озарил этот край на целое тысячелетие раньше, чем забрезжили его первые лучи для древнейших центров нашей государственности. Связь Крыма с античным миром и великой эллинской культурой составляет особенную прелесть истории этой земли и своим последствием имеет нахождение в его почве неисчерпаемых археологических богатств, разработка которых является важной задачей русской науки.
Автор монографии — член-корреспондент АН СССР, заслуженный деятель науки РСФСР. В книге рассказывается о главных событиях и фактах японской истории второй половины XVI века, имевших значение переломных для этой страны. Автор прослеживает основные этапы жизни и деятельности правителя и выдающегося полководца средневековой Японии Тоётоми Хидэёси, анализирует сложный и противоречивый характер этой незаурядной личности, его взаимоотношения с окружающими, причины его побед и поражений. Книга повествует о феодальных войнах и народных движениях, рисует политические портреты крупнейших исторических личностей той эпохи, описывает нравы и обычаи японцев того времени.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.