Пятница. Бредни программиста 2.0

Привет, Хабр! В прошлую пятницу выложил свои бредовые мысли. Спасибо за карму, плюсы и главное за неравнодушные комментарии. Сегодня продолжение. Снова прошу не судить слишком строго. Ведь это всего лишь фантазии.

image

Ржавчина на мече


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

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

— Скидочная карта есть?

Я реагирую как то странно, даже для самого себя…

— Скидочная карта есть?

Должно быть мое лицо искажает жуткая гримаса, потому что кассирша перестает общаться и быстро пробивает чек. Я отхожу в сторону.

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

Не люблю также бензоколоночные карты, всякие самолетные мили, кэшбэки, туповатые акции 2=1, 3=2, 4=3, мудреные акции типа заплати в августе и получи в декабре. Вызывают ненависть накопительные счета из бутафорских фантиков. Золотые, серебряные, бронзовые, платиновые ошейники и намордники. И особенное отвращение вызывают тарифы сотовых операторов, которые они изобретают с особо утонченным садизмом.

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

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

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

Или например идет оперативка в крупной сбытовой компании. Генеральный директор говорит:
— Что то дела у нас в этом квартале не очень. Может есть идеи, как увеличить продажи?
Все обдумывают варианты. Тут молодой, но перспективный менеджер встает и робко произносит.
— Может того… Этого… Скидочную карту выпустим…
В кабинете повисает гробовая тишина. Все тупо уставились в стол. Слышно как в окно бьется прошлогодняя муха. Генеральный бледнеет и переводит тяжелый взгляд на начальника отдела безопасности. Тот понимающе отводит глаза. После оперативки перспективного менеджера никто никогда больше не видит, по крайней мере в черте оседлости.

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

Вы уверены, что всю невероятную мощь компьютеров следует использовать для приведения в трепет бережливых домохозяек? Разве для этого наши отцы и деды создавали ИТ?

История победы


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

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

И цифровая техника выдержала.

Хотя у нее были вполне взрослые конкуренты. Я сейчас говорю об АВМ — аналоговых вычислительных машинах. Какое то время они были быстрее, точнее, экономичнее цифровых. Суть АВМ в том, что для получения решения мы берем некий физический принцип, поведение которого похоже (аналогично) тому, что нам нужно смоделировать.

Принципы использовались самые разные — механические, гидравлические, пневматические, электрические. Если Вы никогда не видели, как Гауди рассчитывал свои архитектурные формы с помощью веревочек и мешочков с песком, то обязательно посмотрите. Завораживающее зрелище.

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

Предположим, Вам требуется определить оптимальное местоположение сельской школы для трех деревень. Дело осложняется тем, что в деревнях разное количество детей, ну например, 10, 20, 50. Вы кладете карту на стол и в деревнях просверливайте по отверстию. И пропускаете через них три соединенные в узле веревочки. К каждой веревочке привязывайте гирьку в соответствии с количеством детей (10 гр, 20 гр,50 гр). Ну и что? Ну и все. Гирьки уравновесятся и узел покажет оптимальное местоположение школы. Быстро, просто, элегантно.

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

Квантовые вычисления


Когда хайп вокруг квантовых вычислений утихнет и волновой туман неопределенности рассеется, станет видно, что квантовые компьютеры — это те же аналоговые вычислительные устройства. Они работают как устройство с гирьками, только вместо гирек — квантовые частицы, а вместо веревочек — запутанность. И им присущи все недостатки, которые в конце концов привели к почти полному исчезновению АВМ. Эти недостатки — узкая специализация, потеря точности, отсутствие детерминизма.

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

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

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

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

Биты… кубиты… Все это очень подозрительно.

В общем, как сказал Ди Каприо. We need to go deeper.

Кибернетика


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

И все нити, по крайней мере меня, ведут к Норберту Винеру и к его Кибернетике.

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

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

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

Вот что говорит сам Норберт Винер:

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

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

Ну, а мы тут чем занимаемся


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

Я не смею себя сравнивать с великими гениями, но рассеянности у меня тоже хватает.

