Приложение A. Сеть

Мастерская группа игр «Распад (Дорога к Богу)» и «Схрон»
представляет игру

Облава


Может ли господь бог написать программу, которую он не сможет отладить?

Безошибочный кодировщик, вZYск SYSтем Lав. МемвеR, мIсн.

п. 0. Описание языка программирования низкого уровня "Л2":

п. 0.1. Основы синтаксиса

Оператор начинается с ключа-диеза (#) и является последовательностью цифр (имеет смысл значность оператора). Цифровой оператор может содержать аргумент. Нецифровые операторы передаются синтаксическими символами.


п. 0.2. Синтаксические операторы

+ оператор сложения
- оператор вычитания
/ оператор деления
\ оператор деления нацело
* оператор умножения
= оператор присваивания
( разделительный оператор
)
--- оператор комментирования строки
` оператор аргумента
'text' маркер текста (парный)

п. 0.2. Диезные операторы

п. 0.2.1. Константы (односимвольные операторы)
#1 TRUE (истина)
#0 FALSE (ложь)
#2…#9 случайная константа, которую можно задать в пределах программы/подпрограммы

п. 0.2.2. Предлоги (двухсимвольные операторы)
#01 FOR (в течение)
#02 AND (и)
#07 OR (или)
#10 THEN (тогда)
#11 TO (то)
#17 IF (если)
#44 WHILE (пока)

п. 0.2.3. Маркеры (трёхсимвольные операторы)

#000…#099 ACTION MARKER (маркер действия)
#100…#999 STRING MARKER (маркер строки)
Маркер с аргументом
#100`1 начало строки 100
#100`0 конец строки 100
#100`10 первый символ строки 100
#100`00 последний символ строки 100
#100`10`n первые n символов строки 100
#100`00`n последние n символов строки 100
#100`11 первый символ позиции 100
#100`01 последний символ позиции 100
#100`11`n первые n символов позиции 100
#100`01`n первые n символов позиции 100

«Строка 100»: строка, имеющая уникальный номер 100. Обычно - первая строка. «Позиция 100»: 100-я строка по счёту. Аргумент позиции в основном используется для возвращения номера строки.


п. 0.2.4. Системные операторы (четырёхсимвольные операторы)
#0804 RUN PROGRAM FILE (запустить внешнюю программу)
#0548`number CALL SUB PROGRAM`number (вызвать подпрограмму)
#0548`number`url CALL SUB PROGRAM`number`url (вызвать подпрограмму, находящуюся по адресу url)
#0811`name`url OPEN FILE`name`url (открыть файл с именем «name» по адресу url)
#1010`number`x`y`z CREATE MASSIVE (создать массив с именем «number» и количеством элементов матрицы x, y, z )
#1011`number`x`y CREATE DATA BASE (создать базу данных с именем «number» и количеством элементов матрицы x, y)
#1111`number`x CREATE LIST (создать список с именем «number» и количеством элементов списка x)
#1112`number SUB PROGRAM`number (объявление подпрограммы с именем «number»)
#2199 TIME (HOUR/MIN/SEC) (время)
#2200 DATE (DAY/MONTH/YEAR) (дата)
#3105`name`url CLOSE FILE`name`url (закрыть файл с именем «name» по адресу url)
#3534`name`url CREATE`name`url (создать файл с именем «name» по адресу url)
#5151`name`url SAVE FILE`name`url (сохранить файл с именем «name» по адресу url)
#5152`name`url SAVE AS FILE`name`url (сохранить файл под именем «name» по адресу url)
#6134`name`url CLEAR FILE`name`url (удалить содержимое файла с именем «name» по адресу url)
#6144`name`url DELETE FILE`name`url (удалить файл с именем «name» по адресу url)

п. 0.2.5. Файловые операторы (пятисимвольные операторы)
#11400`#marker FIND`#marker (найти маркер)
#11400`'text' FIND`'text' (найти 'текст')
#11500`#marker GOTO`#marker (перейти к маркеру)
#44444 BR (перейти на следующую строку)
#81114`'text' DELETE`'text' (удалить 'текст')
#81114`#m`1 DELETE`#m`1 (удалить строку m)
#81114`#m`10 DELETE`#m`10 (удалить первый символ строки m)
#81114`#m`00 DELETE`#m`00 (удалить последний символ строки m)
#81114`#m`10`n DELETE`#m`10`n (удалить первые n символов строки m)
#81114`#m`00`n DELETE`#m`00`n (удалить последние n символов строки m)
#81114`#m`11 DELETE`#m`11 (удалить строку с позицией m)
#81114`#m`01 DELETE`#m`01 (удалить последний символ позиции m)
#81114`#m`11`n DELETE`#m`11`n (удалить первые n символов позиции m)
#81114`#m`01`n DELETE`#m`01`n (удалить последние n символов позиции m)
#87114`'text' WRITE`'text' (записать 'text')
#87145`'text' WRITE REPLACE`'text' (записать 'text', заменяя исходный текст целиком)

п. 0.3. Конструкции

#306080`77114 объявление языка программирования
#600674740 начало программы
#632063206 конец программы
#45101010='specificator' запись спецификатора программы (выполняется компилятором - обычно на строке 102)
#600605480 начало подпрограммы
#632005480 конец подпрограммы
#01…#10 #49 FOR…TO NEXT (цикл for…to)
#40…#70 DO…LOOP (цикл do…loop)
#40…#70 #44`action DO…LOOP WHILE`action (цикл do…loop while)
#17…#11(…#42)(…#43)…#77 IF…THEN(…ELSE)(…ELSEIF)…END IF (цикл if…end if)

п. 0.4. Общие принципы написания программы

Каждая строка маркируется (трёхсимвольный диезный маркер). Маркер действия не является маркером строки, поэтому выставляется отдельно. Первый маркер строки программы может быть любым, но обычно это маркер #100 и далее по строкам по порядку: #101, #102, #103 и т. д. Таким образом, листинг программы не может превышать 899 строк (одна строка 128 символов); но частично можно обойти этот запрет вызовом внешних подпрограмм и внешних исполняемых программ.

Программа может обращаться к подпрограммам (sub program) и функциям (function) через оператор #0548. Если это внешние подпрограммы, то указывается сетевой адрес. Если это внутренние подпрограммы, то текст их должен быть описан внутри самой программы после основного теста программы; оператор объявления подпрограммы #1112.

Если программа обращается к файлам, сетевым базам данных, внешним программам - обязательно прописывается их адрес. Если программа изменяет файлы и сетевые базы данных, то обязательно должна быть функция сохранения изменённых данных.

В первой строке программы объявляется язык программирования Л2: #306080`77114. Вторая оставляется свободной, так как именно сюда компилятор впишет уникальный спецификатор программы. Например, вторая строка программы может выглядеть так: #45101010='ледоруб Att. 2'. И только с третьей строки начинается непосредственно код программы.

Любой текст в программе, будь то название или адрес, пишется в одинарных кавычках ''. Имя массива, базы банных, списка, файла, подпрограммы может быть как символьным, так и числовым.

Пустая строка, если она не маркирована, компилятором не воспринимается, и он сообщает об ошибке.


п. 0.5. Пример программы

#100 #306080`77114
#101 #45101010=''
#102 #1 ---константа=1
#103 #0811`'711\База4\1062.dxlp' ---открыть файл 1062.dxlp
#104 #17 #622`10='#' #11 #3105`'711\База4\1062.dxlp'
#105 ---если первый символ строки 622 диез, то закрыть файл
#106 #42 #11500`#622 #87145='#' #0
#107 ---иначе пишем первый символ строки 622 как диез
#108 ---константа=0
#109 #3534`'711\Результат\результат.dat' ----создаём файл
#110 #17 #1 #11 #87144`'да'
#111 ---если константа=1, пишем да
#112 #42 #87144`'нет' ---иначе пишем нет
#113 #77 ---конец условного цикла
#114 #5151`'711\Результат\результат.dat' ---сохраняем файл
#115 #3105`'711\Результат\результат.dat' ---закрываем файл
#116 #17 #1 #11 #3105`'711\База4\1062.dxlp'
#117 ---если константа=1 закрываем файл 1062.dxlp
#118 #42 #5151`'711\База4\1062.dxlp' ---иначе сохраняем
#119 #3105`'711\База4\1062.dxlp' ---закрываем файл 1062.dxlp
#120 #77 ---конец условного цикла
#121 #632063206

Та же программа без комментариев выглядит вот так:

#100 #306080`77114
#101 #45101010=''
#102 #1
#103 #0811`'711\База4\1062.dxlp'
#104 #17 #622`10='#' #11 #3105`'711\База4\1062.dxlp'
#105 #42 #11500`#622 #87145='#' #0
#106 #3534`'711\Результат\результат.dat'
#107 #17 #1 #11 #87144`'да'
#108 #42 #87144`'нет'
#109 #77
#110 #5151`'711\Результат\результат.dat'
#111 #3105`'711\Результат\результат.dat'
#112 #17 #1 #11 #3105`'711\База4\1062.dxlp'
#113 #42 #5151`'711\База4\1062.dxlp'
#114 #3105`'711\База4\1062.dxlp'
#115 #77
#116 #632063206

п. 0.6. Шаблоны

п. 0.6.1. Шаблон программы
#100 #306080`77114
#101 #45101010=''
#102 ---текст программы
...
#999 #632063206

п. 0.6.2. Шаблон подпрограммы в тексте программы
#100 #306080`77114
#101 #45101010=''
#102 ---текст программы
...
#800 #600605480
#801 #1112`number ---объявление подпрограммы 'number'
#802 ---текст подпрограммы
...
#998 #632005480
#999 #632063206

п. 1. Общие принципы программирования:

п. 1.1. Техническое задание

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

«Если что-нибудь можно сделать двумя способами, не пожалейте усилий и придумайте третий».

Многие западные программисты утверждают, что прежде чем начинать писать программу, необходимо время на обдумывание алгоритма, а некоторые даже призывают вникнуть в суть задачи, которую предстоит решать. Категорически не следует интересоваться постановкой задачи до момента получения объектного модуля программы. Помните, что программирование - это искусство, поэтому любые лишние знания только ограничивают вашу фантазию. Начинайте писать текст программы задолго до того, как вам сформулируют техническое задание, и вы получите прекрасную возможность сделать жизнь вашего руководителя/заказчика (и свою) гораздо разнообразнее и интереснее (например, в момент получения ТЗ вы можете возмутиться: «Представляете, сколько теперь придется переделывать?!»).

Никогда не составляйте заранее блок-схему программы. Во-первых, это проще и быстрее сделать, когда программа уже написана, во-вторых, неосторожно оставленная на столе блок-схема даст вашим врагам и завистникам возможность понять, что вы собираетесь делать. Помните, что никто кроме вас не должен разбираться в вашей программе. И если вы никак не можете избавиться от дурной привычки рисовать блок-схемы, то зарубите себе на носу:
Чем больше структура программы соответствует ее логике, тем меньше вы стоите как программист.


п. 1.2. Стиль

Этому модному словечку многие западные адепты и апологеты придают особый, чуть ли не мистический смысл. Безусловно, каждый программист или, там, композитор имеет право писать в своей манере, однако, учитывая объёмы программных разработок, необходимо считаться с реальностью. Как и всё остальное, программирование должно быть экономным!

Тратить до 50% перфокарт и объёма листинга на комментарии, пробелы, пустые операторы, звездочки и другие украшательства - совершенно недопустимая расточительность. Пишите со 102-ой по 999-ую позиции, всемерно избегая пробелов. Если комментария никак не избежать, стремитесь писать его как можно конкретнее.

При внимательном рассмотрении легко обнаруживается, что буржуазные авторы книг рассуждая о предмете, который они называют «структурным программированием», тонут в собственных противоречиях. Например, Д. Майерс, стр. 63: «Скромные по целям работающие программы лучше неотлаженных грандиозных проектов», а на стр. 58: «Если незначительное добавление сделает вашу программу пригодной для другого случая, никогда не пренебрегайте этим». Можно согласиться с последним утверждением, поскольку умелое его применение позволит вам затянуть разработку программы на любой мыслимый срок.

Более того, тот же автор через несколько страниц, вспоминает пресловутый принцип к ISS (кеер Iт SIмрLе, SтUрID - будь проще, дурачок!). Представляете, в один прекрасный день руководитель заявляет вам: «Что-то у вас очень уж просто все получается!»

Эти структурно-экстремистские тенденции, в конце концов, приводят к полному вырождению программирования как творческой деятельности. Предельная степень деградации порождает методы типа ашкрофта-манны [Э. Йодан], сводящие деятельность программиста к работе Ч. Чаплина на конвейере в к/ф «Новые времена».


п. 1.3. Отладка

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


п. 1.4. Эксплуатация

Когда заканчивается отладка, начинается эксплуатация! Ни один уважающий себя программист не допустит, чтобы его любимое чадо, плод его многолетних трудов и страданий эксплуатировали какие-то посторонние люди.

Несколько слов о тестировании. Никто не знает, в чем именно заключается тестирование, что является конечной целью и какие результаты следует получить. В методе «свн» принято считать тестирование законченным, если выполнение завершается с кодом возврата 0000, даже если исходные данные различаются хотя бы одним числом (или всеми - если вы максималист).

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


п. 2. Сеть:

Сеть имеет сложную внутреннюю структуру. Существуют служебные и пользовательские уровни. Выход на пользовательский уровень - через виртуальный шлем в любом игровом центре. Выход на служебные уровни - только через профессиональный разъём (модели 1Ц29, 1Ч29, 2Ц28, 1ЦЦ1).


п. 2.1. Структура сети

Нижний уровень - матрица, байтовая информация (подразумевается исходная кодировка на основе двоичного кода - 16-ричная, а также менее распространённых кодировок 8-ричной, 64-ричной, и 10-ричной.) Манипуляции в этом слое осуществляются внесением изменений непосредственно в исходный код. Ситуация осложняется тем, что для большей части исходного кода требуется декомпиляция и дешифровка.

Средний уровень - объектный слой. Манипуляции в этом слое упрощены благодаря объектному интерфейсу. Это основной рабочий слой. Незаконные (в основном) манипуляции в этом слое осуществляются программами-взломщиками.

Служебный уровень - оперативный слой. Своего рода смесь матрицы и объектного слоя, в который временно загружаются куски кода и объекты.

Верхний уровень - пользовательский слой. Слой вывода результатов пользовательских программ. Используется для пользовательской работы с данными, а также для размещения интерактивных виртуальных игр.


п. 2.2. Службы сети

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

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


п. 2.3. Программы

Все программы так или иначе отображаются в объектном слое.

Интересующие БКФ-овцев программы подразделяются на классы:

Активные программы засекаются немедленно, в момент активации, и немедленно выполняют свою задачу - зачастую грубо и напролом (всё зависит от поставленного ТЗ и способностей разработчика).

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


п. 2.4. Последствия

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

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

Опасность для БКФ-овца состоит в том, что есть возможность потери его сетевого оборудования (имплантанты) различными способами и, шанс минимальный, но такая возможность тоже есть, возможность полной потери всех данных мозга БКФ-овца (идиот? это ещё мягко сказано! - овощ).


п. 3. "Железо":

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

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

Сетевой разъём стандартен, все его версии унифицированы, существуют модификации 1Ц29, 1Ч29, 2Ц28, 1ЦЦ1.

Программные сопроцессоры серии ТР-Ф выпускаются с 1-й (ТР01Ф) по 17-ю (ТР17Ф) модели, все они разработаны под разные функции, имеют разные характеристики и обладают разными возможностями. Программный сопроцессор ТР17Ф только разработан, его характеристики и функции неизвестны. В открытой продаже имеются устаревшие образцы пятилетней-десятилетней давности - до 12-й модели (эту модель достать сложно). Модели, начиная с ТР13Ф, стоят на вооружении подразделений БКФ МО СССР.

Существуют игровые пользовательские сопроцессоры, улучшающие характеристики персонажа в игровой ВР. Игровые пользовательские сопроцессоры серии Х-ЦФ выпус-каются с 1-й (Х01ЦФ) по 94-ю (Х94ЦФ) модели.

Существуют боевые сопроцессоры (серии и модели неизвестны). Все данные по ним закрыты. Стоят на вооружении спецподразделений БКФ МО СССР.



Адрес для связи с мастерами: spm111@yandex.ru.

Мастера:
# Захаров Максим (т. (0872) 30-85-74) - мертвятник и новые роли, финансовая экономика, игровое взаимодействие, игровая ВР.
# Стёпин Илья (т. (0872) 30-83-34) - мир, роли и сюжет, ВР (+ бюрократия), игровое взаимодействие.
# Муханов Сергей (т. (0872) 26-38-64) - медицина и имплантанты, техника, игровое и боевое взаимодействие.


Hosted by uCoz