Пришлось обращаться за помощью к Анатолию Ивановичу и осваивать работу с перфоратором. И то и другое увенчалось успехом, машинное время выделялось в достаточном количестве, правда по ночам, а на перфораторе меньше чем за неделю он научился набивать программы в максимальном темпе, который тот допускал. Отладив несколько не очень больших программ, Витя приступил к решению собственной задачи.
Служебные слова для обозначения границ блока begin…end, названия операторов ветвления, цикла, описания типов и прочего решил по аналогии с Алголом оставить английские, ввёл именованные константы для обозначения химических элементов и некоторых неизменяемых величин и начал составлять библиотеку процедур и функций, например, одна из стандартных функций должна была создавать углеродный шестиугольник.
Хорошо, что не нужно разрабатывать транслятор, который преобразовывает операторы языка в машинный код, ибо в этом случае решение стоящей задачи откладывалось бы на неопределённое будущее. Дал создаваемому языку название из двух букв ОЗ (Описание Заданий) и столкнулся с проблемой отладки. Со своим “внутренним миром” Витя общается устно, тот в свою очередь с Витей общается текстом или графикой.
Допустим можно прочесть вслух полное описание созданного языка, что, кстати, само по себе потребует немало времени, а как потом отлаживать “программы”? Например, хочу создать цепочку углеродных шестиугольников длиной 1 см, как действовать? Взять в руки кусок графита, прочитать написанную для выполнения этой задачи программу, запустить рецепт, а потом смотреть структурой вещества, что получилось? Непонятно, но в любом случае нужно ехать домой и неплохо бы на мотоцикле, который ещё нужно купить и, между прочим, сдать на права. Всё, делаю перерыв, и занимаюсь мотоциклом, к тому же и на улице потеплело.
Повезло дважды, в одном из магазинов стояли на продажу “Ижи” и нашлась автошкола, в которой через четыре дня будет сдача экзаменов. В целом всё прошло успешно, лишь на сдаче вождения чуть не произошёл казус: сдавал на чужом “Восходе” и не учёл, что у него, в отличие от “Ижа”, ограничен поворот руля и лишь чудом удержал равновесие и не коснулся ногами земли.
Предупредил старосту, что в ближайшую субботу пропустит занятия и в пятницу уехал домой на мотоцикле, решив плотно заняться освоением нового рецепта. Поскольку техника находилась в периоде обкатки, Витя не развивал скорость выше 50 км/час на верхней передаче, по пути делал остановки. Приехал с триумфом на новом “Иж-планета-2” синего цвета. Раздал подарки, выслушал Вову, который сообщил, что он умеет считать до 100, пообещал Толе летом дать прокатиться на мотоцикле и решил завтра с утра заняться языком заданий.
После завтрака Витя попросил его не отвлекать, так как будет занят очень важным делом. Приготовил себе большую чашку с чаем и дал команду: Показать характеристики:
Имя - Витя Белов
Раса - Человек
Уровень - 17
Класс - Ученик
Характеристики
Сила - 20
Ловкость - 20
Скорость - 20
Телосложение - 20
Выносливость - 21
Интеллект - 26
Восприятие - 22
Единиц жизни - 400
Навыки и умения
Стрелок 4 уровня
Ориентирование 3 уровня
Артефактор 3 уровня
Целитель 4 уровня
И начал зачитывать ранее аккуратно переписанный начисто текст языка описания заданий. Поскольку никакой реакции на начало чтения не было, продолжал читать до победного конца. Хлебнул сладкий чай и увидел, как сменился текст перед глазами:
Запустить отладчик?
- Да, запустить. Заодно и узнаю, что это такое.
Выбери форму тестового объекта: Шар, Параллелепипед, Цилиндр, Конус, Пирамида, Тор, Другое
- Параллелепипед.
Укажи размеры в миллиметрах: Длину Ширину Высоту
- 50 30 10
Вводи описание структуры и команду Старт
Витя зачитал текст заранее заготовленного описания по имени Цепь6, строящего цепочку из миллиона углеродных шестиугольников, расположенных вертикально начиная от нижней грани и дал команду Старт!
Перед глазами появился прозрачный прямоугольный параллелепипед с маленькой чёрточкой, направленной из центра нижней грани вертикально вверх. Одной из целей Цепь6 было определение размера ребра углеродного шестиугольника, для этого нужно, чтобы цепочка протянулась точно на всю десятимиллиметровую высоту, миллион занял лишь малую часть этой высоты.
Увеличив в процедуре Цепь6 число элементов до десяти миллионов, снова зачитал её и запустил. Чёрточка в параллелепипеде стала занимать примерно четверть высоты, получается, что 10 мм это примерно 40 000 000 (сорок миллионов) шестиугольников. Действуя аналогично, в конце концов, получил точное их число, помещающееся в 10 мм: 41 535 990, отсюда вычислил длину ребра около 0,139 нанометра.
Несмотря на сильнейшее воодушевление - у него получилось, отметил и недостаток отладчика, приходилось после каждого изменения зачитывать заново текст процедуры. Несмотря на это, отладчик был гораздо удобнее системы отладки программ в вычислительном центре института, где приходилось после каждой ошибки снова работать с перфоратором и заменять одну или несколько перфокарт либо перфоленту. К тому же здесь сразу был виден результат.