Вспомнился пример с якорями. Одна фирма выпустила совершенно новый товар на рынок (забыл что именно, что-то типа пароварки). Выпустить выпустила, но никто его не брал. Тогда эта же фирма выпустила вторую модель: больше, хуже и дороже. Вторую модель естественно никто не стал покупать, зато все начали покупать первую, поскольку стало видно с чем сравнивать, и видна цена, за которую можно зацепиться.
Всю морда и красивые графики можно рисовать и на .NET, а именно саму критичную по времени работу с железяками нужно выносить в unmanaged. Это правильное поведение, при этом не такое уж и сложное, с учётом того, что с железяками .NET работать не умеет и будет идти всё равно через какой-нить враппер, дающий тормоза.
Для реального использования можно рассчитывать на успех с учетом, что время реакции может доходить до 30мс.
С редкими провалами на несколько секунд, из-за работы GC или внутренних дел Windows.
Используем unsafe код в отдельном потоке, GC не вмешивается.
Зачем вам .NET в таком случае? Все подобные задачи решаются использованием отдельной библиотеки на unmanaged-коде. Будет гораздо быстрее, надёжнее и эффективнее.
Я правильно понял, прочитав вашу статью, что её смысл заключается в том, что если пошаманить с приоритетами, то от .NET можно добиться реакции в 1мс на сферическом процессоре в вакууме, и если мы не попали на офигенную задержку из-за работы GC? Или есть какой-то более глубокий смысл?
1. У вас 3 двери. Вы указываете на любую из них. Из условия вычёркивается одна дверь. Всё.
Тут ошибка. Из условия вычёркивается одна дверь, которую вы не выбирали и за которой нет автомобиля. Это крошит всю равномерность.
Первый выбор приводит к тому, что невозможно уже вычеркнуть любую из остальных. Двери становятся разными, и несмотря на то, что вероятность открыть любую из дверей одинаковая, за дверями уже находится разное количество машин.
Приз лежит за одной из 2-х дверей с вероятностью 50%
Неа.
Вы никак не можете связать два события в одно целое и пытаетесь решать задачи по-отдельности, что неверно. Если решать задачу целиком, а не только хвостик, то всё получается корректно. Давайте даже покажу вам на пальцах:
Предположим приз в первой двери. Вы выбираете первую, не меняете — win, меняете — fail
Вы выбираете вторую: меняете — win, не меняете — fail
Вы просто забыли один факт: ведущий выбирает из оставшихся дверей не случайно. Т.е. если бы вам завязали глаза, ведущий рандомно выбрал дверь показал всем зрителям: есть там приз или нет и закрыл дверь, то для вас ничего бы не изменилось. Ключевой момент в том, что ведущий никогда не откроет дверь с автомобилем. А поскольку поведение ведущего не случайное, то события первого и второго открытия дверей зависимые, и дверь таки стоит изменить.
Какие бы манипуляции не проводились, в конечном итоге нам нужно выбрать из двух дверей с вероятностью 50%.
Вы абсолютно правы! Только за одной дверью приз лежит с вероятностью 1/3 а в другой с вероятностью 2/3 Я бы выбрал вторую.
С другой стороны математики и читатели воскресной газеты, в которой Мэрилин высказала свою точку зрения на вопрос, менять или нет, дверь. Она получила несколько десятков тысяч отзывов, из которых более сотни были написаны дипломированными математиками, докторами наук. 92 процента написавших считали, что Мэрилин ошибается.
Не верю, что любой вменяемый математик будет считать что Мэрилин ошибается. Задача элементарно решается на бумажке (раскладываются все вероятности), т.е. любой математик без воображения должен тупо посчитать. С другой стороны 8% от нескольких десятков тысяч это гораздо больше сотни, поэтому возможно что все математики ответили правильно :)
Такой функционал вроде бы есть. То ли он встроен в студию и заблокирован по дефолту, то ли решается отдельным плагином, но расшаривать окошко с кодом в студии можно, я видел демонстрации этого, но за ненадобностью забыл детали.
Если вам действительно это нужно, то можете поискать, или подождать комментариев.
Антипаттерн «Программирование с помощью перестановок».
Заключается в том, что берётся неработающий кусок кода и маленькими изменениями программист пытается заставить его работать, изменения повторяются до тех пор, пока не получится нужный результат. Например код if(a[i++] < b[i]) ... будет меняться на if(a[i] < b[i]) ... или if(a[i++] <= b[i]) ... или if(a[i+1] <= b[i]) ... или if(a[i] <= b[i-1]) ... до тех пор, пока не получится :)
Используется обычно для того, чтобы правильно попасть на граничные условия, или же в совершенно непонятном коде.
Боюсь, в день программиста мне будет не до плюшек :) В этот день моё бездыханное тело будет лежать под столом в BSODe 0xFF IRQL_BEER_OFERFLOW в голове будет летать байт-код, а на любые попытки активации тела, оно будет отвечать звуком системной ошибки :)
А вообще, откройте секрет, пользуются в ли в Microsoft бубнами? Просто я на каком-то мероприятии видел ролик про Deployment Services, где админы били во вполне настоящий и сильно потрёпанный бубен. И эта потрёпанность как бы намекала, что бубен достали не ради видео.
Ээх… настоящий сисадминский бубен. Всю жизнь о таком мечтал, хоть и программист :) Пока вместо него использую мёртвую материнскую плату, при капризном железе нужно потанцевать вокруг с песнопениями, оторвать конденсатор и пригрозить что так будет с каждой нехорошей железякой. И ведь помогает :) Что же будет с настоящим бубном.
А вообще, поздравляю всех сисадминов с их нелёгким трудом, желаю холодного пива с холодными серверами тёплыми вечерами.
ЗЫ: Пойду завтра подарю колечко из витой пары админам, пусть порадуются :)
Теперь он может извлекать из любых банкоматов изученных им моделей купюры до тех пор, пока они не закончатся в самом банкомате.
Вот если бы не последнее условие, было бы гораздо интереснее и полезнее. :)
Если этот хлюпик выразил желание носить мои деньги, то профилактически его стукнуть стоит, чтобы передумал. Пусть электрошокер возьмёт или пару охранников и после этого таскает деньги. Или пусть оденет бронекостюм и не шляется ночью по подворотням.
Вот относительно SQL-инъекций, я считаю что можно и нужно ломать эти сайты. Данные уничтожать не стоит, конечно, но уронить его стоит. А всё потому, что это одна из самых идиотских ошибок в безопасности которую не знаю от чего только можно допустить, наверное только от квалификации разработчика на уровне плинтуса. Поэтому если писать владельцам сайта, то это всё долго будет тянуться, а в это время кто-нибудь более злой, просто тихо будет воровать важную информацию с сайта.
Поэтому лучше пристрелить сайт, чтобы не мучался и тем самым обезопасить всех остальных людей от потери информации. Это как увидеть незакрытый сейф в банке и взорвать подходы. В результате никто не сможет пробраться к сейфу, пока не исправят всё, но и деньги никто не украдёт тоже!
С редкими провалами на несколько секунд, из-за работы GC или внутренних дел Windows.
Используем unsafe код в отдельном потоке, GC не вмешивается.
Зачем вам .NET в таком случае? Все подобные задачи решаются использованием отдельной библиотеки на unmanaged-коде. Будет гораздо быстрее, надёжнее и эффективнее.
Тут ошибка. Из условия вычёркивается одна дверь, которую вы не выбирали и за которой нет автомобиля. Это крошит всю равномерность.
Первый выбор приводит к тому, что невозможно уже вычеркнуть любую из остальных. Двери становятся разными, и несмотря на то, что вероятность открыть любую из дверей одинаковая, за дверями уже находится разное количество машин.
Вы выбираете третью: меняете — win, не меняете — fail
итого 1:2 за смену.
Неа.
Вы никак не можете связать два события в одно целое и пытаетесь решать задачи по-отдельности, что неверно. Если решать задачу целиком, а не только хвостик, то всё получается корректно. Давайте даже покажу вам на пальцах:
Предположим приз в первой двери. Вы выбираете первую, не меняете — win, меняете — fail
Вы выбираете вторую: меняете — win, не меняете — fail
Вы абсолютно правы! Только за одной дверью приз лежит с вероятностью 1/3 а в другой с вероятностью 2/3 Я бы выбрал вторую.
Не верю, что любой вменяемый математик будет считать что Мэрилин ошибается. Задача элементарно решается на бумажке (раскладываются все вероятности), т.е. любой математик без воображения должен тупо посчитать. С другой стороны 8% от нескольких десятков тысяч это гораздо больше сотни, поэтому возможно что все математики ответили правильно :)
Если вам действительно это нужно, то можете поискать, или подождать комментариев.
Заключается в том, что берётся неработающий кусок кода и маленькими изменениями программист пытается заставить его работать, изменения повторяются до тех пор, пока не получится нужный результат. Например код if(a[i++] < b[i]) ... будет меняться на if(a[i] < b[i]) ... или if(a[i++] <= b[i]) ... или if(a[i+1] <= b[i]) ... или if(a[i] <= b[i-1]) ... до тех пор, пока не получится :)
Используется обычно для того, чтобы правильно попасть на граничные условия, или же в совершенно непонятном коде.
PS: Ещё раз с праздником всех сисадминов! :)
А вообще, откройте секрет, пользуются в ли в Microsoft бубнами? Просто я на каком-то мероприятии видел ролик про Deployment Services, где админы били во вполне настоящий и сильно потрёпанный бубен. И эта потрёпанность как бы намекала, что бубен достали не ради видео.
А вообще, поздравляю всех сисадминов с их нелёгким трудом, желаю холодного пива с холодными серверами тёплыми вечерами.
ЗЫ: Пойду завтра подарю колечко из витой пары админам, пусть порадуются :)
Вот если бы не последнее условие, было бы гораздо интереснее и полезнее. :)
Поэтому лучше пристрелить сайт, чтобы не мучался и тем самым обезопасить всех остальных людей от потери информации. Это как увидеть незакрытый сейф в банке и взорвать подходы. В результате никто не сможет пробраться к сейфу, пока не исправят всё, но и деньги никто не украдёт тоже!