Выбрать главу

Ночь — она звала меня. И Джона вместе со мной. Справились ли мы с задуманным к утру? Решительное нет. Я, может быть, благословлен Омниссией и вообще инженер, но если бы подобные в чем-то революционные штуки писались за одну ночь, то их бы уже кто-нибудь создал. Нельзя просто так взять и написать парсер до рассвета.

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

Джон реально умный парень, быстро понял мою идею и, притащив из дома свой собственный Эппл 2, начал помогать: сначала заполнять таблицу со стоимостью действий в виде структуры на Паскале, а затем еще и отдельные процедуры писать.

Именно Паскаль я выбрал в качестве инструмента для реализации идеи. Во-первых, идеальный компромисс между быстродействием и легкостью кодинга. Во-вторых — удобный доступ к файлам. Читаем листинг построчно, выделяем ключевые слова, оцениваем их стоимость. Материмся на ветвлениях, которые стоят разное число действий, если условие выполнилось или нет.

У нас ушли две недели практически безостановочной разработки с редкими перерывами на сон и еду. Есть такая шутка, что если один программист напишет программу за неделю, то два — за две! Не наш случай. Помощь Джона на самом деле бесценной оказалась, главным образом за счет досконального знания ассемблера под процессоры семейства 6502. Я, со своей стороны, вкладывался знанием приемов командной разработки и общим пониманием принципов устройства линтеров. Мои навыки из будущего и его из прошлого, которое для меня настоящее, отлично друг друга дополнили.

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

Банальный копипаст «выделить-скопировать-вставить» в эпоху ретро-компьютеров выглядит, как тот еще цирк с конями. Нельзя просто так взять, открыть файл, скопировать кусок текста и вставить в другой файл. Не умеют так редакторы, в том числе самый продвинутый из имеющихся, включенный в среду UCSD Pascal.

Тут Скопировать/Вставить даже внутри файла нельзя! И это при том, что у меня есть древняя привычка копипаcтитть ключевые слова, включая банальный PRINT. Каменный век предлагает лишь Вырезать/Вставить. В чем здесь логика — я не выкупил. Так что и горячие клавиши для работы с текстом я тоже создам и в обиход введу. Причем сразу угодные богу-машине Ctrl-C и Ctrl-V, а не Ctrl-Ins и Shift-Ins, привычные всяким староверам. Если успею себе честь присвоить раньше Стива Джобса. Всегда есть какой-то Стив, который вводит инновации быстрее тебя!

Но система контроля версий и совместного написания кода станет одним из первых нововведений в офисе Каналья Геймс, когда я развернусь в Эль-Серрито. На полноценный версионник по типу Гит возможностей железа не хватит. А вот что-то похожее на SVN почему бы и не изобразить. И мне ведь не обязательно всё делать в одно лицо — найму разрабов.

В случае с Паскалем мы пришли к самому простому решению: разделению зон ответственности по файлам. Джон писал модуль JH.PAS, я — СС.PAS и периодически передавали друг дружке дискету со стола на стол.

И я бы даже не сказал, что это было мучительно, хотя и тяжело физически света белого не видеть. Всё компенсировал чистый кайф от понимания того, что создаешь нечто особенное, а уж когда скрипт заработал и четко раскидал нам тайминги, а затем и подсветил проблемы, где мы не укладываемся — вообще песня. Мы с Джоном аж пятюню друг другу отбили, когда поняли, что готово. Крутой он кодер, гениальный, почище Синклера. Может быть, мне его схантить, раз Кен у меня мистера Лоу увёл?

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

Джона у меня Кен отобрал и еще около двух недель ушли уже у меня одного на доводку и тестирование созданного при помощи нового инструмента прототипа. Он выглядел откровенно неказистым, примитивным, монохромным, но работал безукоризненно — плавно и без мерцания. А геймплей — тот самый. Никогда бы не подумал, что найду повод для гордости в написании тетриса. А вон оно как. Кажется, я под конец уже начал видеть Матрицу. Смотрю в экран и вместо падающего L-блока вижу такты и тайминги. Я избранный и нет никакой ложки!