14 нояб. 2008 г.

Полнолуние

Мне очень нравится смотреть на полную луну. Для меня полная луна - это олицетворение единства с Космосом и со всем миром. И какое-то успокоение от повседневной суеты. На полную луну можно смотреть очень долго. И это не надоедает. Всё равно, что смотреть на течение воды или на костёр.

Когда я слушаю какую-то медленную и всеобъемлющую музыку (например, музыка из Oblivion, играющая в ночное время в этой игре), то мне представляется огромный Космос и луна в частности.

Вообще, как известно, луна всегда была объектом вдохновения творческих людей. Ей посвящено великое множество литературных и музыкальных произведений. Из современной музыки мне вспоминается песня группы Мельница "Полнолуние" - там, как мне кажется, главное не смысл текста, а именно передача ощущения этого самого полнолуния. Из современной фэнтэзи-литературы первое, что я вспомнил - это как в книге Ника Перумова "Гибель Богов" упоминается Великая Арфа Ночи, звуки которой "всегда сопровождают нас, защищая от сводящего с ума безумного рокота далёких, но необоримо могучих волн Хаоса".

Хоть это и не имеет отношения к теме данного поста, но я всё-таки позволю себе заметить, что "Гибель Богов" мне не понравилась, я читал её 2,5 месяца, еле дочитал. Мне она тогда показалась какой-то слишком уж насыщенной подробными описаниями магических сражений, которые мне очень быстро надоели. Однако по прошествии времени именно ГБ мне вспоминается чаще других книг Перумова.

Какой-то необычный пост получился, но и тема его далеко не заурядна.

Разбиение слов на слоги

Вчера полдня писал программу на C#, основной задачей которой является разбиение русского слова на слоги. Сразу скажу, что задача не из простых, но мне удалось-таки достигнуть положительного результата. Несколько раз с нуля переписывал основную функцию. Чуть было не забросил вообще эту затею. Но когда наконец программа выдавала результаты, близкие к реальным, я получил моральное удовлетворение.

Я до сих пор не уверен, что мой алгоритм самый оптимальный. Скорее всего, код выглядит так, будто его писал дилетант. Но мне в первую очередь важно как можно скорее получить работающую программу, чтобы проверить правильность моей идеи. И здесь C# гораздо удобнее C++, несмотря на то, что последний в целом более производительный. Хотя в данном случае мне скорость не так важна, т.к. на слоги разбивается строка из одного слова, а это всегда моментально. Да и работа со строками в C# намного проще.

А зачем мне собственно всё это надо? С недавних пор я стал интересоваться применением компьютерных программ в литературе. Решил начать с малого и написать программу для разбиения слова на слоги. Следующим шагом будет программа для генерации новых имён или названий на базе существующих. И для этого нужно сначала разбить все слова на слоги.

12 нояб. 2008 г.

Удобство против бесплатности

В последнее время я пришёл к выводу, что популярны отнюдь не те ИТ-продукты, которые проще и удобнее, а те, которые бесплатны. Деньги - это самое главное мерило в наше время, особенно в России. И чем меньше их можно потратить на какую-либо технологию или программу, тем лучше. А лучше вообще не тратить. Попользоваться на халяву.

Признаюсь сам, что приятно получать доход, например, с сайтов, которые хостятся совершенно бесплатно. То есть зарабатывать деньги, ничего при этом не расходуя. Я, например, веду свой блог здесь, не расходуя при этом ни копейки, а мог бы купить хостинг и домен, поставить Wordpress и т.д. Но я так не делаю, потому что мне это невыгодно. Слишком большие траты и неизвестно, окупятся ли они или нет.

Но, по моим наблюдениям, продукт, созданный на бесплатной (иногда open source) основе, гораздо сложнее в использовании, чем его платный аналог. Да и интерфейсы этих продуктов различны так же, как Небо и Земля.

