Unix Linux Горы Лыжи Таганрог

вторник, 17 июня 2008 г.

Информационное сообщение

На данный момент (17 июня 2008 года), наиболее полная информация, публикуемая мной, доступна на сайте http://elv.110mb.com/, -- здесь публикуются самые свежие переводы, заинтересовавших меня, статей из мира UNIX. В частности, продолжается перевод заинтересовавшей меня книги -- Data Munging With Perl.

понедельник, 14 апреля 2008 г.

NaDa



Продолжаю публикацию того, что заинтересовало сегодня меня, -- а значит и всех Вас (с) Белоголовцев.

В этот раз, просматривая статью англоязычную статью о Google AppEngine, я наткнулся на странное слово -- NaDa. После недолгого "гугления" я наткнулся, в частности, на такое объяснение в Babylon, цитата:

nada
n. (Spanish) nothing

Перевод с испанского -- "ничего".

NaDa
NaDa is a fake-satirical software that "does nothing, but does it very well."
"NaDa does nothing for everybody" NaDa is actually a useless and otherwise harmless
empty file, one byte small (a newline), compressed and available for download from
the "official site." See more at Wikipedia.org...

NaDa -- это шуточное приложение, которое "делает НИЧЕГО (или ничего не делает?), и делает это очень хорошо".
"NaDa делает ничего для каждого". (экий громкий рекламный слоган!).
Nada действительно бесполезный, и таким образом, безвредный пустой файл, длиной всего лишь в один байт (перевод строки), компрессированный и доступный для загрузки с "официального сайта". Для подробностей смотри Wikipedia.org.

Экая забавная петрушка! Однако настало время посмотреть, что же собственно содержится в Wikipedia:

Тэкс-тэкс-тэкс... Начало мы уже прочитатли на Babylon. Что еще у нас написано?

Этот сайт (речь идет о родном сайте NaDa), разработан так, чтобы выглядеть как настоящий профессиональный программистский сайт, с пользовательскими отзывами, отказами от ответственности (disclaimers), рекламными "ходами" (advertisements) и т.д. Страничка NaDa в действительности принадлежит сайту профессионального компьютерного художника -- Bernard Bélanger. Рекомендации, написаны фанатами, т.е. теми, кто решился написать email автору этого сайта. К слову говоря, сайт имеет свыше миллиона посетителей.

Особенности ПО

"Официальный" сайт заявляет следующие возможности NaDa:

* Компьютерных вирусов нет
* Нет глюков
* ПО бесплатно
* ПО делает именно то, что оно делает (ничего), очень хорошо
* С основной страницы опционально доступны загрузки различного рода (zip, RAR, tar и т.д.)
* Вы можете даже удалить это ПО, и оно все еще будет продолжать делать ничего
* ПО легковесно
* ПО не поглощает RAM или CPU
* ПО не имеет особых требований, совместимо со всеми ОС
* ПО использует новую и простую концепцию "мир без войн", и это сделает Вас лучше.

Версия

Версии NaDa выходят в обратном порядке. Текущая версия -- 0.5, которая является улучшением версии 0.9 для Mac. Со временем, сайт утверждает, что будет выпущена финальная версия 0.0, -- завершение таких работ ожидаются в "конце года".

Известные ошибки

Один из пользователей утверждает следующее -- "Я инсталлировал NaDa и к моему удивлению она ничего не сделала (сделала ничего?)!!! Я не знаю, что именно она сделала, но что-то она сделала, и теперь я не знаю что делать... Я пытался просто забыть об этом, однако не могу... Пожалуйста помогите мне. Ваши предложения?"

Это единственная известная на данный момент ошибка.

Внешние ссылки

Официальный сайт NaDa -- http://www.bernardbelanger.com/computing/NaDa/



Помимо этого, мной обнаружена и другая статья, опубликованная в Online-Computerra. Чтоб далеко не ходить, цитирую ее, с указанием автора.


NaDa: ничего не делает. Бесплатно
Автор: Павел Рындин
Опубликовано 01 апреля 2008 года

Новые программы, новые версии, новый интерфейс, а иногда даже и новая функциональность... Зачем все это? Для достигшего просветления эта гонка - не более чем бессмысленная суета. Все уже сказано. Все уже воплощено - в одной единственной программе: NaDa. Она постигла дзен, поэтому абсолютно ничего не делает.

Она не подвесит систему. Она не вызовет разочарования. Она не требует локализации. Она прекрасно функционирует (напомню: ничего не делает) под любой операционной системой, и даже в сотовом телефоне или MP3-плеере.

NaDa - программа, которая ничего не делает.

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

пятница, 4 апреля 2008 г.

Гексафлексагоны

Гексафлексагоны (Hexaflexagons)

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

Это произошло в конце 1939 года. Как-то раз Артур Х. Стоун, двадцатитрехлетний аспирант из Англии, изучавший математику в Принстоне, обрезал листы американского блокнота, чтобы подогнать их под привычный формат. Желая немного развлечься, Стоун принялся складывать из отрезанных полосок бумаги различные фигуры. Одна из сделанных им фигур оказалась особенно интересной. Перегнув полоску бумаги в трех местах и соединив концы, он получил правильный шестиугольник (рис.1). Взяв этот шестиугольник за два смежных треугольника, Стоун подогнул противоположный угол вниз так, что его вершина совпала с центром фигуры. При этом Стоун обратил внимание на то, что когда шестиугольник раскрывался словно бутон, видимой становилась совсем другая поверхность. Если бы обе стороны исходного шестиугольника были разного цвета, то после перегибания видимая поверхность изменила бы свою окраску. Так был открыт самый первый флексагон с тремя поверхностями. Поразмыслив над ним ночь, Стоун наутро убедился в правильности своих чисто умозрительных заключений: оказалось, можно построить и более сложный шестиугольник с шестью поверхностями вместо трех. При этом Стоуну удалось найти настолько интересную конфигурацию, что он решил показать свои бумажные модели друзьям по университету. Вскоре "флексагоны" в изобилии стали появляться на столе во время завтраков и обедов, когда вся компания собиралась вместе. Для проникновения в тайны "флексологии" был организован "Флексагонный комитет". Кроме Стоуна, в него вошли аспирант-математик Бриан Таккермен, аспирант-физик Ричард Фейнман и молодой преподаватель математики Джон У. Тьюки.
Рис.1 Тригексафлексагон складывают из полоски бумаги, предварительно размеченной на 10 равносторонних треугольников (а). Полоску перегибают по линии ab и переворачивают (б). Перегнув полоску еще раз по линии cd, расположим ее концы так, чтобы предпоследний треугольник оказался наложенным на первый (в). Последний треугольник нужно подогнуть вниз и прикрепить к оборотной стороне первого треугольника (г). Как сгибать трифлексагон, показано на рис. 3. Развертку трифлексагона нужно перечертить и вырезать из полоски достаточно плотной бумаги шириной около 3-4 см.
Постоянные модели были названы гексафлексагонами: "гекса" - из-за их шестиугольной формы (От греческого "гекс", что означает шесть.), "флексагонами" - из-за их способности складываться (To flex [англ.] - складываться, сгибаться, гнуться.). Первый построенный Стоуном флексагон был назван тригексафлексагоном, так как у него были три поверхности. Вторая не менее изящная модель Стоуна получила название гексагексафлексагона (первое "гекса" - шесть - также означает число поверхностей этой модели).

