четверг, 8 декабря 2016 г.

Не мультифорой единой

Насобирал тут на всяких лингвистических форумах наши сибирские (в основном, Иркутская область и Бурятия с Забайкальем) диалекты, которые не везде поймут. Не берусь утверждать, что так никто больше не говорит. Не берусь утверждать что всё прямо диалекты (тут много просторечий и просто жаргонных слов). Но почитать интересно. Дайте ссылку свои друзьям из других регионов, много ли они знают слов и выражений из списка?

Бадьма - деревенский хулиган, бич или шабашник. Вроде как есть такое бурятское имя, но не уверен (подскажите кто знает)
Бикарасы - всякая мелкая водная живность
Бичиха - ну, собственно, бич/бомж женского рода (не везде так говорят)
Беремя - бремя, ноша или что-то в значении "много"" ("сколько время? - целое беремя!")
Бормаш - рачок-бокоплав, гамаррус, рыбаки знают
Бравенький - (привет Бурятии и Забайкалью) одобрительное такое слово, хороший
Бродни - высокие сапоги, "бродить" по заболоченной местности
Буровить в значении "мощно писать, мочиться"
Белёный чай, белить чай - чай с молоком (забайкальцам привет)


Вехотка - мочалка (серьезно, никто не знает кроме наших)
Верхонка - плотная рукавица, варежка для грязных работ
Вилок капусты - кочан же (ещё один мощный диалект)
В одну каску - в одного, не поделившись
Воровайка - японские грузовички с подъемным краном
Вошкаться - ворочаться, рыться где-то


Гардина в значении "карниз для штор"
Гача - штанина, вот вообще неизвестно на западе почти
Густой чай - крепко заваренный
Гаситься в значении "прятаться"
Голить в значении "водить в игре", "голя" - ведущий соответственно, кто всех ищет или догоняет
Голоуший - без шапки
Голубица вместо "голубика"
Горбовик - металлическая емкость с ремнями, надевается по типу рюкзака для сбора в неё грибов, ягод
Горлодёр вместо "хренодёр"


Децел как мера чего-то маленького ("отсыпь децел орехов" = "отсыпь немного")
Дикошарый - дикий, избегающий людей, странный
Дичка как яблоня
До талого, в талого - до последнего, до самого конца. "В талого" что-то вроде тоже близкое к концу, алкаши например "упились в талого"
Дубак, задубеть - сильный мороз
Дымокур - дымный костёр, от гнуса и комаров
Дербанить, раздербанить - рвать, отделять что-то резкими движениями


Ейная - просторечное "её"


Жадина говядина - с продолжением "солёный огурец, по полу валяется никто его не ест!". Представляете, дети из других регионов несут дальше что-то про какой-то барабан или пустую шоколадину..
Жарёха - все, что пожарено на сковороде (поджарка, мясо)
Жулькать - тискать, тереть что-то. Обычно про стирку ("пожулькай там с мылом") или про обильную любовь к какому-нибудь котёнку ("зажулькали кота совсем")


Забыгать, обыгать - заветриться, засохнуть
Засоня вместо "соня"
Заполошный - неспокойный, волнующийся и бегающи по пустякам, непутевый
Звездануть - сильно ударить, "чтоб звездочки полетели"
Звонкодырый - очень громкий, про человека
Золотинка - как обёртка от конфет
Зубило - как просторечное название автомобиля


Изно(а)хратить - изорвать, испортить, порвать на лоскуты
Ись как просторечное "есть"


Каво? - как гоповато-просторечный вопрос
Калтус - болото, редко, но пару раз слышал. В Усолье-Сибирском так называется искусственный водоём в черте города, я там в детстве даже каталя с сестрёнкой на катамаранах.
Ка(о)ндейка - маленькая комната, кладовка, сторожка
Катать вату - бездельничать, прокрастинировать, уклоняться от какого-то дела
Копорулька вместо "тяпка", "мотыжка"
Космы - волосы, обычно неухоженные
Конды(а)рёк - козырёк над входом подъезда
Купаться в значении "принимать душ" (умные люди утверждают, что не одно и тоже)


Лебезить - 1) Прислуживаться перед кем-то 2) Беспорядочно шевелить ногами, обычно про младенцев
Лыбиться - улыбаться, слово с явны негативным оттенком


Мастерка вместо "олимпийка" (какая олимпийка вообще!?)
Маленько - вроде все понятно, но поди ж ты, диалект-с
Малохольный - ненормальный, "с приветом"
Майка вместо "футболка" (имеется в виду, когда она действительно футболка с рукавами)
Мосолыга - мосёл, большая кость, в супе обычно
Моркошка - морковь конечно, тут видимо какая-то рифма с картошкой образовала такое слово
"Моя" как обращение (снова привет Бурятии и Забайкалью), причем не важно к близкому человеку или нет ("ты чего, моя?")
Мутузить - бить
Мультикасса (уникасса, новоплат) - тут как в истории с Ксероксом у кого что первое поставили
Мультифора - самое известное, пожалуй - файлик, прозрачный конвертик для печатных документов
Мызгать (замызганный) - марать что-то, обычно путём долгого теребления или грязными руками
Мысок вместо "носок", это про обувь


На кокурочках вместо "на корточках"
На левую сторону вместо "наизнанку"
"На разлив" вместо "в разлив"
Нарастопашку вместо "нараспашку"
Нашкулять - добыть, насобирать (обычно про мелочь)
"Но" в значении "да" ("вот же он сумасшедший?" - "но")


Обутки - обувь
Однёрка - в значении "единица" (мой фаворит)
Осоловелый вместо "осовелый", расслабленый то есть, вялый какой-то
Отчи(е)хвостить - отчитать, наругать, оттаскать на словах


Паря - как производное от "парень"
Печка вместо плита
Плойка - наше родимое, а почти везде "шипцы", "прибор" (!?), "стайлер"
Плюхаться - падать всем весом, "плюхнулся на диван"
Поварёшка вместо "черпак", "половник"
Притартать - принести что-то, притащить
Пришпандорить- прилепить, приделать
Простодырый - простофиля
По сюда, по туда - просторечия, "пойдём-ка лучше по-туда"
Пустолайка - собака, которая много лает без толку


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


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


