Электронная библиотека

Хакер


Хакер

Кризис жанра

Xakep, номер #009, стр. 009-068-2


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

Ладно, а к чему я все это рассказываю? Да к тому, что у работавших над спектрумовской версией было жесткое ограничение по объему, и они его блестяще обошли, выбросив повторяющиеся места и применив множество хитрых приемов (далеко не все эти исключения привели к появлению недокументированных возможностей, как в приведенном примере). А у авторов писишной игры такого ограничения не было, вот их версия и оказалась "потолще".

Думаешь, это я просто так к объему программ прицепился, лишь бы поворчать? Ну, для этого тоже. А если серьезно, то на примере объема проще всего показать, как более совершенное железо дает возможность программистам более халтурно работать. Была в раньшее время такая заповедь программиста: "Нет такой программы, которую нельзя было бы сократить хотя бы на один оператор". Чем жестче были требования, предъявляемые железом, тем чаще ее нужно было применять. А что получилось, когда эти требования отпали начисто? Правильно, настал полнейший беспредел.

Лучше меньше, но меньше

Не знаю, ведомо ли тебе, что до появления операционной системы МД95 объем любой программы не мог превышать 640 килобайт, сколько бы оперативной памяти не было установлено на компьютере? Так уж устроен PC, что программы должны грузиться в так называемую "нижнюю память". Причем, поскольку туда же грузятся расширения операционной системы, драйверы устройств и резидентные программы, на деле для прикладных программ оставалось килобайт пятьсот с небольшим. Весь же остальной океан памяти можно было использовать только для хранения данных. Потом появились всякие хитрые программы, позволявшие грузить файлы и больших объемов... наконец, пришла на нашу голову и Win95, которая забрала всю нижнюю память себе, а остальные программы под громкий треск винчестера распихивает неведомо куда, сняв при этом всякое ограничение на их объем.

Так вот, игры, работавшие под DOS, всегда укладывались в это ограничение, их основной исполняемый модуль был не более 550-600 кило. Нынешние работающие под Windows игры иногда могут иметь и меньшие объем исполняемого файла (Heavy Gear II, например, - всего 18 кб), но это наглое надувательство, как и все, что связано с творением мудрого Билла. Ведь на самом деле там используются динамические библиотеки, которые тоже грузятся в память. Суммарный же объем того, что постоянно должно торчать в памяти, достигает сотни и более мегабайт.

Назад на стр. 009-068-1  Содержание  Вперед на стр. 009-068-3