Category: it

Category was added automatically. Read all entries about "it".

buddha eyes

Приветствие

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

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

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

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


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

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

Фейковые криптовалюты

В многочисленных популярных роликах и текстах, объясняющих принципы работы криптовалют, это объяснение делается на примере Bitcoin - первой из криптовалют. Это на самом деле чистая и понятная реализация принципов, необходимых для криптовалюты: открытость истории транзакций, возможность проверки источника денег по цепочке, понятные правила появления денег, понятные правила создания новых транзакций. Новые монеты появляются только в результате майнинга новых блоков, и награда за майнинг постепенно снижается по логарифмическому закону, в результате чего общая сумма выпущеных биткоинов никогда не превысит лимита (21 миллион). Любая трата денег (вход транзакции) должна соответствовать выходу другой (более ранней) транзакции, деньги не могут появиться ниоткуда. Для траты нужно подписать транзакцию приватным ключом. Простой скриптовый язык позволяет делать multisig и всякие другие полезные вещи, в том числе и создавать новые валюты (токены) на базе биткоинового блокчейна (omni layer, так живёт USDT). Центрального узла нет, новый блок определяется консенсусом всех узлов - при наличии нескольких вариантов они принимают ту ветку, в которой сделано максимальное количество вычислений, это формальный критерий, не допускающий разночтений. Собственный узел может запустить любой пользователь, исходный код открыт.

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

Это закономерно привело к появлению муляжей криптовалют, которые якобы используют те же технологии, но при этом дают преференции их создателям, т.е. не такие уж децентрализованные. Для пользователей всё равно, а создателям профит. Самый распространённый из таких муляжей - Ethereum.
Collapse )
This entry was originally posted at https://gul-kiev.dreamwidth.org/70858.html.
buddha eyes

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

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

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

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

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

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

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

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


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

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

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

This entry was originally posted at https://gul-kiev.dreamwidth.org/67878.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

Обратная связь

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


Анатолий работал программистом в Google.
Точнее, не совсем программистом, а учёным (scientist). Программистом он был раньше, но его образование и склад ума позволили ему подняться выше, и теперь он не пишет код, а разрабатывает алгоритмы, математические модели, решает связанные с этим проблемы.

Сначала Анатолий работал в отделе переводов (Google Translate), потом ему предложили перейти в более перспективный отдел искусственного интеллекта (AI). В общих чертах направление оставалось то же (машинное обучение), но в AI задачи были гораздо шире и универсальнее, и разрабатываемые там инструменты применялись и для переводов, и для управления автомобилями, и для Google Assistant, и даже частично для поиска (хотя у ребят из поиска много собственных наработок, тоже очень крутых, но более специализированных именно под поисковую выдачу).

Разрабатываемые алгоритмы и инструменты были уже настолько круты, что даже Анатолий в глубине души их побаивался. Нередко случалось, что этот AI предугадывал его мысли. Когда алгоритм AlphaZero разгромил в шахматы DeepBlue после всего четырёх часов самообучения, потом показал не менее внушительные успехи в го, Анатолий захотел дать этом алгоритму какую-нибудь более интересную и сложную задачу. Но какую? Прогноз погоды? Диагностика болезней? Интересно, но это требует доступ к массивам данных, которые являются закрытыми, и для того, чтобы их получить, нужно обосновать необходимость, а с этим были проблемы.

[ Дальше ]

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

bitcoin

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


Когда я писал, что Em-Drive является фейком, я основывался на том, что реальные физические открытия так не делаются.
Хотя я не являюсь профессионалом в физике, мне просто интересна эта наука и используемые ей способы познания мира.

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

Collapse )
buddha eyes

Блокчейн - что дальше?

У обычной платёжной системы каждая транзакция существует независимо от других.

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

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

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

А потом будет мета-алгоритм, но это позже. :)
buddha eyes

Игра в имитацию

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

Образование

Прочитал новость о том, что в школах отменили астрономию.
Подумал, что я хотел бы, чтобы мои дети по окончании школы знали не то, что входит в школьную программу.
Вместо адиабатических процессов, интегрирования по частям, преобразования Лоренца, технологии производства серной кислоты, нефтеперерабатывающей промышленности Украины и прочих ужасных вещей мне бы хотелось, чтобы они знали про психологию, DNS, экономику, устройство микроволовки, религии мира, действие и побочные эффекты антибиотиков, GPS-координаты, теорию музыки и многое другое, что в жизни гораздо полезней, но чему в школе почему-то не учат.
При этом считаю, что в школе начитывать нужно намного (в разы) больше, чем требовать знать на экзамене. Пусть про всякие эксперименты Майкельсона-Морли рассказывают, но выпускник средней школы может не уметь вычислять длину волны де Бройля. Хуже, если он не знает, какие типичные приёмы используются в рекламе, и чем отличается научная теория от ненаучной.
И зачем требовать читать именно "Войну и мир", если детям интереснее "Гарри Поттер" или "Властелин колец"?

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

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

При составлении списка я ориентировался на объём знаний, полученных мной в школе: что-то убрал, вместо этого что-то добавил примерно того же объёма. Нужно учитывать, что это была ФМШ. Бывает, например, что я говорю, что от школьника не нужно требовать строгое доказательство эквивалентности определений предела по Коши и по Гейне, а на меня смотрят удивлённо. :) Программу математики и физики я существенно сократил по отношению к тому, что давали нам, хотя, похоже, получилось всё равно сильно больше, чем дают сейчас в обычной школе. Кроме того, я, конечно, не являюсь специалистом во всех областях, поэтому по истории, экономике и многим другим дисциплинам мои предложения - это предложения дилетанта. Может удивить предлагаемое глубокое преподавание компьютеров и программирования - вроде как, всякие bgp, объекты, DNS и пр. нужно знать только специалистам, это слишком сложно. Но теория относительности и интегрирование, которые входят в школьную программу - разве это проще, или больше применимо в жизни?
Collapse )