Ночной дозор всем выйти из. Всем выйти из сумрака

По моему псевдониму нетрудно догадаться, кто является моим любимым писателем. Поэтому на это интервью я шла с особым волнением - мне предстояло встретиться не просто с известной личностью, а с человеком, которого я искренне уважаю и чье мнение для меня важно. Мы расположились за небольшим столиком в кабинете писателя, запаслись вкусным тортом, чашками с чаем, и начали разговор.

- Сергей, естественно, во время бума, связанного выходом фильма по "Ночному дозору" , вопросов о нем не избежать. Скажите, а что Вы почувствовали, когда Вам было сделано первое предложение?
- Любопытство, наверное, не более того. Потому что, насколько все будет серьезно, понять было трудно. В принципе, конечно, было приятно. Но на что-то серьезное я не рассчитывал, потому что первоначально этим собиралась заниматься небольшая студия с небольшим активом, и речь шла о малобюджетном телепроекте.
Пока только велись переговоры, заключались договора и прочее, серьезно рассматривать этот проект было трудно. А вот когда поступило предложение от Первого Канала, появилось больше энтузиазма. Стало видно, что сработают сильно: на мои вопросы что можно придумывать, а чего нельзя, какие будут ограничения, продюсеры отвечали, что можно придумывать все, что угодно, они попытаются воплотить все. Такой подход сразу порадовал.

- А страха не было?
- (Пожимает плечами) А чего бояться? В худшем случае был бы плохой фильм. Книга же от этого не изменится.

- А реакции давних фанатов книги не опасались?
- К сожалению, я понимаю, это неизбежный процесс. Даже к экранизации Джексона "Властелина колец", которая, на мой взгляд, была образцово-показательной, была масса претензий и негативных отзывов со стороны поклонников книги. Хотя там, кажется, максимально, на сколько это возможно, был выдержан и дух книги, и буква книги. Но при всем этом все равно была масса возмущений: и то не так, и это не так, а тут не было вот этой башенки, а вот здесь неправильное выражение лица. Когда человек уже полностью составил у себя в голове визуальный ряд, когда он уже представил, как выглядит каждый персонаж (это, конечно, я; это - моя любимая девушка; это - мой начальник по работе в роли главного Темного властелина), сложилось представление того, каким должен быть фильм. И, когда он сталкивается с чужой фантазией, причем фантазией достаточно разнузданной, вольной, у него сразу возникает возмущение. Ну, с этим ничего не поделаешь.
Я лично считаю, что самое главное то, что фильм очень резко побудил интерес к книге, она сейчас продается огромными тиражами, появилось масса новых читателей.

- Ожидания от картины оправдались?
- Ну, я не могу сказать, что я там полностью всем доволен, но, наверное, автор книги будет доволен только в том случае, когда сам все будет снимать. Но в целом - да, ожидания оправдались. Фильм больше понравился, чем не понравился. Я бы поставил ему четверку с плюсом.

- А Вам не хотелось экранизировать книгу самостоятельно?
- Я же не специалист в этом деле. Это было бы достаточно самонадеянно вот так брать и заниматься совершенно другой работой. Работа режиссера - это очень много совершенно нетворческой работы, скрытой от глаз зрителя: надо уметь организовать весь съемочный процесс, управлять огромным коллективом из десятков и сотен людей, и при этом нужно еще творческую линию создать. Я не думаю, что сумел бы так просто придти и со всем этим справиться. Этому учатся, учатся долго , серьезно, потом набивают себе шишки, занимаясь своими первыми фильмами.
А придти и сказать: "А я автор книги, я вам сейчас все сниму!" - это было бы очень самонадеянно. Наверно, даже при самом благожелательном коллективе актеров, режиссеров и операторов все равно получилась бы полная ерунда. И пустые сотрясания воздуха: "Вот я сейчас возьму цифровую камеру, и мы с друзьями все сделаем куда лучше", - это на самом деле профанация, это невозможно.
"Ведьма из Блэр" - единственный удачный пример, и он прокатил только в силу того, что был первым. Зрителя привлекло, что в фильме съемка велась любительской камерой, прыгающее, дергающееся изображение, плюс, конечно, там неплохой сюжет, но подобные фокусы проходят только один раз.

- Как вы относитесь к критике?
- Достаточно нормально, пока это критика книги, а не меня лично. Зачастую, у нас под этим словом понимают возможность нахамить самому автору произведения, а не обругать то, что он сделал. Поэтому у нас и возможны какие-то возгласы типа: "Автор испоганил свою собственную книгу! А режиссер произдевался над зрителем и снял полное фуфло!"
Хочется поругать фильм или книгу - ругай. Бери, разбирайся, что в нем хорошо, а что плохо, объясни почему это так, выскажи свое мнение. То есть понятно же, что ни режиссер, ни писатель , ни скульптор не ставят своей целью делать что-то, что им самим не нравится. Конечно, в любом случае, любое творчество будет вызывать массу негативных эмоций. У любого творческого человека будет и миллион поклонников и миллион противников. Но у нас под словом "критика" очень часто понимают переход на личности, и это бывает очень неприятно.

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

