Ранним утром программист спросил великого мастера: — Я готов писать модульные тесты. К какому покрытию кода я должен стремиться? Великий мастер ответил: — Не переживай о покрытии, просто пиши хорошие тесты. Программист улыбнулся, поклонился и ушел.
Немного времени спустя другой программист задала этот же вопрос. Великий мастер указал на котел с кипящей водой и сказал: — Сколько зерен риса я должен положить в этот котел? Программист с озадаченным видом ответила: — Как я могу ответить наверняка? Все зависит от того, сколько людей вам надо накормить, насколько они голодны, какие еще блюда вы подаете, сколько риса у вас есть и от многого другого. — Совершенно верно. — сказал великий мастер. Второй программист улыбнулась, поклонилась и ушла.
В конце дня пришел третий программист, и задал тот же вопрос о покрытии кода: — Восемьдесят процентов и ни строчкой меньше! — строго ответил мастер ударяя кулаком по столу. Третий программист улыбнулся, поклонился и ушел.
После этого ответа, к великому мастеру подошел молодой ученик: — Великий мастер, сегодня я подслушал, как вы дали три разных ответа на один и тот же вопрос о покрытии кода. Почему? Великий мастер встал со стула: — Пойдем со мной возьмем свежезаваренного чая и поговорим об этом.
После того, как они наполнили свои чашки горячим зеленым чаем, великий мастер начал отвечать: — Первый программист — новичок и только начинает писать тесты, сейчас у него много кода и нет тестов. Перед ним длинный путь, и концентрация на покрытии сейчас бесполезна и будет только угнетать. Пускай лучше привыкнет к написанию и запуску тестов. Он может побеспокоиться о покрытии позже. — Второй программист, напротив, довольно опытна в программировании и тестировании. Когда я спросил ее сколько зерен риса мне надо положить в котел, я помог ей осознать, что количество тестов обязательно зависит от многих факторов, и она знает эти факторы лучше меня — это ее код в конце концов. Не существует одного простого ответа, и она достаточно умна чтобы принять правду и работать с этим. — Понятно, — сказал молодой ученик, — но, если нет одного простого ответа, тогда почему вы ответили третьему программисту «Восемьдесят процентов и не строчкой меньше»?
Великий мастер рассмеялся так сильно и громко, что его пузо, доказательство того что он пил не только зеленый чай, запрыгало вверх и вниз: — Третий программист жаждет только простых решений, даже когда их нет. А после, все равно не следует им.
Молодой ученик и седой великий мастер допивали чай в задумчивом молчании…
Добавлено (14.08.2013, 16:35) --------------------------------------------- другая притча:
Однажды к Великому мастеру пришел Простой программист и попросил его, — «о Великий мастер, научите меня писать совершенный код!» У Великого мастера в тот день было плохое настроение и он ответил, — «хорошо, я научу тебя писать совершенный код, но ты должен сначала набраться опыта, ты должен взять 1000 заданий на бирже фриансеров и выполнить их.»
Прошел год. Простой программист снова пришел в Великому мастеру и попросил его, — «о Великий мастер, я работал день и ночь, ночь и день, на протяжении всего года и выполнил 1000 заданий с биржи фрилансеров, научите меня, пожалуйста, писать совершенный код!» В тот день Великий мастер съел несвежего риса и поэтому все его мысли были на уровне пупка Великого мастера, он ответил, — «ты уже набрался опыта, но теперь ты должен научиться терпению, ты должен в течении года поддерживать 10 проектов, написанных студентами, и продажи должны вырасти втрое!»
Прошел еще один год. Простой программист снова пришел к Великому мастеру и попросил его, — «о Великий мастер, я поддерживал 10 проектов, которые были написаны студентами в течении года, за это время от них не отказался ни один заказчик, а продажи выросли в четыре раза, научите меня писать совершенный код!» Великий мастер был погружен в мысли, он вспомнил, как утром его обсчитали на рынке и подсунули гнилых фейхуа, поэтому он ответил, — «чтобы научится писать совершенный код ты должен преодолеть последние испытание, совершенный код требует совершенного спокойствия, поэтому ты должен заработать $1.000.000.000 чтобы ни о чем больше не беспокоиться.»
Прошло три года. Простой программист снова пришел к Великому мастеру и попросил его, — «о Великий мастер, я основал стартап, я вышел на IPO, я пролоббировал законы закрывшие все другие стартапы, я подмял под свой проект весь сегмент рынка, и я заработал $10.000.000.000. Научите меня писать совершенный код!»
Меня зовут Бакаре Тунде, я брат первого нигерийского космонавта, майора ВВС Нигерии Абака Тунде. Мой брат стал первым африканским космонавтом, который отправился с секретной миссией на советскую станцию «Салют-6» в далеком 1979 году. Позднее он принял участие в полете советского «Союза Т-16З» к секретной советской космической станции «Салют-8Т». В 1990 году, когда СССР пал, он как раз находился на станции. Все русские члены команды сумели вернуться на землю, однако моему брату не хватило в корабле места. С тех пор и до сегодняшнего дня он вынужден находиться на орбите, и лишь редкие грузовые корабли «Прогресс» снабжают его необходимым. Несмотря ни на что, мой брат не теряет присутствия духа, однако жаждет вернуться домой, в родную Нигерию. За те долгие годы, что он провел в космосе, его постепенно накапливающаяся заработная плата составила 15 000 000 американских долларов. В настоящий момент данная сумма хранится в банке в Лагосе. Если нам удастся получить доступ к деньгам, мы сможем оплатить Роскосмосу требуемую сумму и организовать для моего брата рейс на Землю. Запрашиваемая Роскосмосом сумма равняется 3 000 000 американских долларов. Однако для получения суммы нам необходима ваша помощь, поскольку нам, нигерийским госслужащим, запрещены все операции с иностранными счетами. Вечно ваш, доктор Бакаре Тунде, ведущий специалист по астронавтике.
еловеческие волосы и ногти продолжают расти и после смерти.
очевидно, не верно, хотя бы потому, что для роста нужно откуда-то брать вещество и энергию и понятно, что если бы волосы могли самостоятельно брать это откуда угодно, то они были бы просто опасны. вставляю то, что быстро нагуглил:
Принято считать, что у мертвого человека волосы и ногти продолжают расти еще на протяжении нескольких часов после смерти.
Однако ученые утверждают, что такое впечатление складывается оттого, что мышцы и кожа мертвого человека сжимаются, и на этом фоне волосы и ногти кажутся длиннее.
Для роста ногтей и волос, говорят специалисты, необходима нормальная работа гормональной системы, которая в момент смерти останавливается.
Согласно научному докладу Рэйчел Врееман, такая же иллюзия и оптический обман заставляют женщин верить, что при частом бритье ног волосы на них растут быстрее и становятся более темными и густыми.
Дело в том, что сбритые волосы прорастают вновь без полупрозрачной "шляпки" на кончике волоса, которая была изначально, и, таким образом, создается впечатление, что волосы становятся темнее и гуще.
12.
Цитата (Hostel)
Если кричать на стакан воды в течении 80 лет, то можно его вскипятить.
очевидно, не верно. возможно, имелось ввиду что-то в духе: "если в один момент передать стакану воды энергию крика в течении 80 лет.." или как-то ещё. но если реально передавать энергию криком стакану воды в течении 80 лет, то эффект будет пренебрежимо малым и переданная энергия не будет накапливаться в стакане воды 80 лет: вода постоянно будет взаимодействовать с окружающей средой.
18.
Цитата (Hostel)
Если у вас одна ноздря закрыта в течение 72 часов, вы будете медленно терять способность видеть цвета.
очевидно не верно. возможно имелось ввиду "если мозг будет получать вдвое меньше кислорода.." или что-то в этом духе.
но если просто закрыть одну ноздрю, то:
во-первых, через одну ноздрю может поступать столько же воздуха сколько и через две, только интенсивность дыхания будет выше. то есть- организм может приспособиться дышать в привычном режиме и с одной ноздрёй.
во-вторых, даже люди с одним работающим лёгким не теряют никаких способностей, включая способности видеть цвета. не смотря на то, что передача кислорода в кровь в этом случае затруднена, организм каким-то образом умудряется справляться с поставками кислорода. вероятно, дело в том, что у нормального человека лёгкие обычно работают далеко не на пределе своих возможностей.
23.
Цитата (Hostel)
Научное название процесса поцелуя – филематология.
очевидно, филематология- название науки. как называется сам "филематологический акт"- увы, не нашёл.
26.
Цитата (Hostel)
Если погаснет Солнце, Земля погибнет всего через... 8 минут 20 секунд.
много неопределённостей. что значит "погаснет Солнце"- чудом перестанет излучать при тех же протекающих процессах или что? что значит "Земля погибнет"- она же не живая. развалится на куски, что ли?
короч- это время, похоже на то, за которое свет доходит от Солнца до Земли(кто хочет узнать точно- ищите в нете). то есть, если Солнце вдруг вообще исчезнет, то до Земли первые изменения от этого докатятся лишь через 8мин. при этом Земля может продолжит лететь себе в космосе, постепенно остывая. то есть, жизнь на планете затухнет не сразу. и врезаться в ближайшие минуты Земле, сошедшей с орбиты будет не во что- расстояния между планетами огромные. то есть, по-любому Земля не погибнет так быстро.
36.
Цитата (Hostel)
Каждый раз, когда вы чихаете, некоторые мозговые клетки у вас в голове отмирают.
не верю!
и вообще хорошим тоном является указывать источник сведений, какой вообще повод есть так думать, иначе сведения автоматически выглядят сомнительными.
в противовес фэйковым фактам есть подборка разоблачений распространённых мифов:
Цитата
Ученые из Университета Индианы в американском штате Индианаполис попытались развеять некоторые мифы относительно того, что вредно, а что полезно для нашего здоровья. Например, с детства людей приучают к мысли, что читать при тусклом свете - вредно для зрения.
Практически каждую молодую девушку старшие подруги предупреждают, что как только она начнет брить ноги, волосы на них станут расти еще быстрее.
Или, например, многие убеждены, что люди в среднем задействуют лишь 10% возможностей человеческого мозга.
Однако исследования американских ученых не подтверждают ни одно из этих предположений. По их словам, некоторые мифы вообще не имеют под собой научной основы.
К примеру, распространенное мнение о том, что выпивать восемь стаканов воды в день - полезно для здоровья, до сих пор никак не было подтверждено практическими опытами.
Напротив, исследования показали, что необходимый баланс жидкости в организме помогает соблюсти вовсе не вода, а соки, молоко и даже чай или кофе.
Более того, ученые предупреждают, что слишком большое количество выпитой воды может быть опасным для человеческого организма.
Мнение о том, что люди лишь на 10% используют возможности мозга, ученые также назвали научно не обоснованным мифом.
Наблюдения за пациентами с мозговыми травмами показали, что повреждения любой части мозга одинаково негативно сказываются на умственных способностях, вегетативной системе и на манере поведения.
Таким образом, ученые утверждают, что у человеческого мозга нет ни одного незадействованного или нефункционирующего участка.
Принято считать, что у мертвого человека волосы и ногти продолжают расти еще на протяжении нескольких часов после смерти.
Однако ученые утверждают, что такое впечатление складывается оттого, что мышцы и кожа мертвого человека сжимаются, и на этом фоне волосы и ногти кажутся длиннее.
Для роста ногтей и волос, говорят специалисты, необходима нормальная работа гормональной системы, которая в момент смерти останавливается.
Согласно научному докладу Рэйчел Врееман, такая же иллюзия и оптический обман заставляют женщин верить, что при частом бритье ног волосы на них растут быстрее и становятся более темными и густыми.
Дело в том, что сбритые волосы прорастают вновь без полупрозрачной "шляпки" на кончике волоса, которая была изначально, и, таким образом, создается впечатление, что волосы становятся темнее и гуще.
Ранее считалось, что мясо индейки содержит повышенное количество вещества триптофана, поэтому человека, съевшего на обед кусок индейки, начинает клонить в сон. Однако новые исследования доказали, что это не так. Мясо индейки и курицы, а также говядина содержат одинаковое количество триптофана и абсолютно безвредны для здоровья.
Тем не менее, ученые заявляют, что мифы, во власти которых пребывают многие люди, хотя и являются абсолютно необоснованными, не могут навредить тем, кто беспрекословно им следует.
вообще такой подборке без ссылок на уважаемые источники тоже веры мало. но похоже на правду. а подробности можно нагуглить. вот, например о мифе о 10% используемого мозга есть хорошая статья в википедии. все правила форумной игры Дуэль Программистов
Сообщение отредактировал noname - Среда, 17 Июля 2013, 16:50
Просто тут сидят четыре калеки - от них не холодно не жарко конкурсу.
ну тогда есть шанс, что калекам больше достанется ))
Цитата (Я_Двоечник)
АКСМА значит теперь свои проводит и в КРИЛе не участвует?
да, КРИЛ в этом году беднее, чем в прошлом.
но, вообще, хорошо, что конкурс АКСМы теперь отделён от КРИЛа- у них разная направленность. аксма поддерживает тех кто пишет именно на аксме а в криле участвуют все компьютерные текстовые игры за 2013 год, на всех движках.
в этом месяце пока что не написано ни одной новой игры на аксма. в конкурсе участвуют 7 игр с предыдущих месяцев. причём лучшие из них написаны ещё в позапрошлом месяце и участвуют в последний раз.. короче- изучайте аксму и у вас есть шанс. конкурс ежемесячный, а авторов мало, так что шансы хорошие.
Добавлено (12.06.2013, 19:47) --------------------------------------------- упс, там появилась игра, которая может затмить все предыдущие: http://hyperbook.ru/comments.php?id=13709457675609 не удивлюсь, если она будет срубать всё бабло три месяца подряд.
наиболее денежный из конкурсов текстовых игр проходит здесь: http://forum.ifiction.ru/viewtopic.php?pid=28445#p28445 это ежемесячный конкурс, присланная игра участвует в конкурсе три месяца подряд. победителю каждый месяц выплачивается 3тыс рублей. приз может быть разделён между двумя участниками. все правила форумной игры Дуэль Программистов
хорошая тема, только картинки в первом сообщении не показываются.
есть ещё такой урок: http://twinstudios.ru/forum/index.php?topic=271.0
и, помню, когда-то я подключил без урока и возникли некоторые непонятки, с которыми разбирался здесь: http://gcup.ru/forum/45-19693-1 что-то из того может возникнуть и у подключивших по уроку. все правила форумной игры Дуэль Программистов
я уже всё описал и всё друг с другом логически связал
ты, образно выражаясь, описал дворцы, я же хочу докопаться до описания кирпичей.
нужно выстроить цепочку от информации к реакции. то есть- доступна боту какая-то информация. что из неё будет выделять бот, на что будет реагировать, как он будет превращать инфу в реакцию. не обязательно расписывать прям точный алгоритм, но мне кажется, что пока что тут вообще полные непонятки.
и ещё я начинаю понимать, что разнообразие информации, которое должен получать бот и разнообразие возможных его реакций, должно быть очень большим, чтобы получилось похоже на то, что вы расписываете.
вот например:
Цитата (eretik-games)
Допустим, убили короля... Эта весть пронеслась по всему игровому миру, от одного бота к другому, с какими то возможными искажениями или недосказами...
то есть, помимо прочего, персонаж будет учитывать ещё и слухи. надо бы подумать, как персонаж будет обрабатывать слухи и в чём будет заключаться его реакция на такой слух.
но и без слухов- адекватная реакция на то, что происходит вокруг персонажа- это уже непросто.
самое сложное в этом- создать мир и продумать правила взаимодействия персонажей.
и надо ещё подумать заранее, что мы получим на выходе. в какие ситуации должны попадать персонажи и какие варианты выбора должны быть им доступны, чтобы участвовать во всём этом было бы интересно?
Эти параметры будут вписаны в персонажа, если у него есть упрямство то true если нет то false(ну или 1 и 0 кому как больше нравится) Параметры раскидываются при создании персонажа в зависимости от типа характера(каждый характер содержит набор параметров НО! имеет смысл сделать рандомайзер т.к. нет сто процентных овенов и раков, к примеру создается персонаж овен но он получает лишь 80% параметров овна). Но для этого нужно создать болванку, набор параметров по умолчанию.
да, рандомайзер имеет смысл делать, и более того.. я бы вообще задал все параметры случайно.
к примеру "лень - трудолюбие" - это один параметр от 0 до 255, где 0 означает максимальную ленивость, а 255- максимальное трудолюбие.
но как потом применять лень в конкретной ситуации?..
причём, как верно заметил paranoya, человек может вести себя в разных обстоятельствах по-разному.
я бы предложил для каждого теоретически возможного действия вычислять оценку его "желательности" по шкале от 0 до 100. и чтобы вероятность выбора действия была прямо пропорциональна его желательности. а оценка желательности опирается на параметры персонажа. а параметров у персонажа должно быть ровно столько, сколько всего есть возможных действий в игре и весь этот набор параметров полностью определяет стратегию данного конкретного персонажа.
например: действие "купить мороженое"(a,b,c,d,e,f) a- количество денег b- цена мороженого c- уровень сытости d- сытность мороженого e- параметр персонажа от 0 до 5, связанный с этим действием f- максимальный уровень сытости
оценка желательности действия "купить мороженое"= min( ((a div b)*( ((f-c)div d) +1 )*e), 100) - когда будут известны конкретные цены на мороженое и по какой шкале считается сытость, формулу можно будет настроить- добавить поправочные коэффициенты, чтобы в итоге получилось следующее: при e=0 персонаж никогда не ест мороженого(оценка желательности = 0), а при e=5 оценка желательности мороженого должна быть = 100, если только хватает денег. если денег не хватает, то оценка желательности должна быть равна 0.
и нужно хотя бы одно действие, оценка которого всегда выше нуля, дабы всегда было что выбрать. пусть, например, оценка действия "ничего не делать" всегда будет равна 1.
вначале персонажей генерим полностью рандомно. потом, прежде чем пускать в мир игрока, хорошо бы прокрутить десяток поколений, чтобы вымерли все неадекватные стратегии и размножились более-менее разумные.
самое сложное в этом- создать мир и продумать правила взаимодействия персонажей.
и надо ещё подумать заранее, что мы получим на выходе. в какие ситуации должны попадать персонажи и какие варианты выбора должны быть им доступны, чтобы участвовать во всём этом было бы интересно?
хотя.. можно сделать ещё проще: составляем список возможных в данной ситуации действий. пусть, у нас будет действие "купить мороженое, чтобы тут же его съесть", которое возможно если достаточно денег на мороженое И если уровень сытости такой, что ещё одно мороженое в тебя влезет. тогда оценка желательности этого действия- и есть один из параметров игрока. вообще без формул.
чтобы персонажи вели себя разумно, придётся заморочиться с выдумыванием действий. будут даже выбираться не действия, а целые последовательные линии поведения. иначе поведение будет уж слишком хаотичным. напр, может быть действие: "купить мороженое, чтобы хранить в холодильнике до тех пор, пока не придёт в гости подруга и затем угостить её" - -это действие возможно, если хватает денег на мороженое И есть подруга И есть холодильник И достаточно места в холодильнике. составлять такие действия- это замороч. но зато в этом случае поведение персонажа будет последовательным, а естественный отбор сможет приводить к выбору наиболее выигрышных линий поведения.
Для начала давайте составим список возможностей нашего персонажа и на основе этого списка будем составлять список переменных используемых нашей сущностью
для этого хорошо бы сначала описать мир, чтобы оценить возможные способы взаимодействия персонажей и их последствия.
Мне больше по душе знаки зодиака они более подробно раскрывают личность
способов классификации очень много. можно соционику почитать- там насчитывают до 32 типов характера, а может уже и больше.
НО нам нужна такая классификация, которая даст ответ, как поступать в каждом возможном в нашем мире случае и лучше заводить характеристики исходя именно из этого, чтобы создать классификацию, которая будет давать ответы на все возможные ситуации и которая не будет содержать ничего лишнего. все правила форумной игры Дуэль Программистов
А для любознательных по-русски и понятно алгоритм Deflate описан тут:
http://www.compression.ru/book/
только там номера страниц книги не совпадают с номерами страниц pdf-документа. пришлось искать deflate поиском. нашёлся на 61-й странице вместо 82. все правила форумной игры Дуэль Программистов
при архивации с паролем, пароль используется в генерации выходного файла. при этом пароль в выходном файле НЕ хранится и вообще нигде никак не сохраняется.
при разархивации если вы введёте такой же пароль, то получите именно те данные, что были заархивированы.
если введёте другой пароль- разархивация попытается происходить точно так же. скорее всего при этом или алгоритм распаковки столкнётся с неразрешимой ситуацией или какая-нить контрольная сумма не совпадёт. но, теоретически, есть мизерный шанс, что другой пароль даст на выходе какой-то результат и будут получены какие-то файлы, совсем не похожие на исходные.
короч, что я хочу сказать: даже зная формат zip и точно зная алгоритм шифрования, отличить верный пароль от неверного можно будет только одним способом: попробовать расшифровать архив с помощью этого пароля и посмотреть, что получится. все правила форумной игры Дуэль Программистов
Сообщение отредактировал noname - Суббота, 11 Мая 2013, 18:44
дизайн игрового поля поля МОО не связано с геймдзайном? В какую тему тогда постить?
но ведь ты не про дизайн игрового поля спрашиваешь. а про его внутреннее представление. постить в общие обсуждения программистов.
Цитата (KPECT)
Какая структура хранения должна быть, как просчитать пути и расстояния между звездочками
хранить координаты звёзд нужно по-любому для отрисовки карты. причём даже в MOO1 эти координаты как бы трёхмерные- то есть звёзды могут быть чуть выше или чуть ниже уровня плоскости. это учитывается при отрисовке размера звезды и при подсчёте расстояний между звёздами. то есть, расстояние между звёздами может оказаться чуть больше, чем если бы они были совсем на плоскости.
в играх типа EndlessSpace имеет смысл хранить ещё и инфу о межзвёздных путях- таблицу, о которой ты написал.
а в MOO1,2, впринципе, возможен полёт от любой звезды к любой другой. так что хранить такую таблицу не нужно- мы и так храним координаты всех звёзд.
расстояние между звёздами вычисляется по формуле R= SQRT(dx^2 + dy^2 + dz^2), где R- расстояние, dx, dy и dz - разница координат по соотв оси (dx= x1-x2 и т.д.), значок ^2 означает возведение в степень. SQRT()- квадратный корень.
возможно, для каждого игрока придётся хранить координаты звёзд, куда он может добраться на достигнутом этапе развития. связи между ними, опять же, хранить не имеет смысла, потому что можно путешествовать от любой доступной звезды к любой другой. все правила форумной игры Дуэль Программистов
Сообщение отредактировал noname - Понедельник, 06 Мая 2013, 10:07
Если говорить о человеке и влиянии ума и технологий на него - "Человек - невидимка" у того Уэллса очень хорош.
а если говорить по теме?
Цитата (noname)
знаете ли вы ещё интересные литературные произведения, по ходу которых изменения затрагивают весь мир, И в которых состояние мира важно для сюжета?
ну, вот, в романах Толкиена, в тех областях, которые не затронуты злом, ничего не меняется- не появляется новых изобретений, не меняется привычный уклад жизни. а если бы и менялось, то главному хоббиту это по фик- он кольцо несёт и социальные вопросы его не заботят.
так же и в "человеке невидимке", как и во многих других фантастических произведениях, мир не меняется. если и есть новые изобретения, то они влияют только локально, обычно- лишь на события вокруг героя и антигероя. а остальной мир остаётся таким, каким был до начала романа.