buddha eyes

Приветствие

Здравствуйте.

25.12.2016: Этот журнал переехал на dreamwidth.org.

Не знаю, какой дорогой вы сюда забрели, но раз уж забрели, прочтите сначала это. :)

Мои постинги неравномерны по смысловой нагрузке и тематике, поэтому читать всё подряд не советую - станет скучно, и до действительно интересных постов не доберётесь. Поэтому я маркирую постинги метками. Вот основные:
  • мысль - то, что я считаю на самом деле важным и информативным. Мои мысли об устройстве этого мира (по большей части, нематериальной его составляющей). Таких пока всего семь, наиболее на мой взгляд интересная - Душа и Фейнмановский электрон.
  • подумалось - более мелкие наблюдения о мире и выводы. Таких гораздо больше, они включают в себя и мысли;
  • любопытно - вообще не мои мысли, а то, что я где-то увидел, и что показалось мне интересным;
  • политика - это лучше не читать. :)
  • юмор, афоризм, travels, задачка, дети, лытдыбр - в комментариях не нуждаются.
Для сугубо технических постингов (Cisco, Juniper, unix и пр.) я создал второй аккаунт: gul_tech.
Репосты (показавшиеся мне интересными записи из моей френдленты) кидаю в gul_filtered.


Отдельные постинги, которые мне нравятся и могут вас заинтересовать:
Мне проще общаться на "ты", однако сам я с незнакомыми людьми первым на "ты" не перехожу, т.к. не знаю, как это будет воспринято. Если нормально, можно ко мне смело обращаться сразу на "ты", я отвечу тем же. :)

Комменты к этой записи скринятся.
buddha eyes

О криптографии

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

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

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

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

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

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

Они слегка подвинулись, освобождая место, и я уселся между ними - новый партнёр, третий в их числовом мире. Джон, лидер в этой паре, надолго задумался. Это продолжалось минут пять. Я сидел, едва дыша, боясь пошевелиться. Наконец Джон назвал девятизначное число. Майкл, подумав, ответил другим таким же. Наступила моя очередь, и я, тайком заглянув таблицу, внёс свой нечестный вклад - десятизначное число.
Опять последовала тишина, ещё более длительная и сосредоточенная, чем раньше, и Джон, после какого-то невероятного внутреннего созерцания, назвал двенадцатизначное число. Я не мог ни проверить его, ни назвать своё в ответ, поскольку моя таблица (насколько мне было известно, единственная в своём роде) дальше десяти знаков не шла. Но то, перед чем спасовала таблица, Майклу оказалось вполне по плечу, хотя и заняло у него ещё пять минут. Через час близнецы уже вовсю обменивались двадцатизначными числами. Предполагаю, что они тоже были простыми, но проверить этого я не мог. Тогда, в 1966 году, такую проверку могли осуществить только самые мощные компьютеры, и то это было непросто, даже с помощью решета Эратосфена, или любого другого алгоритма. Прямого способа вычисления простых чисел такого порядка вообще не существует - и тем не менее близнецы это делали...


This entry was originally posted at https://gul-kiev.dreamwidth.org/68880.html.
buddha eyes

Ослиный мост

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

И тут интересно, как выходят из этого положения педагоги, чтобы замаскировать низкий уровень современного образования. Везде в интернете, где я нашёл этот факт, он приводится в такой трактовке: "Доказательство теоремы Пифагора учащиеся средних веков считали очень трудным и называли его Pons asinorum – ослиный мост". По-моему, не очень логично.

This entry was originally posted at https://gul-kiev.dreamwidth.org/68703.html.
buddha eyes

KPI trap

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

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

И есть интересные примеры KPI traps, не относящиеся к организации труда внутри фирмы.

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

Подмена этичности поведения на законопослушность - это тоже по сути KPI trap.

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

Когда произошёл KPI trap, нужно менять метрику.

This entry was originally posted at https://gul-kiev.dreamwidth.org/68521.html.
buddha eyes

По ветру быстрее ветра

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

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

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

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

Видео не является ответом, потому что одни аргументированно объясняют, почему это фейк, а вечных двигателей не бывает, а другие не менее аргументированно - почему это не фейк, так что просто для наглядности:

Collapse )
Странно, что эта красивая задача не разбирается в "Занимательной физике" и других подобных сборниках.
Или в каких-то разбирается?

This entry was originally posted at https://gul-kiev.dreamwidth.org/68253.html.
buddha eyes

Алгоритм Верхуффа для произвольной чётной системы счисления

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

This entry was originally posted at https://gul-kiev.dreamwidth.org/67878.html.
buddha eyes

Полезные паразиты

Написанное ниже наукообразно, логично, но ненаучно. Что, в принципе, вообще совпадает с моей картиной мира. :)

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

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

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

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

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

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

UPD: Как оказалось, не так уж это и ненаучно. Вот тут пишут то же самое умными словами и с кучей подтверждающих ссылок.

This entry was originally posted at https://gul-kiev.dreamwidth.org/67706.html.
buddha eyes

Эволюционирующие программы

Лет 10 назад основным вопросом в развитии интернета (а по сути основным направлением прогресса) была децентрализация сети, а основной опасностью - её монополизация. Я тогда об этом размышлял.

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

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

1. Бессмысленно делать случайные изменения в исходном тексте программы или в её бинарном коде, ожидая получить улучшение. Случайное изменение человеческого тела будет травмой, зачастую несовместимой с жизнью, но никак не улучшением. Чтобы была возможна эволюция, нужен специальный язык кодирования алгоритмов более крупными "кирпичиками" (аналог генов и ДНК), над которыми уже можно будет делать мутации и рекомбинации, чтобы они с большей вероятностью приводили к осмысленным результатам. Технически это, видимо, должны быть классы, объекты и методы операций над ними. Условно говоря, если в шахматный компьютер наугад тыкнуть паяльником, он, скорее всего, перестанет работать, а если случайно изменить алгоритм, то он в определённой позиции сделает ход слоном, а не конём.

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

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

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

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

This entry was originally posted at https://gul-kiev.dreamwidth.org/67462.html.
buddha eyes

И об искусстве

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

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

В других видах искусства то же самое. Хороший фильм может не иметь ясного и связного сюжета, хотя как правило всё-таки имеет.

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

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

This entry was originally posted at https://gul-kiev.dreamwidth.org/67119.html.
buddha eyes

Про "мудрость"

Помню, в детстве была такая задачка. Зимой на улице находятся два человека. У одного поверхность одежды имеет температуру 2°C, у другого 7°C. Кто из них больше замёрз? Ответ в том, что более низкая температура поверхности одежды говорит о том, что эта одежда лучше теплоизолирует, меньше теплоты теряется, и, соответственно, меньше замёрз тот, у которого температура одежды 2°.

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

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

Или более очевидный пример. Человек, который (на основании своего жизненного опыта) говорит: "Никогда не выходите зимой на лёд, это опасно", - скорее всего, склонен ходить по тонкому льду больше, чем тот, кто ни о чём таком не предостерегает.

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

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

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

This entry was originally posted at https://gul-kiev.dreamwidth.org/67061.html.