В нашем журнале регулярно проходят конкурсы рассказов. Что бы Вы пожелали начинающим авторам, мечтающим добиться успеха?
- Во-первых, больше писать, набивать руку, потому что это очень важно. Я как-то стал перебирать свои старые рассказы, повести, и с ужасом обнаружил, как это было плохо написано. Смотрел, смотрел, смотрел, и потом - раз! - в какой-то момент как будто что-то щелкнуло, достаточно резко изменился стиль, общий уровень произведений. То есть произошел переход количества в качество.
Конечно, всегда бывают неожиданности и прорывы. У меня есть несколько самых старых рассказов, которых я не стыжусь и продолжаю их публиковать в разных сборниках - они удались, хотя тогда я совсем не умел писать и создал их на голом энтузиазме. Но рассчитывать, что человеку никогда не писавшему можно будет сесть и написать огромный роман "Борьба против приспешников Черного властелина", и он тут же завоюет миллион поклонников - это наивно. На самом деле, конечно, нужно написать такой роман, но при этом четко понимать, что он так и останется для чтения автора, его семьи и друзей. Это будет такой шлак, который необходимо выбрать, прежде чем начать добычу драгоценной руды. Без этого, в общем-то, невозможно.

Кому-то потребуется написать один-два романа, которые уйдут и никогда не будут опубликованы, кому-то - десять. А кому-то удастся сразу опубликовать первый же корявый романчик, и он будет считать, что именно так и нужно писать.

- А когда к вам пришла популярность?
- Достаточно быстро. Я где-то около полугода писал в стол, показывал друзьям. Потом несколько моих рассказов опубликовали в журналах "Уральский следопыт", "Заря". И я с большим удивлением увидел, что по этим рассказам меня заметили в фэндоме - как раз в ту пору они отслеживали буквально любое выходившее произведение и его автора. Достаточно было опубликовать хотя бы один рассказ, чтобы реагировали: "Да-да, мы читали в журнале "Свиноводство средней полосы" Ваш рассказ". Таким образом, уже после выхода первых рассказов, я заметил, что кто-то читает, знает, автограф даже берет.
Помню, как попросили автограф первый раз. Была такая тоненькая книжечка, скорее даже брошюрка, в ранние годы была целая мода на их выпуск, и вот на ней я расписался. (Улыбается) Я поразился, в общем-то, был один рассказ, достаточно слабый. А человек покачал пальцем: "Ничего-ничего, а вдруг Вы станете знаменитым! А у меня будет Ваш автограф". (Смеется)

- Изменилось ли что-нибудь в Вас с этого времени?
- Да, в общем, нет, потому что я достаточно четко понимал всегда, что, как сказал Борис Натанович Стругацкий, будет огромное количество людей, которые будут читать и хвалить, будет огромное количество людей, которые будут ругать, но запомните, что все равно будет неизмеримо больше людей, которые про вас никогда не узнают. Вот это очень мудрое правило следует знать каждому писателю. Будет ли аудитория десять, сто тысяч или полмиллиона человек, все равно сотни миллионов и миллиарды людей о твоем существовании никогда и не догадаются.

- Есть такое мнение, что популярный человек имеет некие обязанности перед своими поклонниками. Вы согласны?
- Определенные обязанности, наверно, есть. Но они, скорее, лежат не в плане каких-то встреч, общения, коммуникации. Например, Пелевин в свое время выбрал такую тактику, что он ни с кем не встречается, не дает интервью - это его полнейшее право, и я вполне его понимаю. Обязанность, наверно, одна - писать те вещи, которые ты считаешь правильными, делать это качественно. То есть хорошо делать свою работу. Но опять же это не значит, что нужно делать ее на потребу публике, не уподобляться художнику, которому все говорили: "А нарисуй-ка нам горы, а нарисуй-ка нам море …", пока не получилась полная ерунда.

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

- Что для Вас самое главное в жизни?
- Семья, конечно. Потому что дом и развлечения - это все вторично. К тому же, писать, не имея крепкого тыла, когда на душе кошки скребут, когда одолевают какие-то проблемы, связанные с личными взаимоотношениями очень тяжело. Дело в том, что невозможно жить совершенно без конфликтов. Поэтому очень важно, чтобы со стороны семьи были понимание и поддержка.

