…
Романист — надзиратель человеческих душ.
Романист — надзиратель человеческих душ.
Недавно я в одном дружественном журнале увидел ремарку, объясняющую термин из предыдущей фразы. Типа:
Элементарная логика (наука об общих законах развития объективного мира и познания) …
только слово там было чуть позаковыристей. Деревянные игрушки тяжелого детства приучили меня к тому, что незнакомые слова можно смотреть в словаре. У меня даже электронного волка с яйцами не было, я развлекался исключительно картинками из Брокгауза, поэтому энциклопедия всегда была под рукой. В результате я бегло читаю на дореформенном и тяготею к переносу в активный словарный запас максимального количества малоупотребительных терминов. С ними речь становится не только сочнее, но и гораздо точнее. Мысль допускает меньшее количество толкований.
Внезапно понял, что эта черта характера сильно повлияла на мой стиль программирования. Я не терплю невнятности изложения мысли, зачастую принося в жертву мифическую «читаемость» кода. Чтобы не ходить далеко за примером: вчера потребовалось выполнить разные действия в зависимости от того, с чего начинается строка. Нормальный человек не решает эту задачу перебором:
if str.start with? 'a' puts 'String starts with “a”' elsif str.start with? 'b' puts 'String starts with “b”' else raise 'Shit happens!' end
Я имею в виду, что в реальной жизни мы не станем проверять, а не ананас ли перед нами, увидев скорпиона. Цепочка рассуждений выглядит так: «скорпион ⇒ бежать!» а не «если ананас — съесть, если скорпион — убегать». Надеюсь, это очевидно.
Поэтому мой вариант решения этой задачи оказался вот таким:
start
with = lambda { |sample, string| string.start
with? sample }
case string
when
start
with.curry
then puts 'String starts with “a”'
when
start
with.curry
then puts 'String starts with “b”'
else raise 'Shit happens!'
end
Так и вижу толпу пуристов с копьями, которые хотят меня распять на шарпе. Попытаюсь объяснить. Второй вариант,
наверное, потребует на три миллисекунды больше, чтобы понять, что хотел сказать автор. Но как только понимание пришло,
оно уже никуда не денется. В этом коде не запутаешься. Тут проложены только те пути, которые соответствуют задаче:
глазами пробежал по дорожке «string ⇒
a
⇒ puts a » и все.
В продакшене в реальном времени так писать, разумеется, нельзя (бенчмарки показывают, что мой вариант в 20 раз медленнее, и я знаю это). На научно-популярных лекциях тоже неразумно злоупотреблять терминами из приложения к основному словарю. Но если целью является чистота и внятность кода (речи), а такое, поверьте мне, бывает гораздо чаще, чем кажется — я буду использовать весь доступный мне арсенал внятности. Такие мелочи иногда очень помогают быстро ухватить нюансы. Протагонист — это гораздо больше, чем главный герой, если вы вдруг писали выпускное сочинение по Зюскинду.
Я вообще нахожу неестественным предложение «быть проще, ибо люди потянутся». Считайте меня социопатом.
На дне рождения Лабашева редко оказывалось немноголюдно. Точнее, всегда негде было упасть не только яблоку, но и вишневой косточке. А на двадцатилетие обещали приехать еще восемь человек сверху.
Были какие-то непонятные барышни из Политеха, я лично пригласил американского коллегу, бывшего в те дни проездом в Питере. Компания подбиралась разношерстная. Последним пришел Немиров. Он появился в дверях трезвым, с тортиком в руках. Во взгляде читались одиночество и грусть. Я забеспокоился. Грусть в глазах Немирова не сулила спокойного праздника.
Впрочем, волновался я зря. Уже через полчаса Немиров махнул стакан и примостился в уголочке рядом с одной из политеховских. Размахивая пудовыми кулаками в пространстве радиусом метра полтора вокруг барышни, он самозабвенно плел ей что-то на ухо. На окружающих Немиров внимания не обращал, и я уже было решил, что сегодня он социально безопасен. Внезапно он вскочил на ноги и зычным басом провозгласил:
— Мечтаю поднять тост за прекрасную Елену, мысль о которой не покидает меня со времени нашего знакомства. — Он говорил еще минут пятнадцать, поминая всуе замысловатый коктейль из женской красоты и заморских фруктов. Соломон, услышь он хотя бы треть этой эскапады, сжег бы все свои песни и застрелился от зависти.
Когда Немиров договорил и грациозно приподнял бокал чуть выше локтя, прекрасная Елена тихим испуганным голоском с надрывом прошептала:
— Но где же ты был так долго? Я ждала, ты мог хотя бы позвонить…
Года за два до этого, влекомые тягой к прекрасному, мы с Семенычем оказались на женском чемпионате города по бильярду в роли зрителей. В первом туре за ближним столом играла совсем молоденькая девочка. Кроме плохо поставленного удара и слишком низкой стойки у нее была одна отличительная черта — бюст шестого размера. Причем не по периметру, а, так сказать, в объеме. Мои симпатии в матче оказались на ее стороне, о чем я не преминул сообщить Семенычу, который страшно развеселился. «Тебе же, — полным сарказма голосом выдохнул он мне в ухо, — вроде бы полногрудые барышни не особо нравятся?» Я внезапно смутился. И правда, мелькнуло у меня в голове, чего это я? Впрочем, объяснение нашлось в считанные доли секунды. «Ну, — ответил я назидательно, — не такая уж она и полногрудая!»
Этот эпизод благополучно стерся бы из моей памяти, если бы Немиров не рявкнул гневно в ответ: «Не так уж и долго! Всего два дня рождения!».