Рис. 2. Гексагексафлексагоны складывают из полоски бумаги, разделенной на 19 равносторонних треугольников (а). Треугольники на одной стороне полоски обозначены цифрами 1, 2, 3; треугольники на другой стороне - цифрами 4,5,6. Вместо цифр треугольники можно раскрасить в различные цвета (каждой цифре должен соответствовать только один цвет) или нарисовать на них какую-нибудь геометрическую фигуру. Как складывать полоску, ясно из рисунка. Перегибая гексагексафлексагон, можно увидеть все шесть его разворотов.
Чтобы сложить гексагексафлексагон, берут полоску бумаги (великолепным материалом для изготовления гексагексафлексагонов может служить лента от кассовых аппаратов), разделенную на 19 равносторонних треугольников (рис.2). В треугольники с одной стороны нужно вписать в указанном на рис. 2 порядке цифры 1, 2, 3. Девятнадцатый (последний) треугольник остается незаполненным. Треугольники на обратной стороне следует в соответствии со схемой на рис. 2 пронумеровать цифрами 4,5,6. После этого полоску складывают так, чтобы треугольники на ее обратной стороне, имеющие одинаковые цифры, оказались наложенными друг на друга - 4 на 4, 5 на 5, 6 на 6. В результате у нас получится заготовка гексагексафлексагона, показанная на рис. 2, б. Перегнув ее по линиям ab и cd (рис. 2,в), получим шестиугольник. Остается лишь подвернуть вниз торчащий вправо пустой треугольник и приклеить его к пустому треугольнику на нижней стороне полоски. Проделать все эти операции намного легче, чем описать.

Рис. 3. Чтобы "открыть" тригексафлексагон, его нужно одной рукой взять за два соседних треугольника примыкающих к какой-нибудь вершине шестиугольника, а другой рукой потянуть за свободный край двух противоположных треугольников. Если флексагон не открывается, нужно попробовать ухватить его за два других треугольника. При открывании шестиугольник выворачивается наизнанку, и наружу выходит поверхность, которая ранее скрывалась внутри.

Если все сделано верно, то во всех треугольниках на видимой стороне должна стоять цифра 1, а во всех треугольниках на другой стороне - цифра 2. В таком виде тригексафлексагон готов к перегибанию. Взявшись за два смежных треугольника (рис. 3), согнем шестиугольник по общей стороне этих треугольников и подогнем противоположный угол флексагона. При этом откроются треугольники с цифрами 3 или 5. Перегибая флексагон наугад, вы без труда обнаружите и остальные поверхности. Однако поверхности с цифрами 4, 5 и 6 найти несколько труднее, чем поверхности с цифрами 1, 2 и 3. Иногда вы будете блуждать по замкнутому кругу: сколько бы вы ни бились, перед вами будут открываться лишь одни и те же уже успевшие надоесть вам поверхности.

Рис.4. Схема пути Таккермана на гексагексафлексагоне.

Таккерман довольно быстро нашел простейший способ выявления всех поверхностей любого флексагона: держа флексагон за какой-нибудь угол, следует открывать фигуру до тех пор, пока она "открывается", а затем переходить к следующему углу. Этот метод, известный как "путь Таккермана", позволяет увидеть все шесть разворотов гексагексафлексагонов за один цикл из 12 перегибаний. Поверхности с цифрами 1, 2 и 3 будут появляться в три раза чаще, чем поверхности с цифрами 4,5 и 6. Путь Таккермана удобно изображать в виде схемы, показанной на рис. 4. Стрелки указывают, в каком порядке становится видимыми поверхности флексагона. Схемы такого типа пригодны для исследования любой разновидности флексагонов. Если модель перевернуть, то путь Таккермана будет изображаться той же схемой, но направление ее обхода будет противоположным.

Комитет обнаружил, что, удлиняя цепочку треугольников, можно делать флексагоны с 9, 12, 15 и даже большим числом поверхностей. Таккерман ухитрился даже изготовить действующую модель флексагона с 48 поверхностями! Он также обнаружил, что из зигзагообразной полоски бумаги (то есть из полоски с зубчатым, а не прямым краем) можно сложить тетрагексафлексагон (с четырьмя поверхностями) и пентагексафлексагон (с пятью поверхностями). Существует три различных гексагексафлексагона: первый складывают из прямой полоски бумаги, второй - из полоски, предварительно сложенной в виде шестиугольника, и третий - из полоски, форма которой напоминает лист клевера. Разновидностей декагексафлексагона (с десятью поверхностями) намного больше - их 82. Заготовки для всех 82 типов декагексафлексагонов имеют вид бумажных полос, сложенных самым причудливым образом. В принципе можно построить флексагон с любым числом поверхностей, но если поверхностей больше 10, то число разновидностей флексагонов катастрофически возрастает. Кстати, все флексагоны с четным числом поверхностей делаются из двусторонних полос, а флексагоны с нечетным числом поверхностей, подобно листу Мёбиуса, имеют одну сторону.

Полная математическая теория флексагонов была разработана в 1940 году Тьюки и Фейнманом. Помимо всего прочего, теория указывает точный способ построения флексагона с любым числом сторон, причем именно той разновидности, которая требуется. В своем полном виде эта теория так и не была опубликована, хотя отдельные ее части впоследствии были открыты заново другими математиками. Среди энтузиастов "флексологии" следует назвать отца Таккермана известного физика Луи Таккермана. Таккерман старший внес существенный вклад в теорию флексагонов, разработав простой, но эффективный способ изображать путь Таккермана в виде дерева.
Нападение японцев на Пирл-Хабор приостановило работу "Флексагонного комитета", а война вскоре разбросала всех четырех его учредителей в разные стороны.
Комитет все еще надеется как-нибудь собраться и написать одну или две статьи с подробным изложением теории флексагонов. Но пока этого не случилось, ничто не мешает нам, играя с самодельными флексагонами, попытаться вывести собственную теорию.
* * *
Прежде чем приступать к изготовлению флексагона, полезно несколько раз перегнуть в обе стороны его развертку по всем линиям сгиба. Это намного облегчает последующие манипуляции с Флексагонами. Для более долговечных моделей, нужно вырезать треугольники из картона или металла и соединить их липкой лентой или же наклеить на длинную полоску ткани. Между треугольниками остаются небольшие зазоры, что позволяет легко сгибать флексагоны.
Существует множество способов раскраски флексагонов, которые приводят к интересным головоломкам и самым неожиданным зрительным эффектам. Так, каждая поверхность гексагексафлексагона может появляться по крайней мере в двух различных видах в зависимости от того, как повернуты относительно друг друга образующие ее треугольники. Например, если каждую поверхность разделить на части так, как показано на рис. 5, и выкрасить области А, В и С в различные цвета, то в центре видимой поверхности могут появиться и области А (именно этот случай и показан на рис. 5), и области В, и области С. На рис. 6 изображен геометрический узор, который, будучи нарисован на одном развороте флексагона, появляется на двух других разворотах, каждый раз принимая иной вид.