- А как Вы познакомились со своей женой?
- Мы познакомились очень банально. Я тогда учился на четвертом курсе. Стоял на остановке и увидел двух девушек. Подошел к ним знакомиться. Но одна вскоре села в автобус , который как раз нужен был и мне. Я сел следом и завел вежливый разговор на тему "Девушка, любите ли Вы такую прекрасную погоду?"
(Воодушевленно) А на самом деле была совершенно изумительная зима, с картинно обсыпанными снегом ветвями деревьев - пейзаж был очень красивый, хотя сам я зиму очень не люблю. Но мне казалось, что ответ должен быть "Конечно, да!". Потому что все вокруг было такое снежное, воздушное, голубое чистейшее небо - дело было в Алма-Ате, там вообще очень красивое небо и зима. Но на мой вопрос девушка неожиданно ответила: "Нет. Я совершенно не люблю зиму". Я вздохнул и признался, что тоже. Через остановку она вышла, но я все-таки успел прокричать ей номер своего телефона . Я совершенно не предполагал, что она позвонит, но у нее, по счастью, оказалась очень хорошая память на номера. И она позвонила, поскольку, ну, не знаю, то ли скучно было, то ли нечего делать, то ли только что поставили дома аппарат, и нужно было кого-то набрать. Но она вспомнила молодого человека, который настойчиво давал свой номер телефона. Мы поговорили, потом стали встречаться и через полгода с небольшим поженились.

- Как на Вас повлияло рождение сына?
- Я очень обрадовался этому событию. Конечно, меняется и восприятие жизни, и мироощущение. Трудно сформулировать как-то словами. Я начал ощущать себя по-другому, в каком-то новом качестве.

- А кого Вы хотели?
- Я хотел мальчика , жена хотела девочку. И нам до восьмого месяца обещали, что будет девочка, и буквально за месяц сказали "Нет, это не девочка, это мальчик". Она сначала даже расстроилась, а сейчас говорит: "Какое счастье, что у нас мальчик, и зачем я девочку хотела? Мальчик куда лучше, куда интереснее".

- А были ли споры из-за пола ребенка?
- Да нет. Я, конечно, говорил, что хочу сына. Наследника. Мне хочется играть с ним в игры, которые сейчас такие замечательные, мы будем с ним строить железную дорогу из комнаты в комнату и так далее. То есть подход был такой. Но при этом ребенок был долгожданный, и была бы девочка - играл бы с ней в куклы.

- Второго ребенка хотите?
- Да, конечно. Только жена теперь хочет мальчика, а я - девочку. Мы теперь поменялись. (Смеется)

- В чем секрет Вашего семейного благополучия, как вы разрешаете какие-то мелкие конфликты?
- Это, конечно, бывает. Невозможно, прожив почти пятнадцать лет, обойтись без ссор. Но тут рецепт достаточно универсальный: надо в какой-то момент, поссорившись, поспорив , подувшись где-то в углу, сделать первый шаг навстречу. Иногда этот шаг делаю я, иногда жена. Ссоримся, конечно, миримся. Но это происходит нечасто. Она, как психолог, говорит, что ссоры необходимы для нормальных отношений.

- Что, по-вашему, самое главное при построении взаимоотношений?
- Доверие, наверно. В общем-то, строить отношения без взаимного понимания друг друга крайне тяжело, а понимание возможно, только при полном доверии.

- А как Вы относитесь к гражданским бракам ? И на Ваш взгляд, есть ли разница между таким браком и официальным?
- Скажем так, в ситуации, когда люди действительно друг другу доверяют, друг друга любят, разницы принципиальной нет. Для нас, например, никогда штамп в паспорте не был обязательным, непременным условием. Но, в принципе, юридически зарегистрированный брак - это мера юридической защиты сторон при расставании, при разводе, это мера защиты детей при разделе имущества и так далее. То есть в случае хороших отношений, в случае счастливого брака штамп в паспорте совершенно ничего не значит. Опять же, он никому не помешает изменить, расстаться. Значение его абсолютно формально. Наверно это такая скидка на несовершенство человеческой природы. Раньше для этой цели служил освященный церковью брак. Но когда люди теряют веру в Бога, то хотя бы закон должен как-то регулировать их проблемы.

