среда, 28 ноября 2012 г.

Занятная социальная задачка.

  Вы находитесь в дальнем рейсе, на неисправном космическом корабле. Реактор работает в аварийном режиме: энергии не хватает. Двигатели корабля работают нормально, а вот системы жизнеобеспечения частично отключены.

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

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

  Дополнительные сведения: до точки назначения корабль будет лететь ещё около десяти лет. Пассажиры корабля представляют собой обычный срез общества: примерно такой, какой можно найти во взятом наугад полном поезде метро.

Теперь, внимание, вопрос.

  Как полагаете, как будет решаться на корабле вопрос с распределением доступа к каюте с тренажёрами и к здоровой еде? Будут ли устраивать узники неисправного корабля драки с поножовщиной за право доступа к этим ресурсам? Или же они спокойно договорятся о справедливой очерёдности питания и тренировок?
Оригинал

вторник, 6 ноября 2012 г.

О полиморфизме.

Не момню источник, давно было. Но как-то возник разговор опять на тему "что такое виртуальная функция"...

Полиморфная функция - функция у которой хотя бы один аргумент является полиморфным.
Полиморфный аргумент - переменная, принимающая значения разных типов.

Всякие подвиды полиморфизма:
  • Ad-hoc - функция ведет себя по разному для аргументов разных типов. Пример  - практически любая виртуальная функция.
  • Параметрический - функция ведет себя одинаково для аргументов разных типов. Пример - добавляем элемент в гетерогенный контейнер.
  • Естественный полиморфизм - информация о типе переменной приходит вместе с переменной.
  • Искуственный - информация о типе переменной приходит отдельно. Пример - printf плюсовый. 
  • Статический - типы известны во время компиляции.
  • Динамический - типы во время компиляции не известны.


Теперь что такое виртуальная функция.
Это ad-hoc полиморфная функция по одному (неявному - this) аргументу. Все.