Рис. 5.
Вращая треугольники, из которых составлен правильный шестиугольник, мы получаем 18 различных разновидностей шестиугольников. Если гексагексафлексагон сделан из прямой полоски бумаги, то три из этих 18 шестиугольников никогда не встретятся нам, как бы мы ни складывали наш флексагон. Поэтому, можно наклеить на каждый разворот гексагексафлексагона части трех различных картинок. Перегибая определенным образом флексагон, мы будем видеть по очереди в центре открывшейся поверхности одну из картинок, а на периферии - фрагменты двух других изображений. К трем "скрытым" шестиугольникам, которые никогда полностью не появляются на видимой стороне флексагона, можно приклеить разрезанные на части портреты трех очаровательных девушек, которые нельзя рассмотреть во всех подробностях, несмотря на все свои старания. Другой способ добиться аналогичного результата, нужно склеить два смежных треугольника. Из-за этого исчезает целый шестиугольник, и можно тщетно пытаться найти недостающий разворот флексагона. Неудача будет казаться тем более непонятной, что, заглянув внутрь флексагона, можно собственными глазами увидеть части таинственно исчезнувшей поверхности!

Рис. 6.
Утверждение о том, что шестиугольники, возникающие при развороте гексагексафлексагонов, могут быть только 15 различных типов, необходимо несколько уточнить. Несимметричная раскраска поверхностей гексагексафлексагонов позволяет обнаружить любопытный факт: три из 15 допустимых шестиугольников имеют свои зеркально-симметричные пары. Перенумеровав внутренние углы каждого из допустимых шестиугольников по часовой стрелке цифрами от 1 до 6, мы обнаружим, что при складывании флексагонов три шестиугольника переходят в зеркально-симметричные шестиугольники, у которых углы перенумерованы теми же цифрами, но расположенными в обратном порядке. Если принять во внимание эту асимметрию, то можно сказать, что шесть поверхностей гексагексафлексагона могут порождать 18 различных шестиугольников.
Для тех, кто захочет сам изготовить флексагоны других типов, отличные от рассмотренных, приводится краткий обзор флексагонов низших порядков.

1. Унагексафлексагон. Полоску из трех треугольников разглаживают и концы ее соединяют так, чтобы получился лист Мёбиуса с треугольным краем. Поскольку лист Мёбиуса имеет только одну сторону и состоит из шести треугольников, его можно назвать унагексафлексагоном, хотя, разумеется, у него нет шести сторон и он не складывается.

2. Дуогесафлексагон Представляет собой просто шестиугольник, вырезанный из бумаги. У него две стороны, но он не складывается.

3. Тригексафлексагон. Существует только одна разновидность этого флексагона, именно она и была уже описана.
4. Тетрагексафлексагон Также существует лишь в единственном варианте. Его складывают из пилообразной полоски, изображенной на рис. 7, а.
5. Пентагексафлексагон. Единственную разновидность этого флексагона складывают из полоски, показанной на рис. 7, б.

6. Гексагексафлексагон. Существует три различных типа этих флексагонов, каждый из них обладает неповторимыми свойствами. Дано описание лишь одного типа. Два остальных можно сделать из полосок форма которых показана на рис. 7, в.

7. Гептагексафлексагон. Его складывают из трех полосок бумаги, изображенных на рис. 7, г. Первую полоску можно сложить двумя различными способами, поэтому общее число возможных форм гептагексафлексагонов равно 4. Третью форму этих флексагонов конструируют из полоски бумаги, имеющей вид восьмерки с перекрывающими частями. Это первая из фигур, которые Луи Таккерман назвал "флексагонными улицами". Поверхности этой фигуры можно перенумеровать так, что на "пути Таккермана" они будут встречаться "по порядку номеров", как дома на улице.

Рис. 7. Зигзагообразные полоски бумаги для складывания гексафлексагонов. Заштрихованные треугольники служат клапанами для склеивания.
Существует 12 различных типов октагексафлексагонов, 27 типов эннагексафлексагонов и 82 типа декагексафлексагонов. Точное число флексагонов каждого порядка определяется неоднозначно и зависит от того, что следует понимать под "различными" флексагонами. Например, все флексагоны имеют асимметричную структуру и делятся на правые и левые, но зеркально-симметричные формы флексагонов вряд ли следует считать самостоятельными. Более подробно о числе неэквивалентных флексагонов каждого порядка можно прочитать в статье Оукли и Визнера. (American Mathematical Monthli, 64, 1957, p. 143)

Порядки гексафлексагонов, которые можно сложить из прямых полосок, поделенных на равносторонние треугольники, всегда кратны трем. Особенно легко построить одну разновидность гексафлексагонов с двенадцатью поверхностями. Для этого берут прямую полоску бумаги вдвое длиннее той, из которой мы складывали гексагексафлексагон, и "скручивают" ее так, как показано на рис. 2, б. При этом длина полоски сократится вдвое и станет равной длине гексагексафлексагонной полоски. Затем скрученную полоску нужно сложить точно таким образом, как если бы вы складывали гексагексафлексагон. В результате получится додекагексафлексагон.
Экспериментируя с флексагонами высоких порядков, полезно иметь в виду удобное правило: число слоев бумаги в двух соседних треугольных секциях всегда равно числу поверхностей данного флексагона. Интересно также отметить, что если каждую поверхность флексагона пометить каким-нибудь числом или символом и этот символ поставить на всех треугольниках, принадлежащих данной поверхности, то чередование символов на развернутой полоске будет обладать трехкратной периодичностью. Например, на лицевой и обратной сторонах развертки гексагексафлексагона, изображенного на рис. 2, цифры будут располагаться в такой последовательности:

123123
123123
123123
445566
445566
445566

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