Многие люди считают, что отсутствие штампа в паспорте стимулирует партнеров, в то время, как после свадьбы многие пары "расслабляются", потому что супруг уже никуда не денется. Вы согласны?
- Странное мнение. Почему никуда не денутся? Развестись достаточно легко. Особенно, если в семье нет детей, тогда развод очень простая процедура. Мне кажется, это у нас осталось с советских времен, когда штамп в паспорте - значит все, я тебя захомутала, никуда не денешься, если что, то я на тебя пожалуюсь в профком, местком, тебя путевки лишат, из партии выгонят. Поэтому такое странное отношение к гражданскому браку.
На Западе это все гораздо проще. Но опять же на Западе люди в брак вступают годам к тридцати. А у нас почему-то бытует мнение, что раз девочка в 25 лет еще не замужем, то она либо гулена, либо такая плохая, что на нее никто не позарится. То есть, нужно выскочить замуж в двадцать лет и потом долго и мучительно налаживать совместную жизнь, существуя в условиях полной несостоятельности, финансовой и материальной. Я не осуждаю тех, кто рано женится.

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

- А, по-вашему, женщина должна быть на кухне и растить детей или заниматься своей карьерой?
- В принципе, это каждый решает сам. Есть женщины, у которых главная цель - благополучная семья, есть другие, у которых главная задача - успешная карьера, а есть и такие, которым удается совмещать. Соня свою карьеру делала и сейчас, подрастет сын, продолжит делать - она психолог, кандидат наук, преподаватель, доцент. Психологией жена занимается серьезно, с увлечением. И я рад, что у нее есть любимая работа , что она не сидит дома, в четырех стенах, хотя, понятно, что материальная возможность для этого у нее есть.

- Вы долго жили в Казахстане. Чего больше в Вашем мировоззрении: восточного или западного?
- Наверно, как и все на Востоке, оно у меня дуалистичное: и восточное и западное. Казахстан, конечно, страна не сильно восточная, но в то же время там присутствуют восточные элементы. Но я, скорее, немного западный.
Вот Вы спросили, и я сразу вспомнил историю, которую мне рассказал Тимур Бекмамбетов. Наверно, все помнят библейскую легенду о Каине и Авеле. Так вот один из них был земледельцем, а другой - кочевником. Тимур спросил меня, кто из них кто? Я наморщил лоб, вспоминая… ведь в традиционном европейском понимании, земледелец - он хороший, а вот скотовод, кочевник - плохой… Выяснилось, что земледельцем был Каин. Это выражает восточный подход, дуализм мира.
У нас все просто, этот хороший, этот плохой, и роли должны быть распределены так. На самом деле, восточное понимание - это всегда инь-янь, взаимопроникновение вещей, добро и зло сливаются воедино. Восток - дело тонкое. (Улыбается)

Последний вопрос. Если бы создали Звезду Теслы, которую Вы описывали в повести "Кредо", кем бы была Ваша прошлая инкарнация?
- (Смеется) Интересный вопрос! Вы знаете, поскольку всегда все говорят: "Я в прошлой жизни наверняка был жрецом… или наследником престола… или, наоборот, маньяком-убийцей, известным вором…" Я попробую ответить чуть оригинальнее. В прошлой жизни я был совершенно заурядным человеком, простецким обывателем, который тихо-мирно работал в какой-то конторе и ничего интересного с ним в жизни не происходило. Поэтому, для компенсации, сейчас я веду более интересную и насыщенную жизнь.

А сейчас нужно обязательно дунуть, потому что если не дунуть, то ничего не получится.
-Цитаты великих

И здравствуйте!

Сегодня мы поговорим о неявном в языке Scala. Кто еще не догадался - речь пойдет об implicit преобразованиях, параметрах, классах и иже с ними.Все новички, особенно любители питона с зеновским Explicit is better than Implicit , обычно впадают в кататонический ступор при виде подкапотной магии, творящейся в Scala. Весь компилятор и принципы в целом охватить за одну статью удастся вряд ли, но ведь дорогу осилит идущий?

1. Неявные преобразования

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

Жизненный пример