Таганок - такая штука, на которую вешают котелки в походе (как по-другому называется даже не знаю, но вроде не везде поймут)
Теперича вместо "теперь"
"Тюльпаны" - разъемы "колокольчики"
Тепляк - теплушка, тёплый сарайчик где зимует скот, птица
Таксовать в значении "подрабатывать частным извозом", во многих местах говорят "бомбить" (а мне как-то слух режет)
Тика-в-тику - прямо очень близко, на грани фола, обычно когда что-то едва влезло куда-то
Толчёнка в значении "картофельное пюре"
Трико - тоже, говорят, не везде понимают
"Туки-та" (детская игра) - много названий, это когда все прячутся, а "голя" (ведущий) ищет и кто сможет быстрее добежать до какого-то предмета, коснуться и сказать заветное "туки-та!" тот и молодец
Тяма ("тямы не хватило"") - ум, соображалка


Угарный - как синоним "классный, клёвый"
Умудохаться - смертельно устать
У ней - вместо "у неё". Скорее как просторечие, но всё же.
Улка - просторечное "улица"


Фазанка - в значении средне-специальное учебное заведение, ПТУ
Фага - телефон мобильный (тут привет городу Братску)
Фартук вместо "передник"
Френчик в значении "лёгкая куртка"
Фестивалить - в значении пить-гулять, праздновать


Шарабориться - шуршать, ворочаться
Шастать - бездельничать, ходить куда-то без особого дела
Швыркать чай - пить с характерным звуком
Шебуршать - шуршать, искать что-то в груде вещей ("пошебурши там")
Шебутной - непоседливый (если про ребёнка) или самодур (если про взрослого)
Шель-шевель - эпичное выражение, означающее что-то очень медленное, возню какую-то и потерю времени ("пока он там шель-шевель, такси уже уехало")
Шибзик, шибздик - малявка, коротышка
Шилохвастик - непоседливый ребёнок, "шило" в одном месте
Шуровать ("шуруй давай отсюда") - шагать, идти в каком-то направлении


Хиус - холодный пронизывающий ветер
Хлюздить - плакать, распускать нюни
Хрупостит вместо "хрустит"


Чё-кого - не верю, но говорят, что не у всех на слуху
Чеплажка - ковш, кружка, какая-то штука чтобы черпать жидкость
Чурики ("я в чуриках") - вместо "я в домике", типа инвзибл в детской игре
Чистить яйца - где-то говорят только "лупить яйца" (wat?)
Чичер - сильный мороз, холод


Яишня - яичница
Читать дальше......

понедельник, 7 марта 2016 г.

Торо и его уолденский эксперимент

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

Фрагмент, подчеркнутый в одной из книг, найденных вместе с останками Криса МакКэндлесса



Это самое знаменитое произведение американского мыслителя и писателя Генри Дэвида Торо — пример того, как важно знать биографию писателя в привязке к историческому контексту. Потому что — а в случае этой книги особенно — время и место её написания служит ключом к её смыслу.
Торо был личностью удивительной и во многом известен своими протестами и вызовами общественному устройству.
Так, во имя протеста против войны США с Мексикой он публично отказался платить налоги, за что ему пришлось некоторое время провести в тюрьме. Правда, его родные в тот же день заплатили штраф, считая поступок Торо позорным для своей семьи. Но это как раз и является показательным для американского общества тех лет: у него не могло возникнуть и мысли не заплатить налог, государство полностью довлело над человеком. Впоследствии, торо станет одним из первых теоретиков гражданского неповиновения, и окажет влияние на величайшие умы тех лет (например, довольно много Торо цитировал Лев Толстой). Кроме того, Торо активно выступал в защиту природы, за права негров, а также стали одним из первых приверженцев теории эволюции Ч. Дарвина.


В одно время, он увлекся идеями т.н. трансцендентализма — идеи духовного совершенствования, близости к природе. И тогда Торот решился на эксперимент: несколько лет своей жизни провести в стороне от цивилизации, близ пруда Уолден, самостоятельно построив себе хижину, довольствуясь малым и добывая себе пропитание собственным трудом. Так родился "Уолден, или жизнь в лесу".


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


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

Я ушел из леса по столь же важным причинам, что и поселился там. Быть может, мне казалось, что мне нужно прожить еще несколько жизней и я не мог тратить больше времени на эту. Удивительно, как легко и незаметно мы привыкаем к определенному образу жизни и как быстро проторяем себе дорогу. Я не прожил там и недели, а уже ноги мои протоптали тропинку от дверей к пруду, и хотя с тех пор прошло пять или шесть лет, она еще заметна. Возможно, впрочем, что по ней ходили и другие, и потому она не заросла. Поверхность земли мягка и легко принимает отпечатки человеческих ног; так обстоит и с путями, которыми движется человеческий ум. Как же разъезжены и пыльны должны быть столбовые дороги мира – как глубоки на них колеи традиций и привычных условностей! Я не хотел путешествовать в каюте, я предпочел отправиться в путь простым матросом и находиться на палубе мира, откуда лучше виден лунный свет на горах. Я и сейчас не хочу спускаться вниз.

Мой опыт, во всяком случае, научил меня следующему: если человек смело шагает к своей мечте и пытается жить так, как она ему подсказывает, его ожидает успех, какого не дано будничному существованию. Кое-что он оставит позади, перешагнет какие-то невидимые границы; вокруг него и внутри него установятся новые, всеобщие и более свободные законы, или старые будут истолкованы в его пользу в более широком смысле, и он обретет свободу, подобающую высшему существу. Чем более он упростит свою жизнь, тем проще представятся ему всемирные законы, и одиночество не будет для него одиночеством, бедность перестанет быть бедностью, а слабость — слабостью. Если ты выстроил воздушные замки, твой труд не пропал даром; именно там им и место. Тебе остается подвести под них фундамент.

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

4 из 5
★★★★☆
Читать дальше......

четверг, 7 января 2016 г.

Ремизов и его таёжная проза

О Ремизове как-то немного известно: писатель начинающий, пара книг всего в библиографии - сборник рассказов "Кетанда" и роман "Воля вольная", принёсший какую-то известность и попавший в финалисты премии "Большая книга" в 2014-ом. Работал геодезистом в тайге, и учителем литературы, так что моральное право писать про быт таёжный имеет полное. Что и делает. Обе книги прочитал не без интереса, плюс прихватил ещё небольшую повесть из журнала "Новый мир". Но обо всём по порядку.

"Воля вольная"



О "Воле вольной", с которой я и начал своё знакомство с творчеством Ремизова в сети написано достаточно много. То ли с лёгкой подачи самого автора, то ли с острого журналистского словца его окрестили "романом о воровской тоске русского мужика по воле". С этим можно частично согласиться, но я бы не стал. Ремизову отлично удаются медитативные описания как величественной дальневосточной природы (события происходят на Дальнем Востоке, но источники вдохновения, как утверждает автор, черпались скорее из восточно-сибирской тайги Приангарья), так и неторопливого быта промысловиков. Настолько живо и тепло, что зачитываешься и закутываешься в сладкую негу, и вот кажется уже, что сам сидишь у тёплой печурки в зимовье, на крыше по колено снега, под потолком висят соболиные шкурки, а на улице собака грызёт мерзлую рыбину. Одним словом - декорации расписаны на пять с плюсом, чувствуется и личный опыт, и любовь к природе и её грозным силам, с которыми нужно по-особому выстраивать отношения.
Роман мужской, в этом даже сомнения нет - и быт, и характеры, и разговоры - всё мужское: где-то небрежность, где-то гнев, где-то крепкое словцо. Женщинам в романе места как-то не нашлось. А там, где нашлось, описаны они были простовато, даже примитивно.
Идея сюжета достаточно интересная: глухой дальневосточный посёлок Рыбачий, наше время, где вся жизнь крутится вокруг браконьерства поневоле - иначе и денег взять неоткуда. Местные мужики промышляют икрой да соболем, а ментовские царьки сидят в доле и закрывают глаза на незаконный по бумагам вылов. Вроде какой-то баланс сил соблюдается, до поры до времени, пока дело не доходит до нелепого конфликта между местным промысловиком и ставленным с Москвы майором Гнидюком (фамилия говорящая), который разрастается как снежный ком и подминает под себя всех, даже случайных, казалось бы, людей. Но случайных здесь нет - все плотно связаны общим устройством жизни, нравится он жителям или нет.
Тема романа, на самом деле, о социальном конфликте, дисбалансе между теми, столичными из телевизора, и местными, настоящими. Между властью, которая пришла устанавливать свои порядки и теми, кто на этой земле уже не одно поколение трудится и охотится. Между местными мужиками, которые голыми руками Урал в тайге ремонтируют и москвичом, который приехал на купленный им участок с дорогим австрийским ружьём. Между теми, кто эту самую новую власть с их порядками нехотя признаёт и теми, кто в открытую плюёт им в рожу.
В этих конфликтах и вспоминаются героям времена "воли вольной", когда все мужики ловили рыбу, но меру знали. Времена дедов и отцов, времена справедливости и однозначности, когда "взятка" - это там, где власть, а здесь в глуши её и не было никогда.
Кульминацией всех этих мыслей становится монолог Степана Кобяка, одного из главных героев, с которым и разгорелся конфликт у местного блюстителя порядка. Приведу его тут полностью:

" — Я много думал, — заговорил Степан Кобяков. — И раньше, и теперь вот. Родственники у меня в Канаде. Звали, тайга, мол, такая же, давай, тут, мол ты сам себе хозяин… А как уехать? Кобяковы одни из первых пришли на Охотский берег. Острова Кобякова есть в море, хребет Кобякова… Сколько здесь дедов моих лежит?! Думал, отсижусь, как-то рассосется… Даже бомбоубежище себе в стланиках приготовил. А позавчера на озеро пошел. Оно когда-то наше было… деда своего вспоминал. Он девяносто шестого года рождения, всякого в жизни повидал. Похлеще нашего пришлось… Но не в этом дело… Степан разговорился, видно было, что решения его не простые. Колька сидел тихо и с удивлением слушал, за всю жизнь от Кобякова столько слов не услышал. Ему даже странно было, что у Степана дед был, о котором он так вспоминает. — В нем сила была, не согнешь! — Степан нахмурился и посмотрел на чуть коптящий фитиль керосиновой лампы. — Он точно знал, чем живет. И поэтому знал, как жить! Добро — добро, зло — зло! Все! Никто его с этих правил не свернул бы! А я что сейчас? Как сучёнка престарелая должен пресмыкаться туда-сюда… И перед кем? Перед теми, у кого даже совести не осталось? Думаете, от хорошей жизни все время в лесу торчу? Смотреть невозможно, что там творится! Какое добро, какое зло? Воры, красиво нарядившись, жизнью управляют, стыд, совесть — все к едрёной матери… И знаете, что я понял… — Тут он надолго замолчал. Потом поднял голову: — Слишком мы за свою шкуру трясемся. В этом вся херня. Думаем, только пожрать, да попить родились на белый свет, вот и ходим жидко. — Помолчал, — Может, есть смысл положить себя за дело? Вон кижуч, да кета гибнут, и дело получается. А дали бы слабину, вильнули бы в сторону, и всё — на них бы все и кончилось! Может, и нам без этого никак? Студент крякнул восхищенно и шмыгнул носом. — Я сейчас очень серьезно говорю! — заволновался Степан. — Может, и лососей и нас одинаково задумывали?! Принцип один! А мы его нарушаем! Может, мы уже вильнули, и обратной дороги нет? Что делать-то тогда? Что я внуку своему скажу? Ментам платите столько, прокурору столько, кому еще? Президенту? В конверте ему по почте отправлять? И что внуки про меня подумают? Подумают, слабак был дед! Шкуру свою берег! Из-за него и наша жизнь такая паскудная? Или подумают, раз он платил, значит, и мы должны нагибаться, где скажут! — помолчал. — Пусть лучше знают, что их дед залупился против этого дерьма. Мне, даже мертвому, приятнее так будет думать! Такая херня, ребята. Себя мне не жалко… — Степан говорил хмуро и почти спокойно. Как будто дело это было у него окончательно решенное. "

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

" Балабан подсел к печке, скрипнув дверцей, не по-таёжному выбросил объедки в огонь. Достал сигареты: — Я, мужики, о другой свободе… Они на нее не влияют. Мы ведь все равно живем такой жизнью, какой живем. Мы сами ее создаем, не власти. — Он задумался. — Мы ведь сами ленивые, да злые, да жадные, при чем здесь власти? Сами можем помочь или не помочь соседу. Мы все решаем. Поэтому… все справедливо устроено… Он помолчал, потом продолжил тихо и очень неторопливо: — Совсем не правители нами правят… другие законы. Их мы нарушаем, а не надо бы! Человеческую свою сущность не терять, радость друг к другу, радость жизни… Я тут иду дня три назад мимо стекляшки-гастронома вечером. Там за ним бичи… — Ну, — поддержал Колька, — в теплице живут. — Да-да, слышу веселье у них, зашел. Там весь букет: Кеша Попирай, Володя Городской, Халда, Рома Абрамович, Вася Изжога… девчонки у них, на столе скатерть чистая, поляна накрыта, и пьют шампанское! Володе Городскому пятьдесят лет стукнуло. Сидят они в этом сарае ночном и справляют. Поиграй, говорят, я играю! Они веселятся, как дети — нет у них ничего, жить негде, а они танцевать взялись. Я играю и думаю — вот, что важно — жизнь любить! Друг друга! "

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

4 из 5

★★★★☆


"Кетанда" и "Одинокое путешествие на грани зимы".



Если в романе Ремизов чувствовал себя скорее неуютно от того, что жанр обязывает как-то разворачивать события, а не просто делать красивые, но маленькие зарисовки, то малая проза из рассказов и повестей у Ремизова очень и очень хороша. В сборнике "Кетанда" каждый рассказ оставляет приятное послевкусие, эта проза порой грустна и лирична, а порой радостна какой-то первородной радостью, радостью единения с природой и странной радостью одиночества.
Тема взаимодействия с природой пронизывает почти все рассказы, за исключением, разве что, "Бабушкиной вазы" и "Картины". Герои что-то ищут в ней, бегут в неё от мирских проблем и находят какие-то свои ответы, осознают своё место под солнцем, сбрасывая весь этот груз социальной ответственности и оставаясь наедине с матерью всего живого. Это и забравшийся в глушь преподаватель в "Кетанде", и рисующий слесарь в "Картине".
Нередко автор обращается и к проблеме "отцов и детей", с обоих сторон. Трогательная тоска отца по детским временам, когда они с сынишкой ездили на охоту да на рыбалку ходили ("Одинокое путешествие на грани зимы"). И непонятное ещё чувство скукоты в родительском доме, охватывающая подростка-горожанина, который ещё полчаса назад с удовольствием шёл с электрички, чтобы поскорее встретиться с дедом ("Носки без резинок"). И растерянность отца в "Гуси гуси, га-га-га", забывшего ружьё на гусиной охоте и едва не заплутавшего с сыном на лодке.
Люди, не разобравшиеся в своей жизни и ищущие покоя и ответов, как в "Командировке" или в "Отце". Положившие жизнь на заработки ("Запах ольхи") или не достигшие её, как в "Лёхе и Петьке". Решившиеся на благородный поступок, но когда всё вышло не по-людски и зря - "Пол-лося".
Типичные герои ремизовских рассказов - одинокие мужики, в возрасте. Одинокие среди людей, ищущие утешения своей души и своих проблем у матери-природы.

5 из 5

★★★★★

Читать дальше......

понедельник, 31 августа 2015 г.

Пара наблюдений о западной литературе и документалистике

В последнее время отметил пару особенностей некоторых западных книг (нехудожественных) и документалистики, которые немного раздражают.
1. Чрезмерное повторение одних и тех же мыслей. Недавно я начал читать книгу С.Брауна "Software architecture for developers". И не закончил. Потому что количество повторов в рамках одной главы у автора просто зашкаливает. Выдвинутые в начале тезисы и положения неоднократно повторяются в каждой главе как мантра и даже кочуют в соседние. В результате возникает ощущение, что автор держит тебя за идиота, который с одного-двух раз не понимает. Кроме того, возникает ощущение "воды" в тексте: рассчитываем получить порцию смысла, а нам скармливают одно и тоже, не удосуживаясь даже порой поменять соус. Получатся, что дельные в целом мысли тонут в собственном соку. Для таких книг я вижу полезность сервисов, которые предоставляют "краткое содержание" и дают выжимку. Думаю, что подобную выжимку этой книги я сделаю сам, когда через некоторое время к ней вернусь.
Что-то подобное можно увидеть и в документальных фильмах. Взять к примеру, "Mythbusters" или документалку о каком-нибудь катаклизме. В течение часа нам показывают то, что можно было бы изложить в 20 минут. Повторы и повторы, одни и те же кадры, одна и та же информация. Повествование продвигается по принципу "шаг вперед и два назад": мы вроде и движемся, но очень нерационально и медленно. Плюс прерывается рекламой, после которой нас опять пытаются ввести в курс дела, заново рассказывая основные моменты. Раздражает жутко.
2. Чрезмерно аккуратный, я бы даже сказал извиняющийся или оправдывающийся тон в изложении своей позиции по какой-нибудь "острой" социальной проблеме или теме: гендерные отношения, расовые различия, религия и т.п. Я не знаю, как у них в США там все устроено, но со стороны кажется, будто за сравнение, скажем мужчины и женщины в каком-то деле или (не дай бог) сопоставление автором людей разной расы его распнут на кресте праведного гнева. Вероятно, примерно так все и обстоит, раз люди в своей книге вынуждены заранее извиняться за еще не высказанную мысль. Или высказанную ранее. Так, например, в переводимом мной Вайнберге и его "Психологии программирования" есть занимательный момент, где он сравнивает написание идеальной программы с выбором идеальной невесты:

"Требование эффективности и адаптируемости в одной программе — это как желание жениться на красавице и скромняжке в одном лице. Хотя скромность и красота иногда сочетаются в одной женщине, нам, вероятнее всего, придется выбирать".

Редакция 1971 года содержит этот кусок текста, однако, в юбилейном 25-летнем переиздании в примечании к главе Вайнберг уже старательно извиняется:

"Десять лет назад я был смущен несколько сексистским языком, который так бессознательно использовался в семидесятых («прекрасная и скромная жена» и др.), но теперь я довольно скрупулезно перечитываю свои старые работы и искореняю эти выражения"

Я не вижу, однако, сексизма в его словах. В конце концов, мера красоты ("прекрасная жена") - это вообще субъективная оценка со стороны, а скромность вроде как только украшает человека. Если кого-то коробит якобы небольшая вероятность того, что эти качества встретятся вместе в одной женщине, то это опять же субъективная оценка, потому что ни скромность, ни красоту измерить и статистически подсчитать невозможно (читай - объективно нельзя оценить). Любое мнение субъективно хотя бы отчасти, и поводом для упреков быть не может.
Тот факт, что автор обращается к такому примеру как к исключительно редкому случаю тоже не может быть поводом для его травли: его задача - привести простой и понятный всем пример совмещения несовместимого, не исключая, однако такой возможности. И тут нет его вины в том, что все его поняли: раз поняли так однозначно, значит явление имеет место быть, значит это широко известное эмперическое наблюдение, только и всего.
Такие вот мысли на утро понедельника.
Читать дальше......

четверг, 25 июня 2015 г.

[Перевод] G. Weinberg - Что делает программу хорошей?


Итак, если мы собираемся рассматривать программирование как человеческую деятельность, то нам нужно разработать какие-то критерии для её оценивания. Это то, что мы будем подразумевать, заявляя, что один программист лучше другого, или что «эта» программа лучше «той». Хоть у каждого из нас и есть своё мнение на этот счёт, мы увидим, что ответы на эти вопросы не столь просты и очевидны, как может показаться на первый взгляд. Потому как программирование — это не просто человеческая деятельность: это сложная человеческая деятельность.
Давайте снова вспомним наш маленький пример из первой главы.

Пример 1.
XXX: PROCEDURE OPTIONS(MAIN);
     DECLARE B(1000) FIXED (7,2),
             C FIXED (11,2),
             I,J FIXED BINARY;
     C = 0;
     DO I = 1 TO 10;
         GET LIST((B(J) DO J = 1 TO 1000));
         DO J = 1 TO 1000
             C = C + B(J);
             END;
         END;
     PUT LIST('SUM IS', C);
     END XXX;

Проанализировав этот кусок кода более подробно мы увидим, что лишь небольшая его часть (около 20 %) сосредоточена непосредственно на решении задачи. Другие 80 % можно почти полностью выбросить (если не «физически», то хотя бы в воображении). На самом деле, имеющаяся проблема ограниченного дискового пространства может быть решена с помощью подходящей виртуальной машины: то есть, даже физические ограничения ЭВМ потенциально можно преодолеть с помощью грамотного психологического подхода к проектированию.
Приведенный пример, несмотря на свой небольшой размер, довольно типичен в своем отношении полезного кода, непосредственно решающего задачу, ко всему объему написанного программного кода. Поскольку люди обычно не читают программ, то немногие знают, насколько часто встречается эта ситуация. А встречается она очень часто, и это даёт нам широкое поле для действий по улучшению нашей деятельности как программистов. И всё же, в вопросе о хорошем программировании есть кое-что еще, помимо измерения количества ненужного, или, по крайней мере, вспомогательного кода. На самом деле мы не можем оценить программу саму по себе и заключить из этого, хорошая она или плохая.
Многие программисты подсознательно понимают, что есть такая вещь, как «хорошее программирование» (good programming). Хотя это подсознательное чувство может ощущаться вполне реально, из него никак не удаётся вывести такое понятие, как хорошая программа: по крайней мере, получить его в таком виде, чтобы, в отрыве от контекста, в котором она была написана и в котором она используется заключить, например, что степень её «хорошести» около 83,72 %.
Взглянем ещё раз на пример 1.Хороша ли эта программа? Возможно, она неуклюжа, но это только с одной стороны. В конце концов, мы заключили, что она неуклюжа только после того, как прочитали её код. А поскольку код обычной среднестатистической программы никто не читает, его изящность вряд ли можно принять как абсолютный показатель «хорошести» (goodness). Эффективна ли эта программа? Вряд ли мы сможем ответить на этот вопрос, не зная ничего о машине, которая её запускает, о компиляторе, и о критичности задачи, которую ей предстоит решать. Выполнится ли она в отведённое время? Какие усилия для этого придётся предпринять? Выполнит ли программа свой контракт? Мы не можем знать ответы на эти вопросы, едва взглянув на её код.
Нашему изучению психологии программирования будет препятствовать наша же неспособность измерить степень «хорошести» программы в абсолютных показателях. Но можем ли мы по крайней мере измерить её по относительной шкале? Можем ли мы сказать, что программа А лучше или хуже программы В? К сожалению, в общем случае мы даже этого не можем сделать по нескольким причинам. Во-первых, а существует ли ещё одна подобная программа для сравнения? А если она существует, как например, альтернативный компилятор ФОРТРАНа, как мы сможем договориться об относительной важности тех или иных её особенностей? Будет ли компилятор, который быстро компилирует заведомо медленный код лучше того, который медленно компилирует заведомо быстрый код?
И всё таки, бывают ли случаи, когда мы можем ввести относительную шкалу? Разве компьютер, который быстро компилирует заведомо быстрый код не лучше того, который долго и мучительно компилирует заведомо медленный код? Стоит признать, что иногда такие сравнения уместны, хотя не следует торопиться их делать. Существуют и другие метрики производительности компиляторов, помимо скорости компиляции. Это и наличие диагностики, и покрытая область языка, и надёжность объектного кода, и мониторинг времени запуска и многие другие. В очень редких случаях мы сможем найти две программы, которые будут настолько схожи, чтобы их можно было бы сравнить прямо по пунктам и найти лучшую по сумме баллов.
Гораздо чаще нам придётся оценивать программы не по отношению к другим, а по отношению к задаче, для решения которой они были написаны. Беспристрастно рассмотрев условия задачи, мы никогда не будем искать самую лучшую программу для её решения, редко будем искать хорошую, но всегда будем искать ту, которая удовлетворяет требованиям задачи.

Требования.

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

Однажды одного программиста пригласили на работу в Детройт для помощи в отладке одной большой программы, которая определяла потребность в деталях для производства ряда автомобилей. Входными данными для программы был набор перфокарт, каждая из которых представляла собой заказ на покупку автомобиля, а отверстия в ней кодировали информацию о желаемых характеристиках конкретного автомобиля от заказчика. Программа превращала перечисленные заказчиком требования в детали, которые нужно было изготовить для создания такого автомобиля. Например, выбор обивки для заднего сидения определялся такими факторами как цвет обивки, стиль пошива, качество и класс материала для обивки и наличие кондиционера в салоне автомобиля. Последняя опция «кондиционер» является хорошим примером того, насколько сложной была задача программы: хотя со стороны и кажется, что между наличием кондиционера в салоне и выбором обивки для заднего сидения нет никакой связи, но на самом деле его присутствие требует достаточно много места для установки воздуховодов. В общем случае, каждая опция может иметь влияние на выбор тех или иных деталей для производства, поэтому определение требований к ним была превосходной задачей для вычисления на компьютере.
К сожалению, когда приглашённый программист появился, основной подход к решению этой задачи уже был утверждён и использован — и он был, мягко говоря, неудачным. Каждая опция, зависящая от того или иного выбора заказчика, была выделена в отдельную ветвь программы. Получилось огромное ветвистое дерево условий с более чем пятью тысячами ветвей, изображающих решения, которые сводятся к выбору той или иной детали. Представленную в таком виде (с 16-ю программистами, параллельно корпевшими над ней) программу было совершенно невозможно отлаживать, так как приходилось тестировать каждый сценарий отдельно. Для этого данные с каждой перфокарты приходилось загружать в ЭВМ и наблюдать, как поведёт себя программа в том или ином случае. Когда прибыл наш друг, дела шли настолько плохо, что входные карты, в которых была описана вполне обычная для автомобиля конфигурация, в ходе работы программы порождали на свет монстрообразные железяки с восемью колёсами, без двигателя и тремя наборами обивки для сидений. Короче говоря, это был ад.
Как и обычно бывает с кошмарными программами, никто её таковой не считал. Наоборот, целая команда вышла работать в двойную смену, чтобы найти и уничтожить все баги, попутно добирая программистов со всей страны, включая нашего героя. Естественно, это привело к ещё большей путанице, и наш программист, после нескольких дней работы в таком режиме, понял, что дело безнадёжно — нет ни единой причины пахать здесь день и ночь, вдали от своего дома и своей семьи. Его, конечно, резко осудили за такое упадническое отношение, но всё же позволили оставить проект.
Оказавшись в самолёте, он, наконец, получил время спокойно всё обдумать и немедленно обнаружил ошибку в использованном подходе к решению задачи. К нему пришло осознание, что гораздо более удачным подходом будет разделить работу на две части. В главной программе будет использован простой цикл по множеству специально разработанных конструкторских таблиц, тем самым все решения можно сделать в рамках одной ветки, которая повторно применяется ко всем частям таблицы. Таким образом, программа по крайней мере будет гарантированно генерировать верное число колёс, двигателей и так далее. Сами таблицы будут собираться из входных данных, написанных в форме инженерных спецификаций. Это позволит самим инженерам, а не программистам, проверять их корректность, а также заменять одну спецификацию на другую без изменения всех остальных ниже по дереву решений.
К тому времени, как он сошёл с трапа самолёта, он успел записать код для обеих программ. Потребовался один день, чтобы проверить их корректность и ещё два дня на работу с местными заводскими инженерами для составления этих самых входных карточек со спецификациями. После недели тестирования на заводе он уже собирался лететь обратно в Детройт, как вдруг получил телеграмму о закрытии проекта по причине невозможности его реализации.
После телефонного звонка и спешного перелёта, наш герой вернулся в Детройт со своей версией программы. Продемонстрировав её руководству, он смог убедить их, что проект может быть реализуем, и потому попросил собрать снова команду программистов для презентации своей версии.
Естественно, другие программисты встретили его достаточно холодно (это феномен, к которому мы ещё вернёмся), но во время презентации все сидели тихо и слушали. Даже в конце презентации, вопросов не было совсем — до тех пор, пока проектировщик и создатель предыдущей версии программы не поднял руку.
«И сколько времени требуется вашей программе для решения задачи?» — спросил он, явно подчеркивая слово вашей.
«Зависит от входных данных,» — ответил программист, — «но в среднем где-то 10 секунд на карту»
«Ага.» — триумфально подметил оппонент. «Но моей программе для этого потребуется всего одна секунда на карту!».
Все собравшиеся, которые так или иначе внесли свой вклад в старую и «быструю» версию программы, вздохнули с облегчением. Но наш герой, который был моложе и понаивнее, совсем не смутился этим замечанием. Вместо этого он спокойно подметил: «Но ваша программа не работает. Если программа не должна работать, то я могу написать такую, которой потребуется одна миллисекунда на карту, что вообще больше скорости нашего считывающего устройства».

Это точное замечание, не добавившее, однако, друзей нашему программисту, содержит одну фундаментальную истину, на которую должно опираться написание любых программ. Если программа не работает, то все оценки её эффективности, адаптируемости или стоимости не имеют никакого значения. Однако, нужно понимать, что безупречная программа вряд ли когда-либо была написана вообще. Любая действительно большая и сложная программа имеет «ещё один небольшой баг». Таким образом, существуют различные степени соответствия результата работы программы её требованиям, поэтому при оценке программ следует учитывать различные типы её «неидеальности».
Для любого компилятора, например, существуют по меньшей мере несколько «патологических» случаев, которые он не может скомпилировать корректно. Что означает «патологический» зависит от нескольких точек зрения. Если это происходит с вашей программой, вы вряд ли станете рассматривать этот случай как патологический для компилятора, ведь у многих тысяч других пользователей этот баг вообще никогда не возникал и всё ок. Разработчик компилятора, однако, должен оценивать его ошибки исходя из числа пользователей, которые налетели на этот баг и стоимости ущерба, который он причинил. Это не всегда делается научным методом. Наоборот, наиболее часто обращают внимание на самого «громкого» и назойливого пользователя, или того, кто жалуется напрямую начальству разработчика. Но какой бы компилятор не был выбран, баги неизбежно появляются. И этот факт огорчает пользователей, столкнувшихся с ними, ведь они пользуются абсолютно тем же продуктом, что и тысячи других, которых, однако, он полностью устраивает.
В результате, мы явно видим разницу между программой, которая была написана для одного пользователя и продуктом, которым пользуется много людей. Когда пользователей много, то и требований к программе становится больше. Когда число требований растёт, то появляется множество определений того, что понимать под работающей программой. В наших дискуссиях о практиках программирования, мы собираемся принять во внимание разницу между программой, написанной для одного пользователя и программой, которым пользуется много людей. Они должны оцениваться по-разному, и эти оценки должны производиться разными методами.

Планирование

Даже после того, как мы оставили позади вопрос о соответствии результата работы программы её требованиям, вопрос об эффективности всё ещё не выходит на первый план. Одна из постоянно повторяющихся проблем программирования — соответствие плану, ведь программа, которая была создана слишком поздно попросту бесполезна. По крайней мере, мы должны сопоставить убытки от неимения программы в срок с потенциальной экономией, которые может принести более эффективная программа. Был один примечательный случай, когда заказчик программы прикинул, что линейно написанный программный код сохранит его нефтеперерабатывающей компании больше миллиона долларов в месяц. Однако, задержка в разработке этой программы длиной в один месяц приведёт к потере такой суммы денег, которую не перекроет даже её последующая бесперерывная десятилетняя работа!
Убытки от поздней поставки программного обеспечения не всегда настолько серьёзны, но даже если они незначительны, то скорее всего (по крайней мере в США) они повлекут за собой кучу неприятностей. На самом деле, среднестатистический менеджер предпочтёт, чтобы проект был запланирован на год и за этот же срок выполнился, нежели был запланирован на полгода, а выполнился за 9 месяцев. Это та область, в которой возможны некоторые успешные психологические исследования. Однако из других источников существуют основания полагать, что людей раздражает не столько время ожидания чего-либо, сколько отклонение этого времени от привычных средних норм. Так, например, большинство людей предпочтут каждое утро ждать автобус до работы фиксированные 10 минут, нежели 4 дня в неделю ждать его по одной минуте, а один раз в неделю прождать его 26 минут. Хотя среднее время ожидания во втором случае всего 6 минут, напряжение, вызванное длительным и внезапным ожиданием сильнее, чем сокращение средней длительности ежедневного ожидания автобуса при втором варианте.
Если это наблюдение справедливо и для программирования, то все попытки изучения эффективности конкретной практики программирования должны учитывать отклонения времени разработки, а не просто среднюю её продолжительность, как это обычно делается. Следует учитывать влияние этого фактора во всех последующих обсуждениях.

Адаптируемость

Разобравшись с предыдущими вопросами, мы можем предположить, что вот, наконец, мы добрались до вопроса эффективности как меры «хорошести» программы. Не умаляя достоинств названных факторов будет справедливо вначале разобраться также с фактором адаптируемости программ. Несомненно, существуют такие программы, которые используются один раз и затем выбрасываются на помойку. Не секрет также и то, что ещё большее количество программ выбрасывается вообще до своего первого использования. Тем не менее, большинство программ, особенно написанных профессиональными программистами, существуют и функционируют в течение какого-то определенного отрезка времени. И во время своей «жизни» большинство из них подвергается изменениям.
Мало кто из программистов, независимо от опыта, станет спорить с тем, что большинство программ изменяется в течение всего времени их использования. Почему же в том случае, когда нам нужно внести изменения в ту или иную программу, мы зачастую воспринимаем это как адский труд, и скорее соглашаемся выбросить всё и переписать заново? Чтение программ даёт нам некоторое понимание этого, так как мы редко можем отыскать программу, которая писалась заведомо с заделом на нужные изменения. Но это лишь симптом, а не заболевание. Почему программисты, которые прекрасно знают о том, что их программы рано или поздно неизбежно будут изменены, пишут их таким образом, будто вовсе не думают об этом? Почему вместо этого все их творения порой выглядят так, словно они специально были дьявольски хитро защищены от изменений, словно гробницы фараонов от расхитителей?
Ответы на эти вопросы есть и они лежат в направлении наших психологических исследований. Но на данном этапе наша задача не отвечать на них, а просто поднять их и осознать их значимость в наших дискуссиях о том, что делает программы хорошими. В связи с этим возникает ещё один вопрос, касающийся, конечно, программной документации: для чего мы пишем документацию к программе, если не для того, чтобы её было проще модифицировать? Согласимся, что качество документации и простота изменений (и запланированных, и незапланированных), должны быть учтены в любой программе или приняты во внимание программистом, который пишет эту программу.
Стоит сказать ещё пару слов, прежде чем мы перейдём к вопросу эффективности. Адаптируемость стоит денег. Случается, конечно, что мы всё же получаем программу, которая и адаптируема, и устраивает нас как заказчиков во всех других отношениях. Но в общем случае мы платим за то, что мы получаем — а получаем мы зачастую не то, за что заплатили.
В своих математических работах по генетике, Р.А. Фишер вывел закон, который часто называют Основным Законом Фишера — очень говорящее название, учитывая важность многих других его теорем. Основная Теорема (или Закон) Фишера гласит, что система, наилучшим образом адаптированная к конкретной окружающей среде, обладает худшей адаптивностью по отношению к другим средам. Немного расширив наше воображение, мы увидим, что этот закон может быть также хорошо применим для компьютерных программ, как и для улиток, мушек-дрозофил или черепах.
Чтобы программа была эффективной, она должна воспользоваться особенностями задачи, которую призвана решать, а также особенностями платформы, на которой она будет запущена. Программы, которые игнорируют особенности машины, работают с риском понести серьёзные «штрафы» по производительности, а программисты, которые умеют использовать особенности решаемой проблемы — это как раз те люди, которые могут всё это дело ускорять, оптимизировать и уменьшать в размерах.
Один пример, не очень редкий для такого типа программирования — это написание ассемблерных вставок, которая требует владения специальной техникой отслеживания таких мест в коде, которые можно заменить ассемблером. Один программист однажды заметил, что в программе присутствует определенное число, которое можно использовать как целочисленный множитель для кода операции. Такое использование позволяло практически всегда получать на выходе непустой список неповторяющихся адресов из допустимого диапазона. Таким образом, используя этот множитель, программисту удавалось получать компактное и сравнительно быстрое преобразование из символьного кода в машинный язык.
Программист был щедро вознагражден за свою гениальность — его пример приводили нескольким поколениям более юных программистов как образец той работы, к которой они должны стремиться. К сожалению, вскоре, написанный им кусок кода приказал долго жить, потому что, как это обычно и случается, набор допустимых кодов операций для ЭВМ был расширен. Когда эта небольшая порция новых кодов была добавлена, старый множитель потерял все свои магические свойства компактности и уникальности. Как оказалось впоследствии, для нового расширенного набора кодов такой множитель вообще невозможно было отыскать.
Результатом попыток его поиска стал отказ от этого хитрого приёма в пользу поиска по более общим хеш-таблицам, которые могли содержать дубликаты. К несчастью, старый приём была заброшен лишь после большого количества попыток применить его к изменившимся условиям. Но это было лишь потерей времени. В ретроспективе, экономия времени от его использования за всё время многократно превысилась потерей времени от попыток применить его к новому набору кодов операций. Если бы более общий метод с использованием хеш-таблиц был задействован сразу же (вместо старого приёма, хоть он и обладал большей эффективностью), то (и в этом «то» и заключается наш пример) изменений было бы минимум и это сэкономило бы уйму времени. И действительно, вся модификация метода состояла бы только в добавлении новых кодов операций в определенное место таблицы.
Можно привести ещё сотни подобных примеров, но суть у них одна. Когда мы требуем от программы эффективности, мы тем самым зачастую требуем «жёсткий» код, который будет сложно изменить. В терминах высокоуровневого программирования, мы часто спускаемся на уровень машинного языка, чтобы сделать код более эффективным. Тем самым мы жертвуем по меньшей мере одним из преимуществ высокоуровневой программы — способностью к переносимости между машинами и, в действительности, привязываемся к конкретной машине или реализации.
В самом деле, менеджеры, активно ратующие за эффективность — это те самые люди, которые будут рвать на себе волосы, когда узнают о цене изменения написанной программы. В то же время менеджеры, которые требуют обобщенных и легко модифицируемых программ не станут жаловаться, когда обнаружат, насколько медленными и большими оказываются эти программы. Нам нужно трезво оценивать такие вещи: ни психология, ни магия не поможет нам достичь одновременно двух взаимоисключающих целей. Требование эффективности и адаптируемости в одной программе — это как желание жениться на красавице и скромняжке в одном лице. Хотя скромность и красота бывает сочетаются в одной женщине, нам, вероятнее всего, придется выбирать. В конце концов, это лучше, чем вообще ничего.

Эффективность

Оценка настоящей эффективности программы — это не настолько простая задача, как может показаться на первый взгляд. Во-первых, эффективность не всегда можно измерить в терминах времени запуска, которое обычно представляют как разницу между временем до и после запуска программы. Например, широко используемый критерий «скорость компилятора» — это число перфокарт, которые он сможет обработать за единицу времени (минуту). Если мы попытаемся использовать этот критерий для сравнения скорости выполнения инструкций на ассемблере с компилятором, скажем, ФОРТРАНа, то ассемблерная программа, скорее всего, окажется более эффективной, так как каждая перфокарта со входными данными для неё будет содержать меньше информации. Иногда компиляторы сравнивают на основе числа машинных команд в единицу времени (минуту), но такой критерий заставляет нас давать фору компилятору просто потому, что он многословен при переводе в объектный код.
Компилятор — это, конечно, особый «зверь», поскольку в его случае мы должны измерять эффективность произведенного кода вместе с эффективностью самого процесса компиляции. Но всё же, поскольку эффективность компиляторов — это тема многих жарких дискуссий, будет полезно привести пример, иллюстрирующий насколько просто мы можем запутаться в вопросах эффективности. Представьте, например, сравнение двух компиляторов одного языка с помощью критерия «количество перфокарт в минуту». Первая ловушка здесь лежит в части «компиляторы одного языка». Очень малое число компиляторов обрабатывают в точности одни и те же области одной версии какого-либо языка. Поэтому, если существует какая-то разница между двумя компиляторами, мы будем вынуждены отрегулировать эффективность, измеренную с помощью выбранного критерия для подсчёта разницы в полученных значениях этих двух версий.
Эффект этой «небольшой разницы» в покрытии исходного языка разными компиляторами может быть просто поразительным. Зачастую, если разработчик компилятора не покрывает процентов 10 возможностей языка, то ему удаётся создать компилятор, который работает на 50 процентов быстрее. К сожалению, какие именно 10 процентов языка не вошли зависит от машины и способа компилирования, так что проектировщики языка попросту не могут ответить, какие подмножества их языка можно скомпилируются эффективнее.
Улучшения в эффективности возможны благодаря ослаблению требований в других областях. Действительно, если мы в конкретной программе больше всего волнуемся за эффективность, то первым делом необходимо всегда искать те области, в которых требования могут быть изменены в угоду эффективной обработки компьютером и в ущерб удобству пользователей. Разумеется, время обработки компьютером — это не единственный элемент в типичном проекте, который стоит денег. Время людей также стоит денег. Поэтому, придётся хорошенько всё взвесить, подсчитать, составить отчёт, что также займёт какое-то время. И мы должны очень рационально подойти к этому выбору, но гораздо чаще выбор делается ещё до того, как вы пойдёте показывать ваш отчёт начальству.
Сокращение требований может иметь и отрицательный эффект для времени обработки. Если, например, огромная работа по ручной обработке входных данных была оставлена в системе для облегчения вычислений компьютера, мы можем обнаружить, что мы платим гораздо больше за повторные запуски, чем экономим на эффективности. Этот эффект довольно часто можно наблюдать во время сравнения двух компиляторов, которые, несмотря на то, что они обрабатывают идентичные языки, различаются в диагностике и мониторинге запуска, которые они производят. Если мы сэкономим 20% в общем времени компиляции благодаря отключению или упрощению проверки ошибок, нам будет не лишним убедиться в том, что программисту не придётся делать на 40% больше запусков компилятора для получения того же количества диагностической информации.
Точно так же опасно вводить слишком простые критерии эффективности при запуске на одной машине, в одном окружении. Это просто детские шалости по сравнению со сложным процесом получения значимых оценок эффективности в мультипроцессорных или многопрограммных системах. Что будет лучше, занять 40 килобайт основного хранилища на час или 80 килобайт на 30 минут? Ответ на этот вопрос очень зависит от конкретного состояния машины, во время которого происходит запуск и он может меняться от одного запуска к другому. Например, в какой-то определенный день добавление 40 килобайт нагрузки на память никак не скажется на производительности машины и на выполнении других задач, в другой же день эти же 40 килобайт могут заблокировать машину на целый час.
Запуск на системах с динамической регулировкой нагрузки может сгладить некоторые колебания, возникающие с производительностью в мультипрограммных вычислениях, которые мы наблюдаем сегодня. Вполне может быть, что как и в случае с планированием в программировании, среднестатистический пользователь небольшому среднему времени запуска предпочтет небольшое среднее отклонение от него, чтобы рационально спланировать свою работу. Если это так, то все временные затрат от начала до конца работы должны быть обдуманы, распланированы и учтены, а не только «время обработки компьютером».
Отойдя немного в сторону компьютерного окружения, мы можем утверждать, что лучшие программы — это те, которые могут запускаться в различных объемах памяти и на машинах с различной конфигурацией. Такая программа не всегда будет эффективной для какой-то конкретной конфигурации (вспоминаем Основной Закон Фишера), но от неё можно ожидать более последовательные изменения производительности, потому что ей никогда не придётся простаивать без ресурсов. Машины с виртуальной памятью дают нам определенную гибкость без специальных приёмов программирования, хоть есть основания утверждать, что улучшение производительности можно получить даже в этом случае, если учесть кое-какие моменты.
Например, если нам известен размер страницы памяти нашей системы, мы можем избежать излишней её переразбивки путём формирования секций нашей программы таким образом, чтобы они входили в одну страницу памяти и не пересекали её границ, за исключением случаев логического перехода. Однако, если мы это сделаем, то программа станет менее эффективной на других платформах с другим размером страницы. Аналогично, мы можем выбрать алгоритм, которому потребуется не больше и не меньше памяти в пределах страницы, чем определено в нашей системе; но, опять же, такая программа не сможет воспользоваться преимуществами системы с избыточным размером страницы и выполнится самым неэффективным способом в системе с меньшим размером страницы памяти.
Все это говорит о том, что эффективность — это неясная и туманная проблема компьютерных вычислений. Более того, с ежегодным удешевлением стоимости вычислений и одновременным подорожанием работы программиста, мы давно прошли ту точку, в которой типичная установка программы затрачивала бо́льше ресурсов программиста, чем её непосредственная «производственная» работа. Этот дисбаланс еще более заметен, когда вся работа, ошибочно классифицируемая как «производственная», проходит под заголовком «отладка». Но, какими бы не были критерии, этот дисбаланс существует. И он растёт. И, как ожидается, с каждым годом мы будем всё меньше и меньше слышать об эффективности (efficiency), но все больше и больше о результативности (effectiveness).

Резюме

Вопрос того, что делает программу хорошей непрост, и не может иметь однозначно правильного ответа. Каждая программа может быть оценена по своим достоинствам и также по отношению к своему окружению. Вот несколько важных факторов:
1. Выполняет ли программа свой контракт? Соответствует ли она своим требованиям? Как хорошо она это делает?
2. Делает ли она свою работу в согласовании с планами и сроками и насколько большое отклонение от плана мы можем ожидать в зависимости от выбранного подхода?
3. Можно ли будет модифицировать программу в соответствии с изменившимися условиями? Сколько это будет стоить?
4. Насколько программа эффективна, и что мы подразумеваем под эффективностью? Не размениваем ли мы эффективность в одной области на неэффективность в другой?
В будущем, и особенно в дальнейших дискуссиях в этой книге, нам следует воздерживаться от использования таких выражений как «хорошая программа» или «хороший программист» в смысле некого термина, которое каждый понимает одинаково.

Вопросы

Для менеджеров
1. На каком основании вы вознаграждаете своих программистов? Не противоречат ли ваши критерии друг другу, как, например, запрос на эффективную и универсальную программу? Насколько откровенны вы со своими программистами в обозначении того, что вы ждёте от создаваемого ими продукта? Или же вы просто говорите им о том, что вы хотите получить быструю, маленькую, аккуратную, легко модифицируемую программу, лишенную ошибок за одну неделю?
2. Как программы, которые вы разрабатываете, выглядят с точки зрения адаптируемости? Дорого ли вам обходится изменение ваших программ? Если так, то очевидны ли вам те пункты ваших целей, поставленных перед программой, которые приводят к такому результату?
3. Насколько важно планирование в вашей организации? «Раз уж промахнулся, то всё равно на сколько» или вы ратуете за то, что общая согласованность лучше случайной удачи? Сталкивались ли вы со случаями, что программист выбирает не очень хорошую практику написания кода, лишь бы успеть к сроку, даже если он рискует застрять и вообще не закончить программу?

Для программистов
1. Формируете ли вы четко критерии для вашей программы перед началом проекта? Появляются ли эти критерии от вашего чувства важности того или иного качества программы, или же их формулирует вам ваш менеджер? Изменяются ли ваши критерии во время написания проекта, или же у вас есть четкая установка не менять их и постоянно на них ориентироваться?
2. Как часто вы во время написания программы думаете о том, кому придётся её модифицировать? Часто ли вы проклинали автора программы, которую пришлось модифицировать вам?
3. Пытались ли вы когда-нибудь сделать программу эффективнее в ущерб её завершению? Или «выполнить всё до дедлайна» вместо того, чтобы сделать всё правильно?

Комментарии к главе (юбилейное 25-летнее издание)

Крупнейший из новых факторов, определяющих то, как мы оцениваем качество кода — это экономический фактор. Программа, которая продаётся и приносит прибыль очевидно лучше той, которая этого не делает. По крайней мере, уже несколько человек из числа непрограммистов уверяли меня, что Билл Гейтс — это величайший в мире программист. В моей карьере программиста, большая часть написанного мной кода операционных систем, была благополучно выброшена, поэтому я не могу оценить его финансовую ценность. Но, положа руку на сердце, если цель написания программы — заработать денег, то лучшим программистом будет тот, чья программа больше этих самых денег заработает — ведь в таком случае она будет лучшей реализацией, удовлетворяющей своим требованиям.
В заглавной истории главы моей книги о противостоянии эффективности и результативности был приведен пример с чтением перфокарт, но суть его не меняется, какое бы устройство ввода не было использовано. Через множество лет, я определился с понятием, обобщающим этот случай: качество — это мера для какого-то человека. Для программистов того времени, скорость была более важной мерой, нежели соответствие требованиям. Изучение психологии оценки значимостей объясняет, почему разработчики делали именно тот выбор, который они делали — собирается пазл, который, в противном случае, стал бы просто древним мифом.
Прошедшие годы утвердили значимость временных отклонений в управлении качеством. Мы можем работать лучше в среднем, но если отклонения в запланированном времени остаются или даже возрастают, то заказчики остаются недовольными.
Десять лет назад я был смущен несколько сексистским языком, который так бессознательно использовался в семидесятых («прекрасная и скромная жена» и др.), но теперь я довольно скрупулезно перечитываю свои старые работы и искореняю эти выражения. Читая оригинальный текст книги сегодня, я увидел, что моё видение этих изменений в языке является следствием моего взросления и, к счастью, взросления всего общества в целом. Двадцать пять лет назад, мало кто из нас обращал внимание на то, насколько нелепые и дискредитирующие выражения мы использовали.
Многие менеджеры до сих пор хотят всего и сразу, и не могут понять важность поиска компромиссов в решаемых задачах для создания лучшего продукта из возможных. Компромисс между длительностью компьютерного вычисления и продолжительностью человеческой работы сместился, как и предполагалось. «И, как ожидается, с каждым годом мы будем всё меньше и меньше слышать об эффективности (efficiency), но все больше и больше о результативности (effectiveness)». Несмотря на это, до сих пор есть задачи, где эффективность важна, хотя и не вытесняет все остальное. Мы изучаем такие задачи.
Вообще говоря, я даже удивлен, насколько хорошо поставленные в конце главы вопросы выдержали проверку временем — с некоторыми незначительными исключениями. Кажется, что человеческое поведение обладает некой последовательностью, чего не скажешь о человеческих технологиях.
Читать дальше......

пятница, 19 июня 2015 г.

Книгомай: "Остров Медвежий", "Дерсу Узала", "По Уссурийскому Краю"

В этом году приходится много ездить в общественном транспорте. Я уже и не помню: то ли благодаря своим мыслям, то ли благодаря Гранину и его "Этой странной жизни" (об этой книге будет отдельный пост) я вдруг заметил, что эти поездки отбирают много времени. "Самое время сдуть пыль со своей читалки" - подумал я, ведь вместо праздного разглядывания улиц через стекло можно коротать время за чтением книг. А вот и первые ласточки.

Алистер Маклин - "Остров Медвежий".


Хотелось прочесть что-нибудь о приключениях на богом забытом острове близ Гренландских берегов, о суровой северной природе, о выживании на клочке земли без продовольствия и нежности со стороны природы, о вечных снегах и студеных морях. Одна из моих любимых тем. Уж не знаю, чем меня манят отдаленные и отнюдь не теплые места нашего земного шарика, но тема прямо таки любимая. Однако, меня ждало разочарование. Вместо всего этого я получил средней паршивости детективчик, основные действия которого происходят на посудине, которое держит курс на упомянутый остров.
Главный герой словно Шерлок (из одноименной экранизации с Дауни Младшим), с невозмутимым выражением лица шныряет по кораблю в поисках улик и строя свои гипотезы относительно происходящего. И все это вызывает хоть какой-то интерес ровно до того момента, как все герои этого, прямо-таки киношного (а фильм и вправду есть), действа не высаживаются на острове Медвежий. Тут начинается какое-то сумасшествие: и золото третьего рейха, и заговор Второй Мировой и куча других тем, которые интересны, возможно, любителям какого-нибудь РЕН-ТВ. Все это скатывается в кислую бондиану, которую хочется поскорее закрыть.
Красной нитью в рассказе идёт потребление виски: тут его хлещут без конца и края, и стар, и млад. Порой складывается ощущение, что все судовые запасы - это ящики с вискарём. Сразу видно, что автор произведения - шотландец. В целом, произведение мне не понравилось: возникло ощущение, что трачу драгоценное время на пустую книгу, но с новой и неклассической художественной литературой это не редкость. Не думаю, что в ближайшее время вернусь к этому автору. Детективы - не моё совершенно, хотя в библиографии Маклина есть множество таких произведений, по которым сняты фильмы. Впрочем, и действие в романе "Остров Медвежий" было больше похоже на какой-то зарубежный фильм с картонными героями и шаблонной крутизной протагониста.

Владимир Арсеньев - "Дерсу Узала".

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

В.К. Арсеньев и Дерсу во время экспедиции, фото В.К. Арсеньева


Будучи инородцем (в те времена этим словом называли все малые народности нашей необъятной и оно не носило ещё негативного оттенка) и прожив всю жизнь в тайге, Дерсу на протяжении всего романа проявляет свои лучшие качества человека, выросшего в суровом краю, где принято помогать не только ближнему, но и случайному путнику, бережно относится к природе, находить применение всему и не выбрасывать лишнее. То и дело автор удивляется тому, насколько Дерсу, несмотря на свою простоту, наивность, некультурность и необразованность, веру в одушевленность всего окружающего мира - человечнее, добрее и мудрее многих европейцев; насколько внимателен к деталям и мелочам он, выросший в тайге и читающий окружающий мир как открытую книгу. Читая роман, проникаешься уважением к этому человеку природы, к его мировоззрению, которое многим уже тогда казалось смешным и отсталым, но лишь на первый взгляд. И забавным и жалостливым кажется момент, когда Дерсу оказывается в городе:

Однажды, войдя к нему в комнату, я застал его одетым. В руках у него было ружьё.
— Стрелять, — отвечал он просто и, заметив в моих глазах удивление, стал говорить о том, что в стволе ружья накопилось много грязи. При выстреле пуля пройдёт по нарезам и очистит их; после этого канал ствола останется только протереть тряпкой.
Запрещение стрельбы в городе было для него неприятным открытием. Он повертел ружьё в руках и, вздохнув, поставил его назад в угол. Почему-то это обстоятельство особенно сильно его взволновало.
На другой день, проходя мимо комнаты Дерсу, я увидел, что дверь в неё приотворена. Случилось как-то так, что я вошёл тихо. Дерсу стоял у окна и что-то вполголоса говорил сам с собою. Замечено, что люди, которые подолгу живут одиноко в тайге, привыкают вслух выражать свои мысли.
— Дерсу! — окликнул я его.
Он обернулся. На лице его мелькнула горькая усмешка. — Ты что?. — обратился я к нему с вопросом.
— Так,—отвечал он. — Моя здесь сиди все равно утка. Как можно люди в ящике сидеть? — Он указал на потолок и стены комнаты. — Люди надо постоянно сопка ходи, стреляй.
Дерсу замолчал, повернулся к окну и опять стал смотреть на улицу. Он тосковал об утраченной свободе. «Ничего, — подумал я. — Обживётся и привыкнет к дому».
Случилось как-то раз, что в его комнате нужно было сделать небольшой ремонт: исправить печь и побелить стены. Я сказал ему, чтобы он дня на два перебрался ко мне в кабинет, а затем, когда комната будет готова, он снова в неё вернётся.
— Ничего, капитан, — сказал он мне. — Моя можно на улице спи: палатку делай, огонь клади, мешай нету. Ему казалось все так просто, и мне стоило больших трудов отговорить его от этой затеи. Он не был обижен, но был недоволен тем, что в городе много стеснений: нельзя стрелять, потому что всё это будет мешать прохожим.
Однажды Дерсу присутствовал при покупке дров; его поразило то, что я заплатил за них деньги.
— Как! — закричал он. — В лесу много дров есть, зачем напрасно деньги давай?
Он ругал подрядчика, назвав его «плохой люди», и всячески старался убедить меня, что я обманут. Я пытался было объяснить ему, что плачу деньги не столько за дрова, сколько за труд, но напрасно. Дерсу долго не мог успокоиться и в этот вечер не топил печь. На другой день, чтобы не вводить меня в расход, он сам пошёл в лес за дровами. Его задержали и составили протокол. Дерсу по-своему протестовал, шумел. Тогда его препроводили в полицейское управление. Когда мне сообщили об этом по телефону, я постарался уладить дело.
Сколько потом я ни объяснял ему, почему нельзя рубить деревьев около города, он меня так и не понял.
Случай этот произвёл на него сильное впечатление. Он понял, что в городе надо жить не так, как хочет он сам, а как этого хотят другие. Чужие люди окружали его со всех сторон и стесняли на каждом шагу. Старик начал задумываться, уединяться; он похудел, осунулся и даже как будто ещё более постарел.
Следующее маленькое событие окончательно нарушило его душевное равновесие: он увидел, что я заплатил деньги за воду.
— Как! — опять закричал он. — За воду тоже надо деньги плати? Посмотри на реку, — он указал на Амур, — воды много есть. Землю, воду, воздух бог даром давал. Как можно?
Он недоговорил, закрыл лицо руками и ушёл в свою комнату. Вечером я сидел в кабинете и что-то писал. Вдруг я услышал, что дверь тихонько скрипнула. Я обернулся: на пороге стоял Дерсу. С первого взгляда я увидел, что он хочет меня о чём-то просить. Лицо его выражало смущение и тревогу. Не успел я задать вопрос, как вдруг он опустился на колени и заговорил:
— Капитан! Пожалуйста, пусти меня в сопки. Моя совсем не могу в городе жить: дрова купи, воду тоже надо купи, дерево руби — другой люди ругается.
Я поднял его и посадил на стул.
— Куда же ты пойдёшь? — спросил я.
— Туда! — он указал рукой на синеющий вдали хребет Хехцир.
Жаль мне было с ним расставаться, но жаль было и задерживать. Пришлось уступить. Я взял с него слово, что через месяц он вернётся обратно, и тогда мы вместе поедем на Уссури. Там я хотел устроить его на житьё у знакомых мне тазов.
Я полагал, что Дерсу дня два ещё пробудет у меня, и хотел снабдить его деньгами, продовольствием и одеждой.
Но вышло иначе.
На другой день, утром, проходя мимо его комнаты, я увидел, что дверь в неё открыта. Я заглянул туда — комната была пуста.

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

Владимир Арсеньев - "По Уссурийскому Краю".


В "Дерсу Узала" знакомство с главным героем начинается с первых глав, между тем у неё есть предыстория. Эта предыстория как раз описана в книге "По Уссурийскому Краю". Хронологически, события в ней развиваются до "Дерсу Узала", но формат романа точно такой же: путевые заметки параллельно с повествованием о ходе экспедиции. Здесь Арсеньев больше внимания уделяет каким-то более общим вещам, в этом же романе происходит знакомство с Дерсу. Обе книги выходили в составе издания "В дебрях Уссурийского края" и я рекомендую читать обе.
Думаю, в современном мире, где явно сформировано общество потребления (не люблю это заезженное выражение), вовсе не лишним будет почитать о бережном и внимательном отношении ко всему: к природе, к человеку, к незнакомцу, к животным и растениям. Обитая в цивилизованных каменных джунглях, мы уже утрачиваем понимание того, что такое взаимовыручка, бескорыстность, опасность для жизни, необходимость трудиться, превозмогая адскую усталость и боль, просто для того, чтобы остаться живым. Вряд ли кто-то из нас окажется в тайге во время снежной пурги, или столкнется нос к носу с медведем или уссурийским тигром (с последним в дикой природе столкнуться уже практически невозможно), или будет вброд переходить порожистую реку с несущимися брёвнами, или подыматься в каменистые сопки 4 дня без еды, но мы не должны забывать, что не всё во власти современного Homo Sapiens. Но в силах каждого отдельного человека быть честным, помогать слабому и не терять собранности и мужества. Этому и учат книги Арсеньева.

P.S. По книге "Дерсу Узала" в 1975 году режиссёром Акирой Куросавой был снят одноимённый советско-японский фильм, получивший в 1976 году премию "Оскар" в категории "лучший иностранный фильм, показанный в США".
Читать дальше......

понедельник, 6 апреля 2015 г.

Байкальский лёд в квадрате инстаграма

Были на Байкале в конце марта. Гуляли по льду, даже устроили небольшой ледовый пикник. Лёд потрясающий, в каждом новом месте - свой узор и свой оттенок. Решил сделать маленькую подборку фотографий в формате инстаграма. Немного выкручена насыщенность и холодность, добавлен чуть-чуть Fade, в остальном — всё как есть. Кликабельно.




P.S. Сейчас МЧС шлёт смски, что выход на лёд опасен. Вовремя успели посмотреть.
Читать дальше......