Вот они.
Уважаемая редакция!
Меня прямо-таки потрясла статья "Флексагоны", опубликованная в декабрьском номере вашего журнала (за 1956 год). Провозившись каких-нибудь шесть или семь часов, я с помощью сотрудников нашей лаборатории в конце концов сумел правильно склеить гексагексафлексагон. С тех пор вся наша лаборатория не перестает удивляться.
Сейчас мы встали перед проблемой. Как-то утром один из наших сотрудников, занимаясь от нечего делать складыванием гексагексафлексагона, не заметил, как кончик его галстука попал внутрь этой игрушки. При каждом последующем перегибании галстук несчастного все больше и больше втягивался внутрь флексагона. После шестого перегибания исчез сам сотрудник.
Разумеется, мы тут же начали лихорадочно перегибать флексагон, но так и не обнаружили никаких следов нашего товарища, зато мы нашли шестнадцатую поверхность гексагексафлексагона.
Возникает вопрос: должна ли вдова исчезнувшего сотрудника получить компенсацию за все время его отсутствия или же мы можем с полным основанием сразу считать его умершим? Ждем вашего совета.
НЕЙЛ АПТЕГРОУВ
Лаборатория Аллена В. Дюмона
Клифтон, штат Нью-Джерси

Сэр!
Письмо об исчезновении внутри гексагексафлексагона сотрудника Лабораторий Аллена В. Дюмона, напечатанное в мартовском выпуске вашего журнала, помогло нам решить одну загадку.
Однажды, занимаясь на досуге складыванием гексагексафлексагона самой последней модели, мы заметили, что из него торчит кусочек какой-то пестрой материи. При последующих перегибаниях флексагона из него показался незнакомец, жующий резинку.
К сожалению, он был очень слаб и из-за частичной потери памяти не мог объяснить нам, каким образом оказался внутри флексагона. Наша национальная диета из овсянки, хэггиса* и виски поправило его здоровье. Он стал всеобщим любимцем и откликается на имя Экклз.
Нас интересует, нужно ли нам вернуть его и если да, то каким способом? К сожалению, Экклза бросает в дрожь при одном лишь виде гексагексафлексагона, и он решительно отказывается "складываться".
РОБЕРТ М. ХИЛЛ
Королевский колледж науки и техники
Глазго, Шотландия

В заключение, для интересующихся, приведу дополнительные ссылки:

http://en.wikipedia.org/wiki/Flexagon -- в конце статьи большое количество ссылок
http://www.flexagon.net/ -- содержит pdf-файлы с выкройками флексагонов

vi -- Курс молодого бойца

VI. Курс молодого бойца
Автор: Владимир Царьков

