програмазм

Примерно 5 лет назад я смотрел по каналу Дискавери передачу о человеческом восприятии. Там демонстрировались различные оптические эффекты, основанные на обмане зрения, а затем объяснялись причины их появления.

Главная мысль сводилась к тому что человеческий мозг, в целях “экономии”, 80% окружающей нас действительности додумывает сам. И иногда это “додумывание” неожиданным образом проявляется в описанных эффектах.

Примеры оптических иллюзий можно обнаружить в гугл-картинках указав в запросе “обман зрения”.

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

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

Однажды, преподаватель по программированию дал мне задание написать несложную компьютерную игру. Целью было продемонстрировать умение создавать простой GUI (графический пользовательский интерфейс). Свободного времени было много, поэтому я решил оторваться от стандартных “сапёров” и крестиков-ноликов. В качестве основы я выбрал великую игру всех времён и народов – “Танчики”, или Battle Tank. Если вы не знаете что это такое, то вы не знаете что такое видео-приставки.

Поднимаясь по лестнице абстракций, я вырастил из стандартных типов данных (как то integer, byte, string) новые абстракции: танки, кирпичи, снаряды, стены. Всё это, в виде исходных байтов и стрингов, спокойно лежало в массивах. 12 часов не отрываясь от компьютера, я самозабвенно ваял и ваял. И вот, запустив программу уже в чёрт-знает какой раз, я начал плавно сползать под стол от увиденного на экране: программа начала бунтовать. В неё словно вселился разум, потому что она с неистовством начала уничтожать танки: стены стали перемащаться по карте, окружать танки, сжигать их, реконструироваться. На экране творился жёсткий “дурдом”.

В итоге выяснилось что одна функция вышла по индексу за пределы массива. Русским языком это значит, что я ошибся и программа начала “сходить с ума”. Считывая откуда-попало данные.

Выход индекса за пределы массива, частенько приводит к курьёзам. Одним из них стала разработка непомню-какой игры. Ребята писали РПГ. Сидели уже несколько часов и конструировали главную героиню: лучницу. Героиня ещё ничего не умела, только тупо стояла посреди игровой карты и теребила в руках лук. И вот, после очередной компиляции, програмеры выпучивают глаза, потому что их подопечная, резко сорвалась и начала бегать по экрану, словно в неё вселился бес. Бесом оказалась одна из куриц, которая послась неподалёку: ошибка адресации привела к тому, что управление курицой (которой полагается прогуливаться и клевать) переключилось на лучницу.

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

Так вот. Если однажды начнётся “Война людей и машин”(с), то скорее всего её причиной станет “Out of rage error!” Не пугайтесь если вдруг на соревнованияхBattleBots робот решит отпилить вам ногу. Он не хотел.

3 Responses to “програмазм”


  1. 1 alenaroo November 5, 2006 at 7:09 pm

    Хорошая мысль. :-) У меня есть знакомый, который еще в советские времена занимался в одной лаборатории роботами. Так вот, на частоте, которую они использовали для управления роботами, иногда возникали помехи из соседнего завода. В результате однажды один из роботов подъехал сзади к одной одной женщине и довольно жестоко начал ее бодать. :-( После этого, кажется, исследования потихоньку прикрыли. Было ли это связано с бунтом машины, не знаю…

  2. 2 fieral November 5, 2006 at 7:15 pm

    Ээээнда. :)
    Стоит не забыть об этом при проектировании “живой брони”. :)


  1. 1 Tanks « Fieral Trackback on October 9, 2008 at 2:46 am

Leave a Reply




Fieral

heap

http://fieral.files.wordpress.com/2009/05/sr1701.jpg?w=30 http://fieral.files.wordpress.com/2009/05/logo.gif?w=30 http://fieral.files.wordpress.com/2009/05/plast.jpg?w=30 http://fieral.files.wordpress.com/2009/05/leo.jpg?w=30http://fieral.files.wordpress.com/2009/05/livejournal_logo.jpg?w=30

http://fieral.files.wordpress.com/2009/05/images.jpeg?w=30 http://fieral.files.wordpress.com/2009/05/flickr_logo_gamma-v59899.gif?w=40 http://fieral.files.wordpress.com/2009/05/flickr_logo_gamma-v59899.gif?w=40 http://fieral.files.wordpress.com/2009/05/160rss_boite.png?w=30