?

Log in

No account? Create an account
nyaload

Журнал Пушыстого

Журнал Пушыстого

Entries by category: авиация

Смещенная выборка
nyaload
_winnie
Во время Второй мировой войны математика Абрама Уайльда попросили определить, где надо усилить броню у английских самолётов-бомбардировщиков. После анализа повреждений, он рекомендовал усилить броню там, где по статистике повреждений не было!

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

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

Пересказ-перевод http://www.johndcook.com/blog/2008/01/21/selection-bias-and-bombers
Tags:

Не понимаю паттерны.
nyaload
_winnie
2/3 паттернов - это частный подвид общего паттерна


class A[: B]
{
  ptr<C> m_c; //либо:
  std::vector<ptr<C> > m_c;

  //где ptr - либо в-одиночку-владеющий_ptr, либо shared_ptr, либо weak_ptr

  [virtual] [ptr][D | void] Foo()
  {    
    [if (m->Q) | while (m->R)]
        [for each]m_c->Bar();
  }
};
_Winnie C++ Colorizer



Вообщем, любое можно взять синтаксическое дерево, порождающее класс, и обозвать его "паттерном".
Все эти паттерны плавно и непрерывно друг в друга перетекают и являются вырождеными/общими случаями друг друга.
Имхо, все остальные паттерны можно назвать частным случаем паттерна "стратегия". Просто иногда стратегии сложные. А иногда очень простые. А иногда их много. А иногда ни одной. А иногда метод Foo чуточку сложнее. А иногда кто-то кого-то создаёт.
Или бывает, что класс параметризуют самим себя(или суперклассом) - "прокси", "цепочка обязанностей", "composite", "забыл-как-называется-про-рамочку-вокруг-окна-добавление-функциональности"
Или вообще-то он параметризуются, но пользователю этого делать не дают - "Фасад".

Единственная ценность - обсуждение проблем и преимуществ в каждом конкретном случае. Просто интересная делёжка опытом, "а если сделать так, то вот такие грабли".
Нафиг их "называть" как-то? Их же как и чисел, очень много. А паттернов "Pi", "E", "0", "1" я не вижу. Вижу только "666", "747"(боинг), "2005".
Кроме основных понятий "объект", "(виртуальный)метод", "указатель", "интерфейс", "создание объектов" и тп.
И главного guideline - "разделяейте обязанности, минимизуруйте зависимости".

Единственное, что как-то сильно у меня в голове выбивается из этой схемы и что я сходу вспомнил - это "Итератор". А остальное - частные случаи стратегий.