case class Vasiliy(auto: Renault) { println("Vasiliy owns "+auto) } case class Renault(isRussian: Boolean = false) case class VAZ(isRussian: Boolean = true) object VAZ { implicit def vaz2renault(vaz: VAZ): Renault = Renault(vaz.isRussian) //вся магия здесь } object Family { def present = { Vasiliy(VAZ()) //подарим василию ВАЗ. Который внезапно Рено! } }


В результате выполнения Family.present мы увидим строку Vasiliy owns Renault(true) . Вот так Scala помогает обычным людям в этой непростой жизни!
Если привести более программисткий пример (что-то подобное использую у себя в проекте):

Безжизненный пример

case class PermissionsList(permissions: Set = Set("UL")); object PermissionsList { implicit def str2permissions(str: String) = PermissionsList(str.split(";").toSet) implicit def permissions2str(p: PermissionsList) = p.permissions.mkString(";") } //упрощенный case class User(login: String, permissions: PermissionsList) /* somewhere in a galaxy far far away */ User(login = "Vasiliy", permissions = "UL;AL") // только ловкость рук и ничего более


Приведенный код позволяет неявно приводить строки к объекту прав доступа и обратно. Это может быть удобно при работе в том же вебе, когда нам достаточно только склеить на клиенте нужную строку вида "UL;AL" и отправить ее на сервер, где она уже будет в нужный момент преобразована в наш объект.
И вот мы подошли к важному пункту . Когда и при каких условиях наш а тыква ВАЗ превратится в Рено, а строка в объект PermissionsList?

В подавляющем большинстве случаев вся магия Scala происходит в compile-time (язык-то строго типизирован). Местный компилятор - чрезвычайно умная и находчивая тварь. Как только мы пытаемся вызвать у инстанса класса VAZ метод exat(), который там и не существовал никогда, наш компилятор пускается во все тяжкие и варит мет ищет неявное преобразование VAZ"а во что-то, что умеет exat(). Иначе говоря, implicit def a2b(a: A): B .
Ищет он неявные преобразования:

  • В текущей области видимости (например, внутри текущего объекта)
  • В явных (import app.VAZ.vaz2renault)
  • или групповых импортах (import app.VAZ._)
  • В объекте-компаньоне преобразуемого
Кстати, помимо просто вызова несуществующего метода, компилятор попробует преобразовать объект в том случае, если мы попытаемся передать его в метод/функцию, которая требует параметр с другим типом данных. Это как раз из примера Василия и его семьи.

1.1 Implicit class

Начиная с версии 2.10 в Scala появились Implicit class"ы, которые позволяют удобно группировать расширения (довешивать методы) для любых существующих классов. Вот простенький пример:

Object MySimpleHelper { implicit class StringExtended(str: String) { def sayIt = println(str) def sayItLouderBitch = println(str.toUpperCase +"!!!") } }
Как видно из приведенных сырцов, мы имеем объявленный внутри объекта класс, который принимает единственный аргумент - строку. Эта строка дается нам на растерзание в методах класса. И терзается это дело элементарно:

Import MySimpleHelper._ "oh gosh" sayIt > oh gosh "oh gosh" sayItLouderBitch > OH GOSH!!!
Но и тут есть несколько ограничений, которые надо иметь ввиду:

  • Для implicit классов можно использовать только один явный аргумент конструктора, который, собственно и «расширяется» (про implicit параметры поговорим чуть позже)
  • Подобные классы могут быть объявлены только внутри объектов, трейтов, других классов
  • В области видимости объявления класса не могут существовать методы, свойства или объекты с тем же названием. Если у вас в, например, объекте есть свойство VAZ , то рядом не может сосуществовать implicit class VAZ
Ну а по факту, наш StringExtended будет преобразован компилятором в:

Class StringExtended(str: String) { def sayIt = println(str) def sayItLouderBitch = println(str.toUpperCase +"!!!") } implicit def String2StringExtended(str: String): StringExtended = new StringExtended(str)
Знакомо, не так ли?

2. Неявные параметры

Как-то слишком все просто и вы уже заскучали? Самое время небольшого хардкора! Пошевелим мозгами и залезем в исходники скалы:

Неприветливый код

/** * TraversableOnce.scala: minBy * Итак, имеем метод, который позволяет найти минимум в коллекции, причем минимум будем определять мы сами, используя для этого функцию, возвращающую объект типа B для каждого элемента A коллекции. Собственно, эти объекты B и сравниваются между собой, а возвращается тот A, чей B меньше всех. Как-то так. */ def minBy[B](f: A => B)(implicit cmp: Ordering[B]): A = { //если коллекция пустая - что нам сравнивать? if (isEmpty) throw new UnsupportedOperationException("empty.minBy") //объявим пустые переменные нужных типов var minF: B = null.asInstanceOf[B] var minElem: A = null.asInstanceOf[A] var first = true //переменная для первой итерации //поехали по коллекции for (elem <- self) { //передаем в функцию элемент A, получаем некое B val fx = f(elem) if (first || cmp.lt(fx, minF)) { //если это наше первое сравнение - минимальный элемент будет первым же. //или же cmp.lt вернет true в том случае, если f: B < текущего минимума minF: B minElem = elem minF = fx first = false } } minElem }


Повтыкали, вроде все понятно.
Стоп, секунду. Но ведь мы используем minBy примерно так: val cities = Seq(new City(population = 100000), new City(500000)) val smallCity = cities.minBy(city => city.population)
И никаких cmp: Ordering[B] (в данном случае B == Int) не передаем. Хотя вроде как код работает… Расслабься, парень. Это магия.
В импортированной области видимости, а конкретно в scala.math.Ordering существует

вот такой вот кусок кода

object Ordering extends LowPriorityOrderingImplicits { ... trait IntOrdering extends Ordering { def compare(x: Int, y: Int) = if (x < y) -1 else if (x == y) 0 else 1 } implicit object Int extends IntOrdering ... }


Обратим внимание на последнюю строку - существует неявный объект Int, который имеет в своем арсенале метод compare , имплементированный при наследовании Ordering трейтом IntOrdering . Собственно, этот объект и используется для сравнения, неявно передается в злополучный minBy .
Сильно упрощенный пример выглядит примерно так:

Приветливый код

implicit val myValue: Int = 5 object Jules { def doesHeLookLikeABitch(answer: String)(implicit times: Int) = { for(x <- 1 to times) println(answer) } } Jules.doesHeLookLikeABitch("WHAT?") >WHAT? >WHAT? >WHAT? >WHAT? >WHAT?


Конечно, никто не запрещает нам самим ручками передавать неявные параметры. Не, ну вдруг понадобится.
И снова, снова ограничения, куда же без них.
  • В области видимости вызова метода должен существовать объект/значение, помеченный как implicit, причем существовать может только один параметр для одного типа данных. Иначе компилятор не поймет, что же нужно передать в метод.
  • Как вариант, компилятор пошарится в объекте-компаньоне нашего implicit T , если таковой существует, и дернет оттуда implicit val x: T . Но это уже совсем тяжелые наркотики, как по мне.

3. View/Context Bounds

Если ваш мозг уже оплавился - отдохните и выпейте кофе, а может чего покрепче. Я собираюсь поговорить о последней на сегодня неочевидности.
Допустим, что наш Василий, который ездит на новом автомобиле (тот самый, что умеет exat()) стал успешным человеком, программистом короче. И вот пишет Василий на Scala, и захотелось ему ЕЩЕ БОЛЬШЕ САХАРА АРРГХ. Мартин подумал и сказал - Окей. И ввел типы и ограничения по ним. Те самые def f[T](a: T)
3.1 View Bounds
Это ограничение при объявлении типа говорит компилятору о том, что истина неявное преобразование где-то рядом.

Def f(a: A) = a.bMethod
Т.е. в доступой области видимости присутствует неявное преобразование из A в B . В принципе, можно представить запись в следующем виде:

Def f[A](a: A) (implicit a2b: A => B) = a.bMethod:
Близкий русскому человеку пример выглядит примерно так:

Class Car { def exat() = println("POEXALI") } class VAZ object VAZ { implicit def vaz2car(v: VAZ): Car = new Car() } def go(a: A) = a.exat() go(new VAZ()) > POEXALI
Замечательно! Жизнь стала прекрасной, волосы выросли обратно, жена вернулась, ну и что там далее по списку.
Но Василий напросился, и Мартина было уже не остановить… Так появилось

3.2 Context Bounds
Это ограничение было введено в Scala 2.8, и, в отличии от View Bounds, отвечает не за неявные преобразования , а за неявные параметры , то есть

Def f(a: A) = g(a) // где g принимает неявный параметр B[A]
Самым простым примером будет вот такая вот пара:

Def f(a: A, b: A) = if (implicitly].lt(a, b)) a else b vs def f[A](a: A, b: A)(implicit ord: Ordering[A]) = { import ord._ if (a < b) a else b }
Вообщем-то это отдаленный привет Хаскелю и его typeclass pattern"у.

Вместо послесловия

Дорога на этом не оканчивается, говорить о Scala можно долго и много. Но не все сразу, ведь главное - это понимание и желание понять. С желанием придет и осознание происходящего.
Ну а если вам после прочтения этой статьи не понятен код какого-то проекта, который использует неявные преобразования, советую закрыть блокнот и открыть нормальную IDE, там все красиво подсвечивается. А у меня уже голова не варит, я пойду. Всем спасибо за внимание.

- Это был сумрак. Ты иной.
- Иной? Я что, не такой как все?
- Теперь нет.

Тимофей Кузнецов, 23-х лет отроду, начал свою жизнь в ничем не примечательном Геленджике. Со временем, как и многие, он перебрался «из провинции» в столицу, и закончил МГУ. Любил математику и играть в шахматы. В целом, ничего особенного. Однако он не такой как все.

«Не таким как все» Тимофея, молодого простого паренька, неуверенного в себе, которого в мире никто не знал, делало только одно слово. Trueteller. Оно же возводило его в ранг короля в покерном мире.

Этот ник знал каждый уважающий себя покерист. Его игра на высоким лимитах вызывала восхищение: она была дерзка и непредсказуема, он давал отпор всем известнейшим покеристам, а новые линии от Трутеллера вводили в ступор даже сильнейших мира сего. Невероятная способность забирать всё до копейки у профессионалов принесла Кузнецову еще одно прозвище – «Обнулитель». Он был игроком, которого знали все, но не видел никто. В конце мая 2015 года «Trueteller» вышел из сумрака.

Выход из сумрака оказался не таким взрывоопасным, как у Виктора Блома, который также разрывал хайлимиты и скрывал лицо за маской. Появление же нашего «Иного» вышло без фанфар, красной дорожки, букетов и бурных оваций. Хотя это и было громом среди ясного неба, но каким-то робким и детским.

З-здрастьте, - спотыкаясь и поправляя очки, неуверенно сказал 6-классник «Trueteller», который только вчера обнулил Тома Двана.

На фоне своего «папы» - Славы «Исполнителя» Карпова, который и представил Тимофея публике, сыночек смотрелся неловко и несуразно. Уверенности, одному из лучших кеш-игроков в мире, не добавляла и рядом сидящая девушка Тимофея Виктория Примак – 21-летняя модель из города Омск. Театральная постановка с тремя актёрами первого плана, хоть и вызвала аншлаг, но получила множество претензий от критиков по сценарию пьесы и плохой игре актеров. Психологи, которые утверждали, что мнение о человеке складывается в первые секунды, изучив видео-представление нервно махнули рукой и закурили.

Как так то? Почему Тимофей, выглядя на этом видео неуверенным в себе парнем, разрешил выложить его в сеть? Неужели его устроила эта запись видео, и какой образ мог сформироваться у покерного общества? Вопросов у любителей покера, после просмотра, оказалось больше, чем ответов.

Покерные бабушки на форуме, смакуя всю эту тему, так и не смогли найти интересующие ответы и понять мотивы Трутеллера и Исполнителя. Также, как и понять, какой он Тимофей Кузнецов. Возможно, он просто захотел славы (не Исполнителя) и известности, возможно, это продуманная многоходовочка, как барелинг на трёх улицах. Возможно, Карпов и Кузнецов на взаимовыгодных условиях договорились сделать это видео. Только зачем это Тимофею?

Аргумент Исполнителя, что после участия Трутеллера на WSOP всё равно все бы узнали, что это он, как то выглядит слабеньким. Участие на WSOP никак не могло на это повлиять. Кузнецов и до этого принимал участие в популярных сериях, типа ЕРТ, и никто не знал, что это он. Даже известные комментаторы Илья Городецкий и Михаил Сёмин во время трансляции ЕРТ Барселоны , не зная, кто такой Кузнецов, обозвали его тайтовым игроком. Это прям как оскорбление для того Трутеллера, которого мы знали – любителя агрессивного стиля игры.

Выходит Исполнитель «немного лукавил» когда назвал причину. Ох уж этот манипулятор-психолог. Ему только дай повод, а там он уже сам историю придумает.

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

Многие задавали вопросы: где же та самоуверенность Трутеллера, где его легкая надмерность и снисходительность, где тот человек, который первым придумал лимпить с баттона на хайстейкс, где тот, кто первый заработал миллион за кап-столами в ПЛО, где тот король-лев, который стоит на верхушке покерной эволюционной цепи и обнуляет покер?

Большинство людей представляли «Иного»… по-иному. Звездой, мачо, крутым мЭном, подкуривающего сигары 100 долларовой купюрой. Одним лишь только взглядом он мог украсть блайнд у Айви. Он был кумиром. Начинающие покеристы мечтали достичь таких же высот и быть таким же классным, как Трутеллер. Однако после того, как туман рассеялся и мы увидели реального человека, детские мечты любителей сказок разрушились. Икона треснула, памятник разрушен. Самый известный и сильнейший кэш-регуляр оказался обычным, ничем не примечательным пареньком – таким же как и все. Только на пару миллионов богаче.

Фото: Тимур Шарипкулов

Жарче солнца

Свое название день зимнего солнцестояния получил потому, что полуденное солнце, в последние месяцы опускавшееся все ниже и ниже, как бы останавливается над горизонтом на наименьшей высоте, а затем начинает подниматься обратно. Потому этот день на Руси величали Солнцеворотом, поворотом на весну (а еще - Карачуном).

Деление года на зиму, весну, лето и осень, как мы их воспринимаем сейчас, для земледельцев было довольно условно, границы времен года в давние времена определялись их узловыми элементами. Одним из них был и зимний солнцеворот: первый этап пробуждения природы, начало новолетия. По церковному календарю он совпал с рождественскими святками, и связанные с ним обряды встретили жесткое противодействие церкви, - рассказал религиовед Павел Скрыльников.

Фото: Тимур Шарипкулов

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

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

Думай о Мурманске

С точки зрения науки, день зимнего солнцестояния - это время, когда угол наклона земной оси относительно Солнца становится максимальным. Через два-три дня после этой даты закат будет сдвигаться на одну или несколько минут каждый день.

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

Фото: Николай Гурьянов (инфографика)

Если вы живете в регионе, где светлая часть суток нарастает медленнее, чем в других частях страны, можете утешить себя мыслями о Мурманске. В этом северном городе полярная ночь начинается 2 декабря, после чего мурамчане в течение 40 суток не видят даже краешка дневного светила. Подобная участь постигла и другие населенные пункты, расположенные за полярным кругом: Норильск, Воркуту, Апатиты, Североморск, Салехард и Нарьян-Мар и пр.

Географическое положение города влияет и на то, смогут ли отмеренные ему солнечные лучи добраться до места. Жители многих российских регионов недополучают солнце из-за циклонов, рассказала ведущий метеоролог Гидрометцентра России Марина Макарова. Этот атмосферный фронт приносит с собой облака и, соответственно, мглу. Если же в регионе устанавливается антициклон, погода становится малооблачной, но морозной. Поэтому зимой в Сибири с ее лютыми стужами ясных дней все-таки больше, чем в западной части страны, находящейся под влиянием Атлантики. Либо мороз и солнце, либо сносные температуры и пасмурная мгла - таков безжалостный ультиматум зимней погоды россиянам.

Тьма снаружи - тьма внутри

Хотя ночь вот-вот пойдет на убыль, по-настоящему насладиться светлыми деньками мы сможем еще не скоро. А значит, с хандрой и постоянной ленью надо что-то делать.

Депрессивные настроения и синдром хронической усталости - привычные спутники темных зимних дней, говорит врач-психотерапевт Олег Шалев.

Человек наиболее активен в светлое время суток. Если мы получаем меньше солнечной энергии, то начинаем больше спать, любая наша активность - физическая или умственная - снижается. Депрессивность характерна для жителей северных стран, для суровых условий жизни. Не только потому, что там труднее выживать, но и потому, что длительность светового дня меньше, - рассказал Олег Шалев.

Фото: Тимур Шарипкулов

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

Уменьшить негативное влияние тьмы на человека можно, налегая на продукты, богатые витаминами: фрукты, овощи, а также пищу, богатую белками и углеводами.

Даже острое и жареное, которое считается не самой полезной пищей, зимой поможет улучшить настроение и повысить жизненный тонус, - говорит Олег Шалев.

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

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

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

Четвертый и пятый варианты русскому человеку придутся особо по вкусу. Речь идет о бане и традиции русских застолий.

Фото: Александра Савельева

Как у нас раньше боролись с хандрой? Печки топили. Живой огонь, дрова - все это, во-первых, снижает влажность, во-вторых, подпитывает людей энергией. Обычная ванна баню не заменит: теплая вода человека расслабляет, снимает излишний потенциал. Вот холодный душ - да, стимулирует, бодрит. Но кому он зимой нужен? Поэтому надо просто запланировать себе раз в неделю поход в баню - не только для удовольствия, но и для здоровья. Также от зимней депрессии помогают русские застолья и праздники. Без Нового года, например, нам совсем тяжко было бы. Конечно, от долгих праздников устаем, но эмоциональная встряска все-таки нужна. Главное - не злоупотреблять и знать меру в еде и спиртном, - говорит Олег Шалев.

И, конечно, благотворное влияние на психологическое состояние оказывают физические нагрузки. Особенно - на свежем воздухе.

Лыжи, коньки… Надо ведь и внутренний огонь разжигать в себе, - смеется психотерапевт.

Роль соляриев, по мнению специалиста, в борьбе с осенне-зимней депрессией преувеличена. Загар действительно помогает вырабатывать витамины групп B, E, A. Но применять ультрафиолет из кабинки нужно дозированно.

Фото: Евгения Бикунова (инфографика)

«Спи, пока темно»

По утрам с трудом продираете глаза, хотя проспали положенные восемь часов, а то и больше? Виной тому все та же нехватка солнечного света, объяснил заведующий центром медицины сна клинического санатория «Барвиха» Роман Бузунов. Солнца зимой мало, световой день короткий, большую часть дня мы проводим в помещении. Когда утром выходим из дома, на улице еще темно, когда выходим с работы - там уже темно. Из-за этого в народе даже появилось выражение «офисная полярная ночь».

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

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

В ряде случаев может помочь прием препаратов мелатонина, регулирующих цикл «сон-бодрствование». Однако их применение лучше согласовать с лечащим врачом, предостерегает Роман Бузунов.