Мне гораздо приятнее работать в такой среде разработки, как Visual Studio. И никто её еще не смог переплюнуть. Никакие бесплатные аналоги. А внешний вид софта, разработанного на Java, меня порой повергает в ужас. Поэтому, если вы хотите, чтобы всё было логично, удобно и красиво, нужно заплатить деньги. Причём не малые. Как говорится, "либо шашечки, либо ехать".

Ну а это вообще тема отдельного разговора, что же лучше, свободный софт или же проприентарный? Я бы сказал, что всё зависит от конкретной задачи. Для создания небольших динамических сайтов я использую PHP - это и проще, и быстрее, и производительнее. А где-то уместно использовать платную технологию ASP.NET. Хотя, в принципе, можно любую технологию оптимизировать под любые задачи. Было бы желание.

9 нояб. 2008 г.

Познакомился с жанром Interactive Fiction

Я и до этого приблизительно знал, что такое Interactive Fiction. А вчера вечером что-то дёрнуло меня и начал я на "любимом" C# ваять нечто вроде текстовой игры. Совершенно спонтанно. И вдруг обнаружил, что именно в подобных проектах в полной мере применяется наследование.

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

Напоследок я зачем-то залез в Интернет и наткнулся на текстовую адвенчуру Zombie3, сделанную под DOS в 2003-м году одним из наших отечественных программистов. Ну запустил и...

И понял, что это гораздо более захватывающая игра, чем может показаться на первый взгляд. Принцип такой: на экран выводится текстовое описание окружающей обстановки, а также несколько объектов, с которыми персонаж может взаимодействовать. От игрока требуется ввести команду с клавиатуры. Есть хелп, где описаны все эти команды, но суть в том, что игрок не знает, какие именно команды можно применить к конкретному объекту. В зависимости от команды изменяется окружающая обстановка, т.е. выводится новое тектовое описание.

И эта простая идея, которая впервые была реализована, если я не ошибаюсь, ещё в 1970-х, так меня увлекла, что я долго потом не мог заснуть. Я пришел к выводу, что это очень оригинальная идея и полностью соответствует моему желанию одновременно заниматься написанием книг и программированием. Более того, я вспомнил, что впервые идея написать текстовую игру (тогда ещё на Pascal'е) пришла ко мне в январе 2005-го года.

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

3 нояб. 2008 г.

Факторы, влияющие на успешность проекта

Сразу скажу, что все, что написано ниже - это лишь мои домыслы. Я не даю 100% гарантию, что это действительно так, но факты красноречиво подтверждают мою гипотезу.

Предположим, нам нужно сделать некоторый проект успешным. К примеру, привлечь внимание к фильму/книге/сайту и т.п. Что же поможет сделать наш проект успешным?

  1. Новизна идеи. Безусловно, один из самых важных факторов. Наверное, этот фактор имеет наибольший вес в глазах общественности. Чаще всего он отсутствует, поэтому идём дальше.
  2. Недосказанность. Достаточно приоткрыть завесу некоторой тайны, которая может заинтересовать пользователя. А затем внезапно сказать "ждите продолжения". Избитый, но действенный прием. Красноречивый пример - сериал Lost.
  3. Любопытство. Человек от природы очень любознателен. Я бы даже сказал, человек жаден до знаний. Причем любой человек: и домохозяйка, и научный работник. Только каждый по-своему. Примером игры на любопытстве могут служить сайты с разнообразными статьями вида "10 самых глубоких мест на планете" или фото сиамских близнецов и т.п.
  4. Редкость. Еще один способ увеличения внимания к проекту. Тут уже больше применимо для каких-либо вещей. Люди любят коллекционировать. Обладание редкой (стильной) вещью повышает статус в глазах других людей. Например, обладание iPhone'ом. Правда сейчас его можно купить в любой розничной сети, торгующей электроникой. Поэтому "плоский телефон с одной кнопкой" уже потерял свою ценность.

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