Например, вчера, я размышлял о том как протащить код подтверждения заявки через три системы, которым он нужен, и не порушить при этом еще четыре системы, которым он не нужен. Этот код подтверждения возник просто потому что, два отдела не смогли договорится по какому-то пустяковому вопросу.

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

— Михаил… Михаил… Извините, я вчера Вам подавала заявку на отчет для отдела кадров.

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

— Ой, я вижу Вы интроверт… Ну ладно я завтра как-нибудь зайду…

Черт возьми!!! Я не интроверт!!! Я просто пытаюсь думать. Если бы какой-нибудь корпоративный Бог избавил программистов от этой обязанности, то все бы увидели, что они вполне общительные люди. И что они могут принимать активное участие во всех радостях и горестях офисной жизни.

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

Во-первых, он не может никому ничего делегировать. Потому что все друг другу делегировали все что только можно. И в конечном итоге делегировали программисту.

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

Единственный путь — это налить себе чашку жуткого на вкус кофе. Вникнуть в весь этот бардак, созданный так называемыми экстравертами. Собрать остатки здравого смысла в кулак и написать код, который сделает этот бардак более или менее управляемым.

Где же правда?


Естественно, что программист перестает в поисках правды оглядываться на различные общественные структуры и все больше погружается в мир программного кода. Код — это наверное единственное, что его никогда не обманывает.

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

Когда Том отвечал на вопрос, он, как правило, не ссылался на документацию и не вступал в дискуссии. Он просто писал в консоли команды, получал выдачу, и в качестве ответа на вопрос публиковал эти дампы.

Таким образом Том никогда не ошибался.

Так должны действовать мы все и доверять только коду. Даже к комментариям в тексте программы следует относиться настороженно. И чем больше комментариев, тем больше должно быть подозрение. Кстати, что это за мода — переносить программную логику в аннотации. Это же жуть. Еще можно примирится, когда аннотации использовали для документирования. Но когда они теперь определяют поведение программы через разные CI-контейнеры и ORM-мапперы… Как же так, ребята? Ведь код — это единственная правда, которая у нас осталась.

Программист затаив дыхание смотрит на экран. На экране привычный редактор. В редакторе — код. Только совершенный, чистый код. И он чувствует: ИСТИНА где-то рядом.

Еще один вечер без Аллы


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

Проверяю почту.

From: PhD Шланг

«Привет, брателло! Наш профессор совсем разбушевался, хочет подать на грант, а выкладок нет. В общем нужно посчитать на громадном графе то ли в глубину, то ли в ширину — пока не ясно. Я знаю, тебе такие заморочки нравятся. Последний срок завтра к 10:00. См. вложение. За мной не заржавеет.»

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

Смотрю на часы — времени до дедлайна осталось не так много. И пока не ясно сколько займет решение. Нельзя впустую терять время. На автоматизме руки сами открывают среду программирования, файл с ТЗ, по ссылке начинается загрузка данных…

…Кто хоть раз решал компьютерные задачи на время, тот понимает, в чем основной смысл. Чем дольше будет думать человек, тем меньше останется времени для работы компьютера, и наоборот. Можно быстро составить незатейливую программу, решающую задачу в лоб, но тогда компьютер не успеет просчитать все варианты. Может случиться и обратная ситуация, когда человек, пытаясь сделать быстродействующий алгоритм, выберет весь лимит времени. Оптимальное решение лежит, как всегда, посередине.
«Приятель, я не успею это просчитать, это слишком много» — говорит компьютер. «Не волнуйся», — говорит человек, — «Сейчас я добавлю десяток строк, и количество вариантов уменьшится на порядок». Или человек может сказать «Слушай, дружище, я знаю, что это можно сделать лучше, но у меня уйдет слишком много времени на создание программы и на ее отладку». «Ничего», — отвечает компьютер, — «Давай то, что есть. Я железный, я не устану и не вспотею, я переберу все варианты и выдам нужный ответ. А ты пока подумай над чем-нибудь более важным». В процессе решения программист и компьютер становятся заодно. У них общая цель и одно на двоих время. И когда задача решается в срок, это здорово, потому что каждый сделал свое дело и сделал его хорошо….

(продолжение следует)

© Habrahabr.ru