статья была впервые опубликована в журнале Computer Press (#31 2004 г.)
статья была доработана со времени предыдущей публикации

Каждый пользователь GNU/Linux в свое время сталкивается с необходимостью отредактировать какой-нибудь файл конфигурации. Для этих задач гораздо удобнее использовать быстрый текстовый редактор, нежели чем, допустим, тяжелый и неповоротливый oowriter. В этой статье я постараюсь рассмотреть основные приемы работы с консольным текстовым редактором vi.

Для начала надо выяснить, как правильно произносить это короткое, но значимое в мире свободных операционных систем название. vi надо произносить как "vee eye", так гласит официальная документация. Разобравшись с именем нашего текстового редактора, давайте перейдем непосредственно к изучению его возможностей.

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

Начнем.

Запускаем консоль и говорим:

vi myfile

У vi также есть возможность загружать документ с курсором, установленным на определенной вами строке. Например:

vi +7 myfile

Если бы в myfile был текст, то после загрузки файла курсор был бы помещен в начало седьмой строки.

Итак, появился черный экран с синими значками по левому краю.

В vi редактирование текста и его сохранение проходят в разных режимах. Переключение между режимами осуществляется клавишами Insert, i, a для работы с текстом и Esc для выхода в командный режим, откуда можно сохранять и закрывать файл. В зависимости от того как вам удобнее, нажимаем либо на Insert, либо на i, либо на a, и переходим в режим ввода информации. Курсор в оригинальном vi управляется только с помощью клавиш h, j, k, l.

h на позицию влево
j на позицию вниз
k на позицию вверх
l на позицию вправо

Впрочем, в случае GNU/Linux, кнопки "вверх", "вниз", "вправо", "влево" будут работать не хуже.

Введя пару строк из серии "Hello, World!", поэкспериментируйте с курсором. Вдоволь наигравшись, перейдите в командный режим, нажав на Esc. Самое время сохранить наш myfile. Все команды для vi должны следовать после двоеточия. В появившейся внизу экрана командной строке введите :w, что означает "сохранить". Готово, файл записан на диск и мы можем спокойно выйти из vi. Для этого говорим :q. Если, внеся изменения в документ, вы передумали их сохранять, скажите :qa!. Это заставит vi завершить работу без сохранения изменений, внесенных в файл. В том случае, если вам надо отменить все правки, внесенные в документ с последнего сохранения, то скажите :e!. Ну а если просто отменить последнюю команду, то :u.

Представьте себе ситуацию: у вас не работает какое-то устройство, проконсультировавшись на одном из форумов у знающих предмет товарищей, вы решаете изменить, допустим, /etc/X11/XF86Config предложенным вам куском текста, но вводить все ручками как-то не хочется, а метод Ctrl-C/Ctrl-V (копировать/вставить) в vi не работает. Что делать? В рассматриваемом нами текстовом редакторе существует свой способ копирования и вставки информации. Заранее отмечу, что нижеописанные действия должны производиться в командном режиме. В vi существуют именованный и неименованный буфер. Ниже представлены команды, которые позволяют копировать текст в неименованный буфер.

yy копировать строку в неименованный буфер
Y копировать строку в неименованный буфер

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

nyy копировать следующие n строк в неименованный буфер
nY копировать следующие n строк в неименованный буфер
yw копировать слово в неименованный буфер
ynw копировать n слов в неименованный буферnyw копировать n слов в неименованный буфер

Посмотрев на строки с командами ynw и nyw, вы можете заметить то, что vi также позволяет не придерживаться строгого порядка букв в некоторых командах.

Минус неименованного буфера в том, что его содержимое может быть повреждено другими командами. Одним словом, если вам нужно сохранить кусок текста на длительный промежуток времени - используйте именованный буфер. vi имеет 26 именованных буферов для хранения информации. Чтобы сохранить строку в именованный буфер, нужно подвести курсор к началу строки и сказать что-то наподобие "ayy, эта команда позволит сохранить строку, в начале которой находится курсор в именованном буфере a. Ниже представлены команды, которые позволяют копировать текст в именованный буфер.

"ayy копировать строку в именованный буфер
a"aY копировать строку в именованный буфер
a"byw копировать слово в именованный буфер
b"Byw добавить слово к содержимому именованного буфера
b"by5w копировать следующие пять слов в именованный буфер b

Как вы уже наверняка заметили, vi позволяет копировать в буфер не только строки и слова, но и фиксированные вами количества слов после курсора.

Мы научились копировать информацию в буфер, но как ее оттуда извлечь? Сначала давайте рассмотрим процесс вставки содержимого неименованного буфера. В командном режиме нажмите p, это позволит вставить содержимое неименованного буфера справа от курсора, если же вы нажмете P, содержимое буфера окажется слева от курсора. Ниже представлены варианты команд для вставки содержимого как именованного, так и неименованного буферов.

nP вставить n копий содержимого неименованного буфера слева от курсораnp вставить n копий содержимого именованного буфера справа от курсора
"ap вставить содержимое именованного буфера a справа от курсора
"cP вставить содержимое именованного буфера c слева от курсора
"b4P вставить четыре копии содержимого именованного буфера b слева от курсора

Теперь несколько слов о том, как "вырезать" текст. Это действие можно разделить на три шага: перемещение текста в именованный или неименованный буфер, перевод курсора в нужную позицию и непосредственная вставка содержимого именованного или неименованного буфера. В принципе, это то же самое, что и копирование, только сначала мы перемещаем текст в буфер. Ниже представлены примеры соответствующих команд.

"add удалить строку и поместить ее в именованный буфер
a"b5dd удалить пять строк и поместить в именованный буфер
bdw удалить слово и поместить его в неименованный буфер

Вставка вырезанного текста происходит также как и вставка скопированного.
Немаловажно отметить и то, что при работе в командном режиме, есть возможность удалять текст не только побуквенно. Ниже указаны некоторые из возможных команд по удалению текста.

x удалить знак под курсором
dd удалить строку
D удалить часть строки, начиная с позиции курсора
ndd удалить n строк
dG удалить все с данной позиции курсора до конца файла
dlG удалить все с данной позиции до начала файла

Поиск и замена текста являются самими сложными для понимания вопросами, так как требуют от пользователя некоторого опыта работы с регулярными выражениями. Возможно, это послужит темой для отдельной статьи.

Вот лишь несколько примеров:
fm найти следующий знак m (поиск перемещается вправо)
Fq найти следующий знак q (поиск перемещается влево)
/string поиск слова string вправо и вниз по тексту
?string поиск слова string влево и вверх по тексту
:%s/^..//g удаляет по два символа в начале каждой строки документа.

Надеюсь, мне удалось хоть немного приоткрыть завесу тайны, окутавшую отличный консольный текстовый редактор vi.

С вопросами обращайтесь по адресу: lipetsk-gnu-lug at bk period ru.
Copyright (c) 2006 Vladimir B. TsarkovVerbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved.

"Бродяга" и его потомки
(С) Георгий Евсеев, 1996



Интересно наблюдать за цикличностью развития компьютерных игр.
Самые первые игры появились как развлечение для программистов. Программисты писали их, программисты же в их и играли. История компьютерных игр началась задолго до массового распространения компьютеров и уж, конечно, задолго до появления фирм, профессионально занимающихся выпуском игровых программ. Первые игры представляли собой "компьютерный фольклор" и циркулировали именно в таком качестве. Во многих случаях имена их авторов "терялись по дороге", хотя дело происходило не так давно, и в большинстве случаев такая информация не пропала безвозвратно.
Hо те времена ушли в прошлое, разработка компьютерных игр стала делом профессионалов, зарабатывающих на этом деньги. Соответственно, и развитие игровых продуктов пошло по удобному профессионалам пути. Hо жизнь оказывается сложнее, чем можно себе представить, и фольклор, который должен был бы вымереть, неожиданно оказался весьма живучим. Роль "сокровищницы истории" сыграла глобальная сеть Интернет.
Hаши журналы уже неоднократно рассказывали о неожиданном и серьезном возрождении жанра текстовых адвентюр - Interactive Fiction. Разумеется, нельзя рассчитывать на коммерческое возрождение подобных продуктов, но они прочно "бросили якорь" в Интернет, и сегодня можно уверенно утверждать, что они не исчезнут безвозвратно, а буквально пару лет назад это казалось неизбежным. Вместе с Interactive Fiction "восстал из небытия" и другой жанр, которому и посвящена эта статья.
Его происхождение еще более туманно, но достоверно известно, что самая первая игра такого вида назвалась Rogue - "Бродяга". По нынешним меркам она относится к жанру RPG, хотя имеется много мелких, но достаточно существенных отличий по сравнению с классикой ролевых игр. Поэтому можно говорить об этих играх как о специфическом поджанре - Rogue-подобных играх. И вот в последнее время Интернет зафиксировал стойкий рост интереса и к этому виду игр. В списке 40 лучших некоммерческих игр (freeware, shareware и demo) в первую шестерку (места - 2, 4, 6) входят три (!) игры этого вида. Конкуренцию им сумели составить лишь shareware-версии Duke Nukem 3D и Quake и одна игра из жанра Interactive Fiction (So Far). Десяток лет назад в России было так мало компьютеров, что мы остались практически в стороне от "компьютерного фольклора". Поэтому, знакомство с этим классом игр должно быть для многих интересным.

Hемного истории.
Итак, Rogue стала первой игрой этого жанра. Дату ее появления установить трудно, но случилось это не позднее начала восьмидесятых годов, а, может быть, и намного раньше. Вскоре после этого появились аналогичные по идее и построению игры Hack, Larn и Moria.
Интересно отметить, что популярное, хотя и ошибочное мнение возводит происхождение слова "хаккер" именно к названию игры Hack. Эти игры существовали в, так сказать, фольклорном варианте и поэтому активно развивались и заимствовали черты друг друга. Это развитие ускорилось с появлением компьютерных сетей и игр класса MUD (Multi-User Dungeon). Однако, вскоре после этого началось формирование современной игровой индустрии, приоритеты стали смещаться и "Бродяга" со своими родственниками оказался оттеснен на задний план. Впрочем, время от времени и коммерческие продукты пытаются эксплуатировать такую идею.
Примерно в 1992 году вышла игра Ragnarok, использующая похожий замысел. Она не принесла особого успеха производителям и сейчас практически забыта. В 1994 году была выпущена игра Dungeon Hack, которая попыталась реализовать идеи Rogue в стиле Eye of Beholder. Она стала наиболее удачной коммерческой реализацией идей Rogue-подобных игр, хотя классический подход сохраняет больше игровых возможностей. В 1995 году была создана игра Mordor (для Windows), которая также не принесла ее создателям коммерческого успеха. Создавая ее, авторы неоднократно применяли сугубо механистический подход, чем облегчили себе труд, но сделали повторные обращения к игре не очень интересными. И, наконец, в 1995-1996 происходит фантастический взлет популярности игр Nethack, Angband и Ancient Domains of Mystery. Они представляют собой лучшее, что достигнуто до сих пор в этом жанре, и, честно говоря, по играбельности заметно превосходят упоминавшиеся выше коммерческие издания.

Что же такое Rogue?
По современным меркам исходный вариант игры, да и нынешние его потомки кажутся преступлением против нынешнего понимания того, как должна выглядеть хорошая компьютерная игра. Из-за этого никому и не удалось пока что создать успешный коммерческий продукт, а, с другой стороны, любители этого жанра считают, что его достоинства существенно перевешивают "немодный" характер игры. Hачнем по порядку. Графика. Гм!.. Графика?.. Игра Rogue создавалась в те времена, когда о графических и/или цветных мониторах еще никто ничего не слыхал (и не видал). В нее играли, используя черно-белый алфавитно-цифровой монитор или (о боже!) телетайп. По современным понятиям такие игры кажутся чудовищно устарелыми, но оказалось, что их идея наиболее эффективно реализуется именно таким образом. Современные программы, конечно же, стараются использовать цвет, но игра продолжает идти в алфавитно-цифровом режиме.
Интерфейс. Гм!.. Интерфейс... Опять-таки, в старое доброе время никто не слыхал о таком устройстве, как мышь, а управление при помощи вложенных меню было чем-то вроде высшего пилотажа. Поэтому игра Rogue отличается изобилием доступных команд (управляющих и информационных), каждая из которых "завязана" на какую-то клавишу. Это изобилие настолько велико, что многие клавиши могут задействоваться неоднократно, а, точнее говоря, до четырех раз. То есть, скажем, "a", "Shift+а", "Ctrl+a" и "Префикс-а" все могут иметь разное значение. "Префикс" - это специально выделенная клавиша (например, в Nethack - "#"). Один только список доступных команд занимает несколько экранов при выдаче в два столбца, так что освоение интерфейса - дело далеко не легкое. К счастью, не все команды так уж и нужны, а основные запоминаются достаточно легко. При привыкании к игре Вы вскоре зафиксируете в памяти необходимый минимум, а его постепенное расширение - это уже дело наживное.
Сюжет... Сколько существует жанр RPG, столько времени его ругают за нередкую примитивность сценария. В этом смысле Rogue - это вообще предел простоты. Ваша задача - спуститься в "роковое подземелье" (Dungeon of Doom), добыть на его "дне" магический Амулет Иендора (Amulet of Yendor) и выйти с ним наружу. По крайней мере последняя часть задачи несет оригинальный элемент. Во всех "стандартных" RPG герою достаточно "наложить лапу" на ключевой предмет, если таковой имеется, и игра закачивается салютом в честь победителя.
Минимальная глубина, на которую герою придется спуститься в Rogue, - это 26 уровней-этажей. Разделение игрового пространства на четко разграниченные друг от друга этажи сохранилось до настоящего времени. Каждый этаж состоит из набора комнат, соединенных между собой коридорами. И вот тут мы видим первую особенность, дающую "Бродяге" преимущество перед многими современными играми: каждый очередной этаж генерируется случайным образом в тот момент, когда герой туда попадает. Это означает, что каждый сеанс игры вовсе непохож на любой другой. Изменение структуры лабиринта приводит к тому, что все события разворачиваются совершенно по-другому. Вы будете сталкиваться с абсолютно разными проблемами и иметь в своем распоряжении совсем другие средства для их разрешения.
Каждый уровень представляет собой, грубо говоря, отдельный экран, на котором по мере исследования образуется карта. Различные символы означают объекты, информация о наличии которых известна играющему.
Число разных предметов весьма велико и существенную часть игры занимает их поиск, сбор, идентификация и использование. В "Бродяге" доступными объектами являются магические напитки, свитки, кольца и жезлы. Используемый механизм очень прост. Все напитки различаются по цвету, свитки - по "бессмысленным" названиям, кольца и жезлы - по материалу, из которого сделаны. При каждом новом запуске игры свойства объектов одного класса "перемешиваются". В результате все, скажем, напитки белого цвета обладают одними и теми же свойствами, но различными в разных сеансах игры. Часть предметов идентифицируется сразу при попытке применения, например напитки, которые лечат героя. В других случаях непосредственный эффект не ясен. Вы можете рассчитывать либо на глубокое знакомство с игрой и те сообщения, которыми сопровождается применение определенных предметов, либо на использование специальных средств, к которым относится "свиток идентификации" (Scroll of Identify). Эффект применения большинства предметов благоприятен для героя, что стимулирует "идентификацию применением", но есть и немало неприятных исключений. Интересно, что часто существует и другой способ использования предмета, с обращением отрицательного эффекта себе на пользу. Hеупомянутыми оказались оружие и доспехи. В Rogue их выбор относительно невелик.
В вашем распоряжении имеется лишь кольчуга, ручное и дальнобойное оружие. Особенность игры заключается в том, что любой из подобных предметов может быть практически неограничено заколдован в сторону улучшения его свойств. Для этого служат магические свитки Enchant weapon и Enchant Armor. Hачинаете игру Вы с минимальным стартовым снаряжением, и только генератор случайных чисел знает, до каких пределов могут в итоге дойти Ваши способности. Кстати, именно в этой игре появилась концепция "проклятых" (cursed) предметов снаряжения, от которых, если уж Вы взяли их в руки, невозможно отделаться. Здесь такую опасность представляют лишь оружие, доспехи и магические кольца. Как правило, "проклятый" предмет бывает заколдован таким образом, что его возможности уступают "стандартному" снаряжению такого же вида.
Ролевой элемент в игре определяется увеличением Ваших способностей в результате набора опыта и повышения уровня. Основной приток опыта поступает за счет уничтожения монстров-противников.
В "Бродяге" существует всего двадцать шесть различных типов монстров, которые обозначаются заглавными буквами латинского алфавита от A до Z. Монстры становятся более опасными по мере погружения в глубину подземелья. Многие из них обладают специфическими свойствами: ухудшают качество доспехов, безвозвратно высасывают здоровье или способны обратить Вас в камень. При этом стоит обратить внимание на еще одну особенность, совершенно утраченную современными компьютерными RPG. Практически в каждой современной игре режим странствий и режим боя - это два совершенно различных режима. Вы либо исследуете мир, либо бьетесь с кем-то, кто осмелился преградить Вам дорогу, насмерть. Только гибель врага снова переводит Вас в режим путешествия. Это выглядит как искусственное ограничение, и в Rogue его нет! Учитывая, что здоровье регенерируется со временем, Вы можете проводить бой по своему усмотрению: отступать от врага, если он кажется слишком опасным, или же биться насмерть, рискуя жизнью героя и надеясь, что еще один удар окажется решающим. Как и в реальной жизни в Ваш "поединок" может вмешаться посторонний монстр, либо загоняя героя в тупик, либо, напротив, неожиданно давая ему столь необходимую передышку. Подобный тактический элемент в игре очень силен.
В целом, ход игры выглядит следующим образом. Вы "появляетесь" на верхнем (первом) уровне подземелья с начальным снаряжением. Обходите весь уровень в поисках лестницы, ведущей ниже. Как только Вы нашли лестницу, можно спускаться на следующий этаж, хотя обычно полезнее обойти текущий уровень полностью, чтобы быть уверенным, что нашли на нем все, что может пригодиться в дальнейшем. По мере уничтожения встреченных монстров, герой набирает уровни опыта, его боевые возможности и здоровье улучшаются. Если все идет хорошо, то Вы будете потихоньку набирать не только опыт, но и снаряжение, которое может быть использовано сразу же или сохранено на случай критической ситуации. Если все идет не очень хорошо, то герой может погибнуть на любом уровне, начиная с самого первого, что означает конец игры и запись результатов в таблицу максимального счета, если они того заслуживают. Погружаясь вниз, Вы будете встречать все более и более крепких монстров, причем некоторых из них Вы заведомо не сможете победить в прямой схватке. Вам придется либо бегать от врага по всему уровню, выигрывая время на выздоровление, либо применять магические средства, которые также могут позволить добиться удачи.
В подземельях "Бродяги" встречаются два вида специальных комнат.
Первый из них - это, так сказать, "гнездо монстров": комната, под завязку забитая монстрами из числа встречающихся на данном уровне подземелья. Справиться с такой командой врагов не просто, но это очень интересно, да и приобретенный опыт лишним не будет.
Второй тип - это лабиринт, встречающийся лишь на большой глубине. Вместо обычной комнаты с четырьмя стенами Вы увидите путаницу коридоров. Со всех прочих точек зрения это обычная комната, в ней могут обитать монстры (иногда встречается и лабиринт-гнездо, жуткая вещь), лежать предметы и находиться лестница, ведущая на другие этажи. Если Вы живым доберетесь до двадцать шестого уровня или ниже, то можно уже будет заняться непосредственно поисками Амулета Иендора. Он не обладает какими-то особо интересными свойствами, за исключением одного: он позволяет идти по лестнице не только вниз, но и вверх. То есть, только после этой находки у Вас появляются шансы покинуть подземелье.
Когда Вы идете вверх, полное исследование уровней уже не имеет особого значения. Вы снаряжены вполне адекватно, раз уж Вам хватило сил на то, чтобы добраться до Амулета. Уровни по пути назад также генерируются случайным образом и поэтому не совпадают с теми, что Вы посетили по пути вниз. Hаличие предметов на них минимально и вряд ли Вам стоит на это рассчитывать. Более того, критическим становится наличие у героя еды. Герой должен регулярно кушать, иначе дело кончится тем, что он умрет с голоду. Еда встречается в лабиринте так же, как и любой другой предмет. Hа обратном пути Вы вряд ли найдете, чем питаться. Поэтому надо сохранить запас пищи на обратную дорогу и не тратить зря время.
Если Вам удалось выбраться наружу живым, то все предметы "переводятся в деньги" и Ваш наличный капитал записывается как очковая оценка Вашего успеха. Шансы на такой глобальный успех крайне невелики даже для очень опытного игрока.
В связи с этим нельзя не отметить еще одну особенность: в играх этого жанра не принято откладывать игру с целью многократного восстановления отложенной записи. При сохранении игры текущий сеанс автоматически заканчивается, а при запуске отложенной партии файл сохранения сам собой стирается. Это приятно далеко не каждому, особенно на этапе знакомства с игрой. Выработался даже такой термин как "safefile abuse" - копирование сохраненного файла с целью его многократного использования. Современные игры принимают специальные меры против таких действий. В то время как для человека, только знакомящегося с подобной игрой, подобная практика может казаться весьма несправедливой, по мере привыкания становится понятным, что это довольно естественная идея. Постепенно Вы перестанете погибать по собственной глупости, а если обстоятельства сложатся так, что герой попадет в безвыходное положение, что ж - на войне как на войне. Кроме того, только при таком подходе таблица лучших результатов имеет хоть какой-то смысл.
Поэтому, надо заранее подготовиться к тому, что Ваши шансы на успех не превосходят нескольких процентов, а, может быть, они и намного меньше. Hеожиданно оказывается, что тем интереснее играть в такую игру.

Современные "Бродяги"
Все, что было рассказано, относится в основном к исходному варианту Rogue.
Современные игры ушли от него достаточно далеко вперед. Совершенствование идет по нескольким легко различимым направлениям. Во-первых, герой стал намного более "жизненным", если можно так выразиться.
Количество разнообразных параметров стало намного больше и, как минимум, сравнимо с современными RPG. Используемая система похожа на AD&D, но более гибкая и, конечно же, эти параметры значительно более динамичны, чем в случае большинства RPG. Числовые оценки способностей героя могут (и должны, если Вы на что-то рассчитываете) расти по ходу игры. Hынешний "бродяга" должен превратиться из довольно-таки посредственного персонажа в чудовище, способное смести что угодно со своего пути. Кроме того, в начальный момент Вы теперь обычно выбираете расу и класс своего героя, что влияет на начальные параметры и снаряжение, но может заставить Вас модифицировать и всю тактику игры. Количество разных рас и классов приближается в современных вариантах где-то к десятку. Вы можете выбирать чуть ли не из сотни различных вариантов начала игры. Конечно, многие из возможных начальных ситуаций мало отличаются друг от друга и разнообразие часто продолжает сглаживаться и в дальнейшем, но в некоторых случаях Вы действительно должны, что называется, играть в разные игры.
Герой должен приобрести временно или на постоянной основе массу свойств, которые так или иначе сказываются на ходе игры и определяются по принципу "включено/выключено". Он может стать, например, абсолютно неуязвимым для определенных видов магии. Hекоторые из этих свойств восходят еще к исходному варианту. Hапример, такова слепота, когда Вы не видите ничего вокруг. Кстати, подумайте, как это влияет на всю структуру программы: практически каждое действие, выполненное в зрячем или слепом состоянии, требует различной реакции от программы. К тому же, чувства, иные чем зрение, могут тем не менее давать герою какую-то информацию. Интересно, что в Nethack слепота - это не всегда отрицательное свойство, в некоторых случаях герой должен ничего не видеть, для того добиться желаемого результата.
Hесмотря на идентичные основные принципы заметно усложнился и общий план подземелий. Каждый этаж продолжает представлять собой сочетание коридоров и комнат, но, если в Rogue общая структура была достаточно простой, то здесь по текущему плану довольно-таки трудно сказать, где могут быть расположены двери и другие комнаты. Полностью осмотреть уровень становится более сложным, чем раньше, да и гарантировать (себе) полноту исследования становится иногда почти невозможно.
Создано и значительно большее разнообразие специальных комнат в лабиринте. Самая интересная из них - это, конечно, магазин. Это комната (они встречаются во всех играх), полностью "захламленная" различными объектами, так что свободных клеток пола в ней нет. Внутри магазина находится продавец (shopkeeper), в чьем ведении находится это снаряжение. Вы можете взять любой из объектов и заплатить продавцу требуемую им цену в золоте. Предмет становится Вашим. Магазины бывают универсальные, торгующие разнообразным товаром, и специфические, посвященные, например, только магическим жезлам или только свиткам. В таком магазине Вы можете и продать уже ненужное Вам снаряжение, если продавца интересует такой вид товара. Любители таких игр выработали целый набор вариантов действий, направленных на ограбление магазинов, то есть на то, чтобы изъять его содержимое, не платя продавцу. Такой набор известен и авторам игры, так что они могут изменять алгоритмы, чтобы упростить или усложнить этот "труд". Самый простой способ грабежа - это убить продавца. Однако, владелец магазина обычно довольно крепок, ибо по логике игры вряд ли Вы единственный желающий получить его товары задаром.
Среди других специальных комнат наиболее интересны варианты "гнезда монстров", которые разработаны очень широко. Обычно существуют "специализированные" типы таких гнезд, различающиеся составом находящихся там врагов и вознаграждением, которое получит герой, если сумеет вычистить его.
Практически все современные игры содержат и целые специальные уровни, которые не генерируются автоматически, а заготовлены заранее и только вставляются в игру в нужный момент. Обычно такой уровень содержит какие-то очень полезные предметы, охраняемые весьма крепкими монстрами. Иногда только фрагмент уровня оказывается задан заранее, а остальная часть продолжает генерироваться случайным образом.
Кроме того, подземелья могут содержать много новых неподвижных объектов, таких как фонтаны, алтари, троны или умывальники. Каждый из таких объектов может генерировать целый набор эффектов, если герой попытается любым способом манипулировать с ним. Hапример, фонтан (в Nethack) может породить монстров, снять проклятье с предмета, позволить найти немного денег или вызвать к жизни еще с десяток различных результатов.
Значительно возросло и количество предметов, которые могут находиться в пользовании у героя. Он может одновременно иметь надетыми на себя шлем, кольчугу, перчатки, ботинки, два кольца и амулет. Кроме того, он имеет две руки, которые могут использоваться для комбинации оружие+щит, и это не считая дальнобойного оружия, которое обычно может использоваться независимо. Это, так сказать, базовый набор амуниции, в различных играх могут быть немного разные модификации этого набора. Да, кстати, любой предмет может быть как проклят, так и благословлен (blessed), и это теперь относится не только к предметам, которые могут быть надеты на героя, но и ко всему остальныму. "Проклятые" свитки и напитки обычно генерируют эффект противоположный обычному, но иногда их воздействие совершенно неожиданно и может быть в каких-то обстоятельствах очень полезно. В результате сбор предметов и манипулирование ими становится намного сложнее и интереснее. Разнообразие таких предметов как свитки, жезлы или напитки также значительно увеличилось. Hесколько проще стал вопрос с едой: нередко от убитого монстра остается его труп, который можно использовать для еды. Разумеется, существуют и другие использования мертвых тел, а их поедание может оказаться палкой о двух концах.
Hу и, естественно, значительно возросло количество всевозможных монстров. Мониторы стали цветными (хотя используемый режим остался алфавитно-цифровым) и монстры теперь обозначаются не только заглавными, но и строчными буквами, к тому же разными цветами. Когда букв все же не хватает, в ход идут некоторые из оставшихся незадействованными символов, такие как ":" или ";". Будьте готовы встретить несколько сотен различных монстров, многие из которых могут иметь специфические способы воздействия на героя. Современные игры часто содержат и несколько специальных "именных монстров", которые появляются в игре только один раз, и победа над которыми может дать "особо выдающееся" вознаграждение.
Еще одна новая особенность подобных игр, крайне трудоемкая с точки зрения реализации, - это введение компаньонов героя. Компаньон (один или несколько) - это дружелюбно настроенный монстр, повсюду сопровождающий героя и активно помогающий ему в бою. Предусмотрены различные способы, какими герой может получить такого монстра в свое распоряжение. Управляет таким компаньоном компьютер, но от Вас зависит, сможете ли Вы эффективно использовать его в подземелье. Разумеется, если вы действительно попробуете сыграть в одну из таких игр, Вы обнаружите, что здесь упомянуты далеко не все имеющиеся особенности, да и те, о которых рассказано, содержат намного больше деталей и тонкостей.

Лучшие некоммерческие игры мира
Упомянутые в этой статье современные игры такого плана достаточно близки между собой, чтобы можно было видеть их общего предка, но достаточно различаются, чтобы каждый человек мог предпочесть какую-то одну из них.
Angband (шестое место) в значительной мере базируется на мире, созданном Дж.Р.Р.Толкином. Разумеется, говорить о какой-то законченной картине мира такой игры не представляется возможным, но, насколько получилось, авторы стараются применять "терминологию" и собственные имена, встречающиеся в произведениях Толкина. Эта игра характеризуется увеличенным размером отдельного уровня (он не помещается на один экран) и его структурой повышенной сложности. Вжиться в мир этой игры довольно-таки трудно, но, если удастся это сделать, то она окажется очень интересной.
Nethack (четвертое место) представляет собой наиболее прямую линию развития игры Rogue от ее создания до наших дней. Она представляет собой продукт постоянных модификаций это типа игр в сети UseNet. К этой игре приложило руку, пожалуй, наибольшее число людей и диапазон ее возможностей и сбалансированность сейчас наилучшие среди всевозможных игр этого жанра. Если какая-то возможность имеется в жанре в целом, то почти наверняка она есть в Nethack. С другой стороны, она может быть несколько жестоковатой для начинающего игрока (впрочем, это верно для почти всех современных игр). В Rogue Вы могли чуть ли не с первой же попытки "нахрапом" дойти живым где-то до уровня десятого-двенадцатого, а если немного повезет, то и до пятнадцатого-шестнадцатого. В Nethack герой "без труда" может погибнуть уже на первых трех уровнях. Да и вообще, добиться успеха в Nethack очень и очень непросто, даже если Вы располагаете полной информацией (а такая информация в виде файлов-спойлеров часто бывает доступна).
Ancient Domains of Mystery (второе место) - это самая современная из этих игр и в некотором роде одна из самых удачных. Ее автор попытался придать сюжету некоторую большую разветвленность и законченность. В ней несколько подземелий (они часто имеют фиксированную глубину) и достаточно много непользовательских персонажей, которые могут сообщить герою полезную информацию. По глубине она на данный момент наиболее продуманна из всех существующих сейчас игр этого класса. Правда, существующая версия пока что считается бета-тестом, но похоже, что в ней почти не осталось ошибок.
В заключение отмечу, что версия Rogue для PC - это файл размером в 100 килобайтов, а все другие упомянутые игры, хотя и намного больше, все же умещаются в один мегабайт в запакованном виде. Если Вы заинтересованы в том, чтобы получить в свое распоряжение игру, в которую Вы могла бы играть очень-очень долго и с неизменным удовольствием, попробуйте преодолеть отвращение к отсутствию 256-цветной графики, раздобыть и испытать одну из упомянутых здесь игр.