Rambler's Top100


Архив рубрики ‘Программирование’

Асы кодирования

05.09.2007

Высший пилотаж

Когда проект по разработке ПО1 только начинается, то появляется масса интересных задач, которые надо решить. Но очень быстро - задолго до того, как проект готов к промышленной эксплуатации (внедрению) - количество таких задач резко падает. Их становится всё меньше. Проект становится всё “неинтересней”. Кто-то срывается - уходит на новый проект где он снова столкнётся с массой новых задач, требующих решения. И он теперь крут - он решал эти задачи, он “опытный сеньор”. Назовём таких специалистов условно специалистами типа С.

Но кто-то остаётся и продолжает вести проект к победному моменту, когда он будет установлен на машинах заказчика. И вот в этот знаменательный момент начинается тот самый саппорт, когда появляются реальные проблемы, которые не встречались во время тестирования. Появляются проблемы юзабилити, пифоманса (т.к. система начинает работать под реальной нагрузкой). Появляются очень неожиданные проблемы, связанные со спецификой эксплуатации. Появляются проблемы, которые надо решать в течении нескольких часов. Так рождаются специалисты типа А - Асы.

(more…)

Компьютерный мозг. Часть III: RTS

04.09.2007

см. Компьютерный мозг. Часть I
см. Компьютерный мозг. Часть II: первая жертва

Эмблемма GDI из игры Command & ConquerСразу скажу, что я не крупный специалист в создании алгоритмов для компьютерных соперников в стратегиях реального времени (real-time strategy - RTS). Но, в конце концов, почему бы мне не порассуждать на эту тему? Тем более, что RTS - моя любимая разновидность игр. RTS - это те же шахматы, только приближенные к реальности, динамичные. RTS заставляет вас мобилизовать ваши аналитические способности, заставляет вас решать задачи в условиях ограниченного времени, заставляет принимать “судьбоносные” - в контексте игры - решения.

Но, как правило, сильный вначале AI1 виртуального соперника, начинает сдавать по мере того, как живой игрок - вы - набирает опыт игры. Динамичность RTS накладывает очень серьёзные ограничения на возможности программистов, которые пишут код AI. Процессор занят обработкой больших объёмов данных, необходимых для построения сцены, и каждый процент времени, выделяемый работе AI, на вес золота. Шахматный перебор и оценка позиций здесь уже не подходят. Позиций и “фигур” в RTS куда больше.

Что же делать несчастным программистам?

(more…)

Компьютерный мозг. Часть II: первая жертва

30.08.2007

см. Компьютерный мозг. Часть I

Начальное положение фигур в шахматахНе так давно в новостях промелькнула информация о том, что канадским специалистам из Университета провинции Альберта удалось создать “непобедимую компьютерную программу” для игры в шашки, которую они назвали Chinook [1].

Как такое может быть?

Возможное количество позиций в 64-клеточных шашках составляет около 5 квинтиллионов1. Для того, чтобы их просчитать, Джонатану Шефферу понадобилось 18,5 лет. Все позиции перебирать даже не пришлось: для доказательства хватило 100 триллионов2 комбинаций - многие из них могут считаться эквивалентными. Все данные сохранены и теперь программа просто знает наилучший ход для каждой позиции.

(more…)

Решения с наскоку

28.08.2007

Круг принятия поверхностного решенияВсем известна пословица “тише едешь - дальше будешь”. Впервые я её услышал в детском саду, но истинный смысл стал постигать не так давно. Здесь я хочу применить данное утверждение к процессу решения задач. Любых задач.

Как мы решаем задачи? Прежде всего, мы стараемся решить задачи быстро. Такой подход сродни латанию дыр: мы, не углубляясь в суть проблемы, пытаемся оперативно исправить ситуацию, решить проблему в кротчайшие сроки. Часто это происходит тогда, когда сам процесс решения задачи нам не интересен - мы не ожидаем от него получения новых знаний (не видим такой возможности), а значит промедление лишь отнимет у нас время. В других случаях есть внешние (иногда неустранимые) факторы, вынуждающие нас следовать таким путём. Ключевое слово здесь - оперативно. Когда вы встречаете его, знайте, что речь идёт в поверхностном подходе к решению задачи.

(more…)

Компьютерный мозг. Часть I

26.08.2007

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

Однако здесь я хочу затронуть более приземлённую тему - тему ИИ в компьютерных играх.

(more…)