Отлично, что и требовалось доказать! Посмотрим, что нужно. С иридием нужно обращаться к Анатолию Ивановичу, не слышал, чтобы он продавался в магазине. С теорией алгоритмов проблем не должно быть, хотя этот предмет на первом курсе не давали, и Витя имеет лишь самое общее представление, что такое алгоритм.
Со вторым пунктом немножко сложнее. Допустим, я хочу сдвинуть какую-нибудь линию сетчатой структуры и записываю команду — сдвинуть линию влево. Сразу возникает ряд вопросов: какую линию, выходит надо их все пронумеровать? Насколько сдвинуть, в каких единицах измерения? Всю линию или её часть, параллельно или дугой?
Попробуем что-нибудь попроще, например, создать углеродную трубку заданной длины из шестиугольников. Во-первых, нужно указать, что она состоит из шестиугольников, а сами шестиугольники нужно описывать? Наверное, нужно, ведь они бывают не только правильные, кстати, не забыть из каких атомов. Во-вторых, нужно задать диаметр трубки и форму, видимо, тоже, ведь она может быть и сплющенной. В-третьих, указать где расположена, то есть координаты начала и конца. В-четвёртых, у трубки, скорее всего, должны быть какие-нибудь наконечники. Думаю, что есть ещё и в-пятых, в-шестых и так далее.
Ё-моё, и это простейшая штука. Витя только сейчас осознал масштаб проблемы и обратил внимание на соседа Колю, который уже целую минуту смотрел на находящегося в прострации одногруппника.
— Привет.
— Привет, я зашёл, а ты сидишь, смотришь и меня не замечаешь, подумал, что научился полезному делу, спать сидя и с открытыми глазами.
— Нет, просто крепко задумался.
— Хорошо, что я тебя застал, тут мужик со станции приходил, у них наплыв вагонов, приглашал подработать сегодня вечером, как ты смотришь на это дело? — Коля был уверен, что задаёт вопрос для проформы, его сосед по комнате никогда от работы не отказывался.
— Хорошо, пойдём, деньги мне не помешают.
— Пойду ребят предупрежу, что от нашей комнаты двое будет, — Коля не стал спрашивать, зачем ему столько денег, так как был в курсе предстоящей покупки мотоцикла.
Разгрузка прошла штатно, денег на планируемую покупку хватало и Витя решил со следующей недели начать посещать магазины спорттоваров. С местом стоянки для будущей техники в Москве он заранее договорился с Ефремовым.
Со следующего дня занялся выполнением требований для нового рецепта, теория алгоритмов никаких проблем не вызвала, совсем другое дело второе требование — по сути нужно разработать собственный специализированный язык программирования. Для начала решил изучить какой-нибудь из существующих и потренироваться в написании и отладке программ, тем более, что в этом был и самостоятельный смысл.
Выбор оказался не очень велик, программисты использовали в основном два языка высокого уровня — Фортран и Алгол и программирование в машинных кодах. Выбрал Алгол, как более структурированный, для практики требовалось машинное время в вычислительном центре.
Пришлось обращаться за помощью к Анатолию Ивановичу и осваивать работу с перфоратором. И то и другое увенчалось успехом, машинное время выделялось в достаточном количестве, правда по ночам, а на перфораторе меньше чем за неделю он научился набивать программы в максимальном темпе, который тот допускал. Отладив несколько не очень больших программ, Витя приступил к решению собственной задачи.
Служебные слова для обозначения границ блока begin…end, названия операторов ветвления, цикла, описания типов и прочего решил по аналогии с Алголом оставить английские, ввёл именованные константы для обозначения химических элементов и некоторых неизменяемых величин и начал составлять библиотеку процедур и функций, например, одна из стандартных функций должна была создавать углеродный шестиугольник.
Хорошо, что не нужно разрабатывать транслятор, который преобразовывает операторы языка в машинный код, ибо в этом случае решение стоящей задачи откладывалось бы на неопределённое будущее. Дал создаваемому языку название из двух букв ОЗ (Описание Заданий) и столкнулся с проблемой отладки. Со своим “внутренним миром” Витя общается устно, тот в свою очередь с Витей общается текстом или графикой.
Допустим можно прочесть вслух полное описание созданного языка, что, кстати, само по себе потребует немало времени, а как потом отлаживать “программы”? Например, хочу создать цепочку углеродных шестиугольников длиной 1 см, как действовать? Взять в руки кусок графита, прочитать написанную для выполнения этой задачи программу, запустить рецепт, а потом смотреть структурой вещества, что получилось? Непонятно, но в любом случае нужно ехать домой и неплохо бы на мотоцикле, который ещё нужно купить и, между прочим, сдать на права. Всё, делаю перерыв, и занимаюсь мотоциклом, к тому же и на улице потеплело.