Ресурсы: техническое описание TLS, LaTeX - в картинки (img), криптографическая библиотека Arduino, шифр "Кузнечик" на ассемблере AMD64/AVX и ARM64
Пустое множество принадлежит к набору фундаментальных объектов современной математики. И не только математики: в чистой философии – значение пустого множества едва ли не выше. Поэтому-то постоянно множатся и роли, которые пустое множество играет в куда более прикладных областях, чем теоретическая математика и философия: в информационных технологиях, да и в технике вообще.
Главное свойство пустого множества в том, что такое множество – единственно. То есть, у нас могут быть множества, собранные из разных объектов, но пустое множество – всегда одинаковое. Более того – это одно и то же множество, вне зависмости от “объектов” и типов. Пустое множество ананасов совпадает с пустым множеством апельсинов по слишком многим характеристикам, чтобы считать, что множества ананасов и апельсинов “пусты” разным образом, как и множество фруктов вообще.
Но, конечно, полностью отказаться от того, что “существуют” и пустое множество апельсинов, и пустое множество ананасов – довольно трудно: вот, только что была введена некоторая различительная окраска – ананасы против апельсинов. Например, если для приготовления блюда требуется ананас, то отсутствие апельсина – никак на кулинарную ситуацию не влияет, тогда как нехватка ананаса делает приготовление невозможным. Однако пустота тут, как концепция, общая. Да, нужно различить понятия “пустота” (“тип”) и “быть пустым” (“стрелка”), но стоит поднять пустоту в ничто, как начинает играть тот фактор, что и ничто, в представлении, бывает белое и чёрное.
Особенности естественного языка, позволяющие оборачивать отсутствие элементов в пустом множестве в размытое значение слова “ничего”, создают тем самым возможность для построения разных силлогизмов из пустого множества. Наверное, самый известный из них – про бутерброд (в вольном переводе): “Что лучше, чем вечное счастье? Ничего! Однако, один бутерброд – заведомо лучше, чем ничего. Следовательно – бутерброд лучше вечного счастья” (R. Smullyan/D. Darling). Здесь, естественно, объяснение в том, что в первой части описывается отсутствие объектов, которые лучше данного: таких объектов, утверждается, пустое множество; а потом, на бутербродном шаге, сравнение производится в обратную сторону: бутерброд заведомо лучше состояния, когда бутерброда нет (не отсутствия объектов, а самого пустого множества). То есть, это разные операции, но то, что пустое множество всего одно, позволяет подменять одну операцию другой.
Например, мне однажды переслали распечатку пары значений вывода утилиты sha256sum, на вход которой подавался результат работы модуля ec из пакета openssl (через “пайп” в консоли). При этом в openssl направлялись два разных файла. Утверждалось, что эти два входных файла содержат одинаковые данные, но только записаны данные в разной форме. Почему? Потому, что равны результаты sha256sum от выдачи openssl. Значения sha256sum, действительно, были равны, несмотря на то, что в openssl передавались разные файлы с разными именами.
Что же произошло на самом деле? Вот что. Утилита sha256sum считает значение хеш-функции SHA-256 от входных данных. Здесь на вход sha256sum поступал вывод openssl ec. Но, ещё раз, если значения равны, то, видимо, тогда и входные файлы содержат одинаковые данные? Нет – одинаковым тут является вывод openssl ec: дело в том, что оба входных файла имели неверный формат, поэтому модуль ec не мог их разобрать и печатал сообщение об ошибке, однако в стандартный вывод – писал пустое множество байтов; то есть, ничего не писал, проще говоря. А значения SHA-256 совпали потому, что на вход хеш-функции поступило пустое множество. А оно – одинаковое, вне зависимости от того, как именно сломался каждый из входных файлов.
Множества, состоящие из элементов разных типов, могут не сочетаться по типам, но пустое множество – сочетается со всеми типами. Когда нет апельсинов и ананасов, шестерней и транзисторов – то, с одной стороны, нет вещей разных типов, но, с другой стороны, общим тут является то, что их нет. Это сплошь и рядом используется в языках программирования.
Скажем, пустое множество возвращается в качестве признака того, что функция завершилась с ошибкой: это хорошо известный объект, обозначаемый nil, null, “” – ещё как-то. Обратите внимание, что значение null оказывается чем-то вроде пустоты, которая может быть помещена в коробку (да, именно так). Но null – это ещё не пустая коробка, как ни странно. В программировании, чтобы null стал “пустой коробкой”, этот null придётся как-то дополнительно трактовать: предположим, использвать null как указатель и попробовать обратиться по его значению (выполнить “дереференс”). Ошибочное толкование пустого множества в случае null и программного кода регулярно приводит к возникновению уязвимостей в ПО, в том числе, в весьма неочевидных случаях.
Современное обозначение для пустого множества – ∅ – появилось относительно недавно, в 30-х годах прошлого века. Но вполне возможно, что саму концепцию систематическим образом впервые строил Джордж Буль, в 1847 году. Впрочем, соответствующая концепция у Буля относится к логике и больше похожа на противопоставление “ничего” – которое есть “нуль”, 0, – “всему”, единице, 1.
Есть более интересное развитие определения: через количество объектов, которые не “само-эквивалентны” (Готлоб Фреге). Здесь “само-эквивалентность” – это обобщение свойства рефлексивности, то есть, когда A = A по свойствам операции, а именно, каждый объект эквивалентен самому себе. Тогда пустое множество – это те объекты, которые не эквивалентны самим себе. Казалось бы – таких объектов просто нет. Но чтобы заявить о том, что чего-то нет, придётся определить это “что-то”, чтобы описать и проотрицать существование, и на этом пути магу легко попасть в ловушку: попытка определения того, чего нет, введение типов, может вызвать данный “зомби-объект” к существованию – он, внезапно, “станет быть” или “будет есть” – как там правильно? А вот способ “не-само-эквивалентных” объектов – позволяет выполнить такое определение без излишней типизации и “зомби”. Ну, в каких-то пределах. Так, в DNSSEC подписывается цифровой подписью факт отсутствия записи – делается это при помощи погружения “отсутствия” в искусственный “пустой интервал” между соседними существующими DNS-записями, иногда такое погружение происходит замысловатым образом.
Не так уж редко используется и свойство пустого множества быть невозможным событием. Как известно, вероятность невозможного события, в каком-то смысле, сильнее нуля – ведь если рассуждать в классическом сеттинге, с действительными числами, то событие с нулевой вероятностью – может произойти. Например, если вы бросаете безразмерную точку на действительную окружность, то вероятность попасть в любое конкретное действительное число тождественно равна нулю, но в какое-то число вы всегда попадёте. Другое дело, что точно записать такие попадания – не выйдет, потому что нельзя записать точно большинство действительных чисел.
Одно и то же пустое множество можно помещать в разные коробки, получая разные пустые коробки. А пустая коробка может служить существенным признаком. Посмотрим на CAA-записи в DNS. Интерпретация этих записей отличается в случае, когда запись есть, но её значение – пустая строка, и в случае, когда нет самой CAA-записи. Здесь буквально проявляется эффект, позволяющий строить натуральные числа из пустого множества: когда нет CAA-записи – это настоящий нуль, пустое множество; когда CAA-запись есть, но она пустая – это уже единица, потому что возможна только одна пустая CAA-запись (ну или так: все пустые CAA-записи – одинаковые). То есть, тут, с одной стороны, играет роль определение того, чего нет: “нет значения CAA-записи” против “нет самой CAA-записи”; с другой стороны – содержательный эффект возникает из погружения пустого множества в большую структуру. Это, в точности, процесс (∅=0, {∅}=1).
Процесс погружения ∅ в {} даёт основной инструмент для генерирования множеств. Фигурные скобки обозначают операцию “множество из (элементов)” (set of). Так, {∅} – это множество из одного элемента, пустого множества. При этом одноэлементное множество (singleton, синглетон) – это не то же самое, что один этот элемент. То есть, заметьте, что {} и {∅} (или, если хотите, {{}}) – сильно разные вещи. Если, борясь за логическую стройность, ввести дополнительно понятие “класса”, как способа избежать возникновения абсурдного “множества всех множеств”, то пересечение всех классов – это и будет пустое множество. Именно поэтому в английском, например, языке пустое множество правильно обозначать как the empty set, с определённым артиклем the, а не an empty set. “A set”, но “the empty set”.
Данное важное свойство закреплено, – обычно!, – и в современных языках программирования высокого уровня. Если написать, что var a := {1} (то есть, переменная a – это массив из одной целой единицы по определению), то станет верным, что 1 != a (то есть, одна целая единица не равна массиву, состоящему из одной целой единицы).
А если взять JavaScript, то можно наблюдать сразу несколько особенностей интерпретации пустого множества и “ссылок” на пустое множество в программировании:
const set = new Set();
const object = {};
set.add(1);
set.add("two");
set.add(object);
set.add(object);
set.add({});
console.log(set.size);
for (const item of set.keys()) {
console.log(item);
}
– эта программа напечатает вот что:
4
1
two
Object { }
Object { }
– ничего странного, но довольно показательно.
Оставим JavaScript и его объекты. В шумерских способах записи чисел для обозначения отсутствия единиц использовали пробел. Занятно, что в шумерской системе, изначально, отличались обозначения для единиц, относящихся к разным типам объектов: предположим, обозначения для мер зерновых отличались от обозначений для мер воды. Это, конечно, связано с тем, что древнейшие системы просто фиксировали количество объектов при помощи изображений именно этих объектов, чтобы можно было попарно сопоставить изображение и реальность: видим три кувшина – рисуем три кувшина в качестве обозначения того, что кувшинов три; видим пять мехов с водой – рисуем пять мехов, в качестве обозначения, что мехов пять, и, возможно, знак воды рядом. Потому что тут ещё нет операции выноса типа выше числа: “кувшины” – три (палки); “меха” – пять (палок). И пустое множество демонстрирует свою уникальность: нет кувшинов, нет мехов – просто не обозначаем кувшины и меха. И именно поэтому пробел, как носитель “пустоты”, в шумерской схеме записи мог появиться только тогда, когда обозначения единиц для счёта уже отделились от типов объектов. То есть, введение пробела произошло сильно позже отказа от зарисовки “мехов и кувшинов”. Понятно, что отдельное обозначение для нуля требуется только в схеме “тип” – “количество”, где количество записывается абстрактно.
Пустое множество – аксиоматично. Так, чрезвычайно часто встречающийся в популярной литературе феномен, известный как “набор аксиом теории множеств” ZFC, буквально содержит аксиому о пустом множестве: “существует пустое множество”. Пустое тут – это то, в котором нет элементов, но оно – множество: то есть, множество, к которому не принадлежит ни один элемент. Получается, “пустота” множества может выступать как предикат: “[A] есть пустое”, и без пустого множества построение логических теорий становится затруднительным.
Удивительно, но побочный эффект того, что всякий элемент не принадлежит пустому множеству, вне зависисмости от типа, приводит к следующему обобщению: для элементов пустого множества всё что угодно – верно. Элементам пустого множества оказывается возможно приписать любое свойство. Это используется даже в модных “интернет-мемах”, как способ наведения сарказма:
никто: [%blah-blah-blah%] иванов: подпрыгивает на батуте
– тут совсем условные обозначения, конечно: “[%blah-blah-blah%]” – пустое, “батут” – содержание. Главное – схема: “никто: {}, кто-то: {предмет мема}”. “Когда никто не догадался, кроме Иванова”.
Комментарии (2) »
Кстати, когда пишут, что “квантовая криптография”, якобы, “позволяет создавать абсолютно защищённые каналы передачи данных, в которых принципиальная невозможность перехвата гарантируется законами физики”, то повторяют сразу несколько неверных “обратных обобщений”.
Многолетний хайп вокруг квантовой криптографии даёт тут хороший пример того, как можно всё перепутать, решив, что модель, используемая в вычислениях, обращается и обобщается максимально сильным образом. Например, какие-нибудь учебные задачи по физике решаются в режиме “трением пренебречь”, но из этого не следует, что трения действительно нет в реальной конфигурации, соответствующей задаче. Вообще, из того, что при построении вычислительной модели были сделаны какие-то допущения, но модель позволяет получать достаточно точные предсказания, не следует, что допущения модели перестали быть допущениями модели и превратились уже в явления исходного феномена.
Во-первых, применительно к квантовой криптографии, квантовая механика предоставляет способ подсчёта вероятностей исхода эксперимента (например, результат измерения при приёме фотона с той или иной поляризацией). Однако из этого не следует обратное утверждение: что распределение вероятностей – это и есть фундаментальное, “физическое” свойство. То есть, “переворот” вывода инструмента подсчёта вероятностей – это слишком сильное действие.
Во-вторых, концепция тут же предполагает, что атакующая сторона может действовать только в строго определённых рамках. То есть, атакующий, прослушивающий канал, якобы может делать это только перехватом фотонов-носителей, да ещё и таким способом, который “гарантированно нарушит состояние системы”. Но ведь атакующий может прослушивать электромагнитные утечки, возникающие при работе оборудования, которое эти самые фотоны-носители генерирует и принимает. В описываемой схеме квантовой криптографии, так или иначе, но информация о том, какую конфигурацию имело оборудование, сохраняется в электромагнитных полях, генерируемых оборудованием. Необходимая защита от таких утечек – только подчёркивает то, что квантовая “криптография” – это технический метод защиты каналов передачи информации, а не настоящая криптография (несмотря на название). Но почему-то постоянно постулируется, что атакующий должен пытаться перехватывать “квантовые носители” строго так, как задумано в теории. Это тоже слишком сильное действие, которое отличает предмет от чисто математической криптографии: нельзя заранее выносить за скобки неустранимый технологический эффект (побочные излучения), искусственно сужая возможности атакующего в физической реализации. Очень похоже на то, как в задаче про “скользящий брусок” предлагается пренебречь трением, только масштабы пренебрежения сильно больше.
Да, в настоящей, математической криптографии, тоже есть допущения, но тут необходимо делать акцент на обсуждаемой “физической невозможности”, якобы гарантированной “законами физики”. К математике это “физическое” отношения не имеет. Кроме того, никакие “законы” физики вообще ничего не “гарантируют”, по определению. Это всё лишь способ описания результатов экспериментов, использующий язык, предоставленный математикой.
Более того, – это в-третьих, – в описаниях сценариев применения квантовой криптографии рутинно пропускают момент аутентификации полученных по “квантовому каналу” ключей: ведь для этого потребуется вполне себе классическая схема цифровой подписи, с асимметричной криптосистемой.
Так что нельзя забывать о том, что “квантовая криптография” – только называется “криптографией”, но является техническим методом защиты информации. Это, так сказать, более продвинутый способ создания системы сигнализации о вторжении в канал передачи данных, снижающий, на некоторых направлениях, доступный атакующему уровень скрытности утчеки.
Комментировать »
Регулярно теперь попадаются упоминания про то, что нужно и разрешить использование, и немедленно реализовать, внедрить “ИИ-агентов/LLM” там, где раньше допускалось лишь строго “детерминированное” программное обеспечение, например, в бортовые системы боевых самолётов. Типа, такое внедрение ИИ даст “невиданные преимущества”, “качественный скачок” и т.д., и т.п. – следует набор типичных для “ИИ-хайпа” журналистских штампов.
Этот аспект, вообще говоря, как раз и является основной “опасностью внедрения ИИ”: непрозрачным, ненадёжным системам поручат то, что поручать таким системам нельзя. А мотивировать такой подход, как раз, будут желанием “совершить качественный скачок”. Это вот не менее основной и необходимый элемент Нового средневековья. Про попытки внедрения ИИ-агентов я писал не раз. Например, пару лет назад на dxdt.ru, применительно к новостям из DARPA, – несколько цитат из той записки:
Одно дело, когда речь идёт действительно об алгоритме, выдающем труднопредсказуемый для внешнего наблюдателя результат, но, при этом, сам алгоритм вполне себе может быть записан и задокументирован, а совсем другое дело – когда в “недетерминированность” превращается принципиальная недоступность внутреннего устройства системы ИИ для понимания даже разработчиком.
“Недетерминированный” алгоритм, но в классическом понимании, может выдавать такую последовательность отклонений органов управления летательного аппарата, которая приводит к движению по сложной, псевдослучайной траектории, ведущей, тем не менее, в заранее заданную точку – давно известный подход, применяемый на практике. Кстати, применяется не только для управления полётом, но и в случае радиосигналов, как для защиты от помех, так и для затруднения обнаружения.
Понятно, что если траектория и манёвры некоторого робота предсказуемы заранее, то перехватить такого робота сильно проще. Поэтому и требуется некоторая степень недетерминированности. Однако подобные алгоритмы имеют вполне конкретное, – детерминированное, так сказать, – описание. А если описание конкретное, то его можно превратить не только в обозримый исходный код и прикрепить к документации, но даже и попытаться реализовать формальное доказательство корректности: для практических систем это вполне возможно, если, конечно, там не десять миллиардов коэффициентов, как в продвигаемых ИИ-решениях.
Вообще, речь тут всегда идёт не столько про ИИ, – который лишь служит обёрткой, – а про понимание “детерминированности” и о точке зрения, с которой эта “детерминированность” рассматривается. Например, для внешнего набюдателя, не знающего ключа, последовательность переключения частот передатчика выглядит “недетерминированной”, но как только этот внешний наблюдатель знает ключ, то и последовательность сразу же становится “детерминированной”. Строгое определение гласит, что такая последовательность вычислительно неотличима от случайной. Соответственно, если смотреть строго, то всё, что используется в подобных программно-аппаратных системах – практически детерминированно и так.
За “ИИ-хайпом” скрывается тот факт, что все эти “ИИ-агенты” работают на полупроводниковых процессорах, являющихся конечными автоматами. Да-да – опять же, строго говоря, тут нужно всё брать по модулю “квантовых процессов” внутри базовых кристаллов аппаратуры. Об этом речь пойдёт отдельно. Но на практике же, если аппаратура работает верно, то можно предсказать выдачу “ИИ-агента” точно, несмотря на то, что внутри него присутствует рандомизация – была бы полная информация о состоянии и внутреннем устройстве этого “ИИ-агента” и вычислительная возможность эту информацию обработать. Такая возможность тут определяет всё прочее: если пространство перебора для коэффициентов слишком большое, то только наличия информации уже недостаточно для практического изучения.
Но, если возможность всё же есть, то что же это получается – это тогда никакой не “интеллект”? Получается так, да.
Тут важно учитывать, что с толкованиями детерминированности алгоритмов, когда речь про новомодные ИИ-системы, тоже происходит некоторая подмена понятий, сдвиг уровня интерпретации. Скажем, алгоритм, по которому управляется какой-нибудь самолёт (или ракета), может казаться детерминированным в том смысле, что по официальному описанию этого алгорима возможно точно предсказать то, как поведёт себя самолёт в заданной конфигурации и при заданных внешних условиях (сигналах на датчиках, например). Возможно, но не факт, что возможность реализуется. Тогда вопрос про допуск “ИИ-алгоритмов” и ИИ-агентов сводится к тому, может ли кто-то из инженеров-разработчиков прочитать и понять документацию, сопоставив её с имеющейся реализацией алгоритма. То есть, это вопрос уровня понимания и возможностей по исследованию системы. И можно же ведь сказать, что если используется ИИ-агент, управляющий самолётом, а его работа не требует понимания инженером – это же ИИ. Так же и в другую сторону – если инженер не может понять документацию, то ситуация уже эквивалентна использованию “недетерминированного” ИИ-агента. Отсутствие ментальной модели – постулирует наличие ИИ где-то рядом.
Насколько хорошо пилот современного истребителя понимает, как там что в этом истребителе работает в данный момент времени? Как говорится, модель-то полёта в голове есть, но реально происходящие внутри аппаратуры процессы – это сильно сложнее. Потому что – где там и что перещёлкивается, согласно сотням тысяч строк программного кода? Кто знает. Многие и многие пользователи компьютеров, в том числе, разработчики ПО, например, вообще уверены, что компьютер считает – мол, всё можно перевести в числа (это так) и поэтому всё можно реализовать на компьютере, который считает (это неверно: и перевести в компьютерное представление нельзя, и компьютер ничего не считает).
С одной стороны, схему, когда “не всё известно точно”, можно обозначить как то, что допускается использование “недетерминированных систем”. Типа, условный ИИ-агент может действовать различными способами, а человек-инженер не имеет возможности предсказать точно, какие именно действия совершит этот ИИ-агент, как не знает и деталей работы той или иной аппаратуры. Вот и вся диспозиция. Если допуск таких ИИ-агентов разрешается, предположим, в бортовые системы управления самолётом, то вот и самолёт теперь с “недетерминированной системой”. С другой стороны, в реальности, за этими ИИ-агентами всё равно стоит детерминированная аппаратура. Просто – теперь понимание устройства системы перешло к каким-то другим инженерам.
Такая вот история с этими ИИ-агентами: на самом деле, под давлением “хайпа”, предлагается согласиться с отсутствием понимания системы инженерами-разработчиками, которые эту систему проектируют. Алгоритм работы – он всё равно где-то есть. Это очевидно: системы работают на обычной полупроводниковой вычислительной технике, просто, иногда её так много, что можно построить “стохастического попугая” (кстати, ещё отдельный вопрос, как всё это сработает на практике, когда связи с дата-центром нет). Теперь, под прикрытием рассуждения о допуске “недетерминированных решений”, фактические алгоритмы выносятся за пределы “ментальной модели” разрабатываемой системы. Зато, мол, “искусственный интеллект”. Отсюда и все эти определения степени развития ИИ – типа, если для человека непонятно, значит, это настоящий сверхинтеллект (а не чепуха и нагромождения символов какие-то). Да. Получается что-то вроде “духа машины”, который предлагается задабривать специальными волшебными маслами, чтобы всё работало.
Интересно, что даже квантовые процессы, которым можно было бы отвести роль проводника интеллекта, вполне себе могут оказаться детерминированными. Да, господствующее сейчас представление относит квантовые события, типа радиоактивного распада какого-нибудь, к истинно случайным. Но, во-первых, может оказаться, что события такие – они тоже лишь вычислительно неотличимы от случайных; а главное, во-вторых, никакие модные ИИ исключительно квантовых элементов не используют, там обычные процессоры, где квантовая случайность работает как помеха. До тех пор, конечно, пока не послужит источником энтропии в аппаратном генераторе случайных чисел. Но где те генераторы на практике? Ну, разве что, в криптографической аппаратуре.
Комментировать »
Небольшой исторический экскурс, про комплексные числа и “квадратный корень из минус единицы”. Читаем исходники Бомбелли. Почему Бомбелли? Потому что без упоминания этого итальянского инженера-математика 16 века не обходится ни один экскурс в историю внедрения комплексных чисел. Про Рафаэля Бомбелли нередко пишут, что он “первым ввёл в обиход комплексные числа”. Несомненно, труд Бомбелли “Алгебра” (L’Algebra) сыграл одну из ключевых ролей в становлении подходов к алгоритмическому пониманию комплексных чисел. Но что именно сформулировал Бомбелли, и как именно? Насколько этот объект похож на современные комплексные числа?
Традиционно ссылаются на небольшой фрагмент из “Алгебры” Бомбелли, в котором прямо определяются правила арифметики для “мнимой единицы”, то есть, для i. Тут, однако, кавычки необходимы: мнимая единица – это в современных терминах; как будет понятно далее, у Бомбелли всё несколько иначе записано.
“Алгебра” Бомбелли написана на итальянском. Чтобы проиллюстрировать различие подходов, я постараюсь в ключевых местах дать дословный перевод текста Бомбелли, максимально близкий к исходнику (ну, на мой взгляд). Это позволит понять, как вообще описывались алгебраические объекты до появления современной нотации, и возможно ли сравнивать объекты непосредственно.
Кстати, современная алгебраическая нотация является настолько огромным достижением сама по себе, что именно её мог бы использовать “попаданец” в средневековое европейское прошлое для эффективного убеждения инквизиторов в том, что он, “попаданец”, реально из будущего. Современные для двадцать первого века теоремы, скажем, типовой “попаданец” не сможет даже сформулировать. Как и убедительно рассказать про “металлических птиц” и “дальновидение”, чтобы обособить свой рассказ от прочих волшебных историй, бытовавших и в средние века – просто, тут необходимо знать слишком много, для “попаданца”. Зато базовая алгебраическая нотация, на уровне записи формул корней квадратного уравнения, нынче хорошо знакома едва ли не каждому, а на образованного инквизитора прошлого произведёт впечатление. Но всё это в художественном произведении, конечно. Почему-то, этот вариант, хоть он простой и доступный, упускают из виду. Вернёмся, впрочем, к итальянской “Алгебре” 16 века.
Ниже дан первый фрагмент скана соответствующей страницы (это издание 1579 года, из библиотеки Linda Hall; страница 169; выделение цветом – моё; в некоторых местах, где допустимо и если не влияет на контекст, – я исправляю опечатки исходника и меняю типографику на современную итальянскую, для лучшего текстового представления, например, u -> v; см. детали ниже).

Итак, итальянский – исходный язык, на котором писал свой труд Бомбелли. Это уже далеко не латынь, но и не совсем современый итальянский – 16 век, всё же. (Знание итальянского для понимания этой заметки не требуется – я все важные слова объясню ниже.) В самом начале страницы, Бомбелли, буквально, пишет (пожирнение тут везде соответствует тексту, выделенному на скане): “Я обнаружил другой тип кубических корней выражений, который сильно отличается от всех других” (“Ho trovato un’altra sorte di R.c.legate molto differenti dall’altre”.)
Здесь сразу же попадается интересный термин: “R.c.legate”, от Radice Cubica Legata, – это обозначение для кубического корня, вычисляемого для некоторого алгебраического выражения (формулы), которое, как сейчас сказали бы, стоит “под радикалом”. Откуда и legata – “связанная” (итальянское radice, “корень” – женского рода; кстати, если вы только изучаете русский, то и “корень” вам тоже может показаться существительным женского рода). В общем, если на русском, то будет “связанный корень” или, что несколько точнее, “присоединённый корень”.
Что тут имеется в виду? Бомбелли определяет соответствующий больший термин – Radice Legata – за несколько десятков страниц до рассматриваемого фрагмента “Алгебры”. И в определении дан такой пример (здесь он записан в современных обозначениях и терминах): пусть кто-то говорит, “найди мне квадратный корень из (7 + √48)”, это означает, что нужно найти такое выражение вида a + √b, которое, “умноженное само на себя, даст (7 + √48)”; такое выражение, пишет Бомбелли, это (2 + √3). Проверяем: (2 + √3)*(2 + √3) = 4 + 4*√3 + 3 = 7 + 4*√3 = (7 + √48). Сходится.
Однако Бомбелли, когда описывает здесь нахождение квадратного корня в подобной форме, не использует термин “квадратный корень”. Он, буквально, пишет: “найди мне сторону” (дословно: trovami il lato). И это, вообще говоря, сторона квадрата, площадь которого равна заданному выражению (с иррациональностью!). Это всё похоже на геометрический подход, разделяющий числа и “величины”.
Нужно отметить, что, как сейчас бы сказали, Бомбеллли строит расширение поля рациональных чисел: потому что (7 + √48) = (7 + 4*√3) – это присоединение к рациональным числам иррационального √3, где √3 – это обозначение числа, квадрат которого равен 3 (определение корней дано у Бомбелли через умножение, а это очень важно). То есть, рассматриваем всевозможные выражения вида a + b*√3, где a, b – рациональные числа. Естественно, во времена Бомбелли абстрактной теории полей ещё не было, как и коммутативной алгебры в современном понимании. Но тем не менее.
Получается, геометрическая интерпретация всё ещё отражена у Бомбелли в терминах (“найти сторону”), но искомые “радикалы” вводятся уже через присоединение “внешнего” корня многочлена, через расширение поля, а не через “углы”, которые сейчас повсеместно связывают с комплексными числами, – например, в радиотехнике, но не только там. Именно алгебраическое определение комплексных чисел через расширение поля (присоединение корня полинома X^2 + 1) и является современным, – “операционным” и алгоритмическим, – вариантом. Угловые меры, как инструмент, конечно, в труде Бомбелли тоже есть, в том числе, при рассмотрении решений кубических уравнений. Но это не комплексные числа, а другой инструмент.
Фактически, “R.c.legate” это запись корня уравнения в кубических радикалах, с присоединением иррациональностей. Но всё же, получается, что речь тут идёт о специальном “радикале”, как способе записи, а не о теоретическом “числовом” объекте. Это следует ещё и из того, что темой соответствующего раздела является решение уравнений третьей степени (формула Кардано, в частности). В современных обозначениях – ∛(a + √d) – кубический корень из выражения, содержащего корень квадратный. Этот последний момент – важен для понимания дальнейшего текста.
Итак, имеем радикалы из выражений вида a + b√d, как способ записи, пригодный для специальных вычислений. Идём дальше – дословный перевод следующего фрагмента со скриншота труда Бомбелли: “эта вещь [радикал] встречается в главе, рассматривающей куб, равный многим ([т.е. кратности неизвестного]) и числу”. Вот этот странный текст про “куб, неизвестное и число”, это есть ни что иное как запись словами уравнения вида x^3 = px + q, если в современных обозначениях. (Далее будем называть здесь q не “числом”, а константой – так понятнее.)
Бомбелли здесь рассматривает куб неизвестного х, слева, и он приравнивается к значению, кратному этому х (p*x), плюс некоторое число (буквально – numero), константа “без неизвестного”, то есть плюс q. Именно такая форма уравнений рассматривается. Вообще, это не единственная используемая “нотация”. Тот же Бомбелли далее в “Алгебре” использует специальную нотацию с отдельным обозначением степеней неизвестной арабскими цифрами (но без формального обозначения самой неизвестной – как сейчас написали бы: x или t). Однако в обсуждаемом фрагменте – тип уравнения назван просто словами. Ни о каких операциях речи ещё не идёт, но тут же вводится важное ограничение, выделяющее интересующий Бомбелли подтип уравнений и приводящее, в итоге, к “мнимым” (или “софистским”) радикалам.
Далее сформулировано условие, что (p^3)/27 больше (q^2)/4, но опять словами, при этом (p^3)/27 = (1/3*p)^3, а (q^2)/4 = (1/2*q)^2. Дословно по тексту: “когда куб одной третьей от кратности [неизвестного] – больше, чем квадрат половины числа [константы]”. В исходном тексте: “quando il cubato del terzo delli tanti è maggiore del quadrato della meta del numero” – “cubato del terzo” – “куб одной третьей”, “è maggiore del quadrato” – “больше квадрата” и т.д. То есть, всё описано словами, и речь о конкретном случае значений коэффициентов. Разительно отличается от современного подхода к изложению материала. Почему (p^3)/27 > (q^2)/4? Об этом сказано буквально через несколько слов.
Пропускаем слова о том, что примеры с таким уравнением Бомбелли разбирает в отдельной главе, читаем дальше и пытаемся разобраться: “соответствующий тип квадратного корня в своём вычислении (Algorismo) требует операций, отличных от всех других, и другого названия” (“la qual sorte di R.q. hà nel suo Algorismo diversa operatione dall’altre, e diverso nome”). Здесь R.q., от Radice Quadrata, – это уже квадратный корень, но терминологическая логика остаётся той же. Почему же речь теперь про квадратный корень, если сначала упомянуты кубические? Потому что здесь написано про “подрадикальный” корень, соответствующий вычислению корня кубического. Собственно, когда вы решаете кубическое уравнение в радикалах, то в процессе решения обязательно возникает квадратное уравнение и квадратные корни. В формуле Кардано они и составляют смысл всей затеи. О чём и пишет Бомбелли далее: “когда куб одной третьей кратности больше квадрата половины константы, тогда нельзя назвать [его] ни больше, ни меньше“. То есть, тут речь про значение “ни с плюсом, ни с минусом”. Необходимо учитывать, что отрицательные числа пока что не используются как класс, привычный сегодня: например, довольно сложно определить, что такое сторона квадрата, имеющая “отрицательную величину”. Поэтому “ни больше, ни меньше” – “ne più, ne meno”, – как операции увеличения и уменьшения чего-то: a + b, a − b.
Формула Кардано имеет вид (a + √b)^(1/3) + (a − √b)^(1/3), то есть, это сумма двух кубических корней, соответствующих R.c.legate Бомбелли, а “ни больше, ни меньше” относится к части √b. Ведь в формуле Кардано b = (q^2)/4 − (p^3)/27, соответственно, если (p^3)/27 больше (q^2)/4, то и получаем отрицательное значение под квадратным корнем. Это и есть та величина, про которую ни сказать, что “она больше”, ни сказать, что “она меньше”.
Дальше: “но [эти элементы] называю “плюс минуса”, там, где их нужно складывать ([увеличивать]), а где их нужно отнимать ([уменьшать]), называю “минус минуса”, и эта операция необходимейшая…” (“però lo chiamerò più di meno, quando egli si doverà aggiongere, e quando si doverà cavare, lo chiamerò men di meno, e questa operatione è necessarissima…”). То есть, в том случае, когда под радикалом отрицательное число, Бомбелли такое сочетание не считает возможным называть, ни “большим”, ни “меньшим” – читай: ни положительным, ни отрицательным, – но называет “плюсом минуса” и “минусом минуса”. Для прототипа i тут вводится специальное, двойное операционное обозначение. Те же “плюс минуса”/”минус минуса” можно перевести и как “больше минуса”/”меньше минуса”. Что это могло бы обозначать? А это больше всего похоже на описание способа выноса мнимой единицы из-под радикала. Например, перепишем (2 − √(-3)) как (2 − i*√3).
Что касается исключительной важности новой операции, которая объявлена “необходимейшей”, то речь тут об уравнениях четвёртой степени (potenza di potenza) разной формы, где подобные радикалы возникают “гораздо чаще, чем другие”.
Далее Бомбелли пишет, что “[подобные радикалы] многим покажутся скорее “софистскими”, чем “настоящими”; такого мнения и я сам придерживался тоже, пока не нашёл для него [радикала] демонстрации геометрической” (“la quale parerà à molti più tosto sofistica, che rale, e tale opinione hò tenuto anch’io, fin’ che hò trovato la sua dimostratione in linee”).
Как ни странно, но геометрическая демонстрация (на плоскости, да), которую Бомбелли приводит отдельно (а я здесь пропускаю), это вовсе не современная геометрическая интерпретация комплексных чисел – с поворотом, углами, мнимой и действительной осями.
Промежуточный итог: Бомбелли рассматривает некоторые “новые радикалы”, отдельный тип квадратного корня, со своим названием и свойствами, как составную часть операции отыскания кубических корней. То есть, в качестве вспомогательного элемента, чтобы операция работала, используется новый объект, который очень похож на мнимую единицу (см. “плюс-минусы” выше), но вовсе не на квадратный корень из минус единицы, как на число вообще и на “рациональное” число в особенности. Далее Бомбелли перечисляет правила умножения “знаков” для нового элемента: “и вначале разберу умножение, определив закон для плюса и минуса” (“e prima trattarò del Moltiplicare, ponendo la regola del più & meno”). На скриншоте ниже – эти определения.

Если новый “минус” заменить на обозначение i, то получится, что здесь написано следующее (пример из: F. La Nave and B. Mazur, Reading Bombelli, 2001):
1. (+)*(+i) = +i
2. (−)*(+i) = −i
3. (+)*(−i) = −i
4. (−)*(−i) = +i
5. (+i)*(+i) = −
6. (+i)*(−i) = +
7. (−i)*(+i) = +
8. (−i)*(−i) = −
Если представить, что “чистый” минус и “чистый” плюс – это подразумеваемые плюс/минус единицы по умножению (как в современной нотации), то получится, что в пятой строке записано (i*i) = i^2 = -1. А это корректное определение мнимой единицы. Может показаться, что обобщив определение квадратного корня в “Алгебре” Бомбелли получаем √(-1) = i, поскольку i*i = -1, но это не так, поскольку Бомбелли не вводит i как “число” или как измерение “стороны”. Это i – приписано сейчас, это некий анахронизм, а в исходном тексте (см. скриншот выше), фигурируют лишь операционные обозначения “плюс минуса” и “минус минуса”. И тем более выделение концепции мнимой единицы оказывается в некотором противоречии с тем, что данные специальные радикалы (R.C.Legata) вводятся непосредственно для выражений вида (a + √d), применительно к кубическим уравнениям. А в современном варианте извлечение кубических корней из комплексных чисел требует формулы Муавра и тригонометрического представления.
Бомбелли находит решение в радикалах для уравнения x^3 = 15*x + 4. Это, пожалуй, второй самый цитируемый фрагмент “Алгебры”. Во времена Бомбелли было известно, что кубическое уравнение всегда имеет один (действительный) корень, а особый интерес представляли только положительные корни. С одной стороны, положительный корень x^3 = 15*x + 4 нетрудно угадать: x = 4. С другой стороны, (4^2)/4 = 4, (15^3)/27 = 125, и формула Кардано даёт для этого уравнения следующее выражение: ∛(2 + √-121) + ∛(2 − √-121). Это как-то не очень похоже на 4.
Вообще, можно найти и некоторые другие озадачивающие варианты значений внутри формулы Кардано для уравнений с очевидным целым корнем, без “отрицательных радикалов”, особенно, если вам знакомо уравнение Пелля, но это тема для другой записки. Что же касается √-121, то это всё равно выглядит сложно. Даже сейчас, для современного взгляда. Потому что, вообще говоря, и значений кубического корня получается несколько, и для случая трёх действительных корней формула Кардано, мягко говоря, несколько бесполезна.
Однако Бомбелли, иллюстрируя свой новый метод, показывает, что (2 + i)^3 = (2 + √-121), если только следовать описанным выше правилам. И действительно, (2 + i)*(2 + i) = (3 + 4i), (3 + 4i)*(2 + i) = (2 + 11i) = (2 + √-121). Соответственно, (2 − i)^3 = (2 − √-121), так сказать, из соображений симметрии (это отмечено у Бомбелли, как ни странно). Поэтому ∛(2 + √-121) + ∛(2 − √-121) = (2 + i) + (2 − i) = 4. Вот только в данном конкретном случае значения нетрудно подобрать под известный ответ. А в других случаях – без рационального аналога тригонометрии с кубическими корнями будет трудновато.
Комментировать »
Регулярно приходится слышать и читать, что, якобы, беспилотные автомобили превосходят водителя-человека (профессионала) по возможностям эффективного вождения – потому что, дескать, “они же роботы”. Естественно, в теории, можно сделать эффективный автомат. Настолько эффективный, что он будет точнее и быстрее любого человека. Это много раз доказано на практике. Не приходится сомневаться. Вот только точнее и быстрее этот автомат будет на каких-то конкретных, хорошо формализуемых задачах. А с формализацией задач, которую должны делать люди, есть проблемы.
Вот свежий пример от беспилотных такси Waymo: пишут (англ.), что эти машины остановились – как попало, заблокировав проезд! – почти по всему Сан-Франциско, как только там отключились светофоры. Светофоры отключились потому, что отключили электричество. Один эффект – вызвал другой, не менее неприятный.
Вообще, автомобиль всегда был достаточно автономным средством передвижения, которое средство может двигаться вне зависимости от внешних условий: у автомобиля локальный запас топлива, есть фары для тёмного времени суток, практически любой автомобиль способен передвигаться по плохой дороге или без дороги вовсе, есть немало автомобилей, которые, как раз, легко передвигаются без дорог, и т.д., и т.п. Но, как ни странно, не в случае беспилотных такси Waymo: оказывается, эти такси запрограммированы останавливаться совсем, если на перекрёстке не работает светофор. Заметьте, что правила дорожного движения, обычно, разрешают движение через перекрёсток при отключенном светофоре. Ну и уже тем более, просто из здравого смысла, можно продолжить движение в критической ситуации городского блэкаута. Но роботы-такси остановились. И не просто – они ещё и движение для других заблокировали.
Тут есть ещё один интересный момент: то, что все эти блэкауты и прочие “большие неприятности” случаются чаще (хотя должны бы реже), связано с наступлением Нового средневековья, в котором технологии есть, а понимания того, как эти технологии работают, – уже нет. Всякие информационные системы, позволяющие делать такси-роботов, составляют существенную часть движения, повышающего вероятность системных, инфраструктурных проблем – и эти же технологии дают возможность заполнить улицы недееспособными автомобилями-роботами, которые, при возникновении нештатной ситуации, эту ситуацию усугубляют. Одно – успешно ускоряет другое. Недалеко до “цепной реакции”, которую, собственно, многие уже давно ожидают.
Комментировать »
Нередко можно услышать, что перспективные ИИ/LLM не заменят настоящих разработчиков и специалистов потому, что LLM нередко генерирует “решения” с грубыми ошибками, а чтобы понять, где эта ошибка, в чём она состоит и как её исправить – нужен тот, кто реально понимает, что же происходит. То есть, после наступления “эпохи развитого ИИ”, востребованными останутся специалисты с большим опытом и глубоким пониманием темы. Эти специалисты ещё и будут крайне редки, так как везде уже ИИ с LLM оказал влияние. Казалось бы, если результаты генерирования ИИ зашли в тупик, то такой специалист только и может выручить.
Логично.
Вот только тут неявно предполагается, что цель – получение полезного продукта, а не тупика. Это существенное допущение. Оно работает лишь до тех пор, пока достигнутый “тупик” просто не объявляется тем же ИИ единственным возможным результатом. И вот – “скрипач” оказывается не нужен.
Как только господствующим станет представление об ИИ как о последней инстанции, тут же места для редких специалистов не остаётся. К сожалению. Да, пока что специалист без труда может привести конкретные примеры ошибочного, – имитационного, а потому бесполезного, – выполнения задачи силами LLM, подкинув очередному “стохастическому попугаю” минимально содержательную и оригинальную инженерную задачу. И что ещё важнее – эти примеры есть кому показать. Надолго ли? В условиях Нового средневековья всё может быстро измениться.
Представьте, что именно LLM используется для определения того, можно ли реализовать решение некоторой задачи, можно ли исправить ошибки в каком‑то коде. Зачем? Чтобы повысить качество процесса, уменьшить количество итераций. Скармливание вывода одной LLM в другую LLM – типовой подход уже сейчас. Так что использование LLM на втором слое обработки задач не выглядит удивительным достижением. Например, несколько сомнительная, но очень популярная, идея, что обнаруживать тексты, сгенерированные LLM, нужно при помощи другой LLM, обученной на текстах первой, регулярно получает практические воплощения. Да и ИИ‑исследователи (“автоматические учёные”, как researcher) уже то и дело предлагаются через СМИ.
При написании студенческой, научной работы – использование LLM не только больше не является чем‑то “из ряда вон”, но уже иногда и прямо поощряется. Несомненно, тут есть куча оговорок: необходимо понимать, что хорошая LLM – это полезный инструмент обработки текста. Проблема в том, что появились новые трактовки понятия о полезности. Например, объявляется полезным для процесса обучения “исправление текста за ИИ/LLM”.
Действительно, в самом по себе использовании калькулятора на уроках математики ничего плохого нет, однако проблемы начнутся тогда, когда на смену изучению арифметики придёт “знакомство с назначением кнопок калькулятора”, чтобы “научиться правильно формулировать ему задания”. В такой парадигме нет места кому‑то, кто будет изменять результаты LLM не в учебных целях, да не получив одобрения другой LLM. Когда доступ к подобному ИИ имеется в изобилии, то ИИ/LLM и может объявить, что задача не решается в принципе, так что нет смысла звать “древнего инженера”.
Предположим, LLM “спроектировала” подъёмный кран, который всегда переламывается. Промпт переписывали по инструкции разными способами, но нет, не выходит прочный подъёмный кран. А более мощная LLM пишет, что сконструировать подъёмный кран, который не переламывается, невозможно в принципе. С развернутым обоснованием. Можно ли в принципе подобрать такие требования для крана, что построить соответствующий механизм невозможно? Можно, конечно. Хорошо. Достаточно теперь обобщить это наблюдение при помощи LLM.
Да, проблема с генерированием надёжного результата скорее решится тем, что и подготовка выводов о невозможности достижения результата тоже переходит к ИИ/LLM. Что ж, если посмотреть на современный хайп, то для этого всё и затевается, верно? “Сверхразумный ИИ” решает любые задачи, исследует все возможные исследования одновременно, и не может ошибаться, а поэтому всегда поможет.
Предполагается, что такой ИИ ищет только лучшие решения, видимо, из неких “общих соображений”. В какой‑то момент все предлагаемые решения начинают считаться лучшими. По определению. Пока что в интерфейсах LLM и в пользовательских соглашениях пишут, что “эти системы могут ошибаться”. Наличие такого дополнения как раз вызвано тем, что без него – далеко не всем очевидно, могут ошибиться или нет. Трудно ли поверить в то, что в какой‑то момент новая версия LLM заявит, что текст про возможность ошибки лучше убрать? Нет, не трудно. Для этого уже есть неплохой фундамент: регулярно пишут, что “человек не сможет понять выводы сверхразумного ИИ”. Так что никто и не гарантирует, что реальный, настоящий результат не будет работать в другую сторону – LLM всё равно, а человек‑то, – якобы, – “понять не может”, будь он хоть какой специалист.
Сверхразумный ИИ обещают уже чуть ли не в этом году. Ну или в 2030, что тоже не так далеко, как хотелось бы. Выглядит сомнительно. Если только не считать, что степень сверхразумности будет определяться по сообщениям газет: может же так быть, что какую‑то новую систему просто объявят сверхразумной? Вполне. Посмотрите на эту социальную область повнимательнее: тема активно развивается десятки лет, но требований для расстановки статусов ИИ так и не появилось. Есть, впрочем, регулярно обновляемый список “сомнений”, которые подстраиваются под каждый новый уровень. Например: появились системы, распознающие буквы на картинках, – нет, это далеко не ИИ; появились чат‑боты, генерирующие связный текст на естественном языке, – ну, это уже ближе, но всё равно нет, ещё не ИИ; и так далее. Только подтверждает существование самой возможности “сверхразумности” через объявление: всегда можно возразить, что некоторые много лет подстраивают уровень своих сомнений, поэтому и тут, традиционно, сомневаются.
Вернёмся к подъёмному крану: пусть разработка крана зашла в тупик, но ведь у ИИ нетрудно узнать непосредственно, как ещё можно поднимать грузы на высоту, верно? “Делайте грузы круглыми и закатывайте их по рельсам при помощи велосипеда, снабжённого системой блоков” — сообщает, предположим, ИИ. Так что тут точно нет места для дополнительного обращения к какому‑то “уникальному специалисту”: ИИ отверг одно направление, “научно” объяснил, что оно “невозможно”, и предложил другое, с круглыми грузами. Точка.
В такой конфигурации Нового средневековья некоторые технологические направления начнут быстро “засыхать”, а другие – требовать для поддержки всё больше механических ресурсов, но не специалистов. Сверхидея исходной концепции про редких незаменимых специалистов – в сохранении понимания технологий. Сохранение понимания – не равно сохранению только технологии. Человеку, чтобы хорошо понимать ту или иную технологию, нужно постоянно и непосредственно взаимодействовать с объектами, определяющими свойства данной технологии, а не просто выполнять ритуалы. Ритуалы при этом важны, сомнений нет. Но кто сказал, что концепция сохранения технологий не будет заменена на сохранение даже не самих ритуалов, а представлений о ритуалах? Такой вариант вполне вероятен. ИИ, как говорится, в помощь. (Да, тут сразу вспоминаются Adeptus Mechanicus из одной весьма известной игровой вселенной.)
Если технологии начнут “засыхать”, то кто же будет обслуживать дата‑центры с миллионами микропроцессоров, подливая волшебное масло в систему охлаждения? Кто угодно, с нужным уровнем допуска. По инструкциям, выдаваемым LLM, которые на тех микропроцессорах работают. Да, в какой‑то момент система охлаждения сломается. Но далеко не сразу, это же путь медленного угасания.
И всё же, переход к подобной схеме требует некоторого скачка. Остаётся надеяться, что для него пока не накоплено достаточной базы.
(Эту статью я ранее публиковал на “Хабре”.)
Комментировать »
Сейчас использование наличных денег сокращается. Это не очень хорошо по многим причинам. Среди этих многих причин есть и не самая очевидная. Дело в том, что исчезновение физического воплощения “платёжных средств”, пусть и в виде денежных знаков, это исчезновение целого класса фокальных объектов. Термином “фокальный объект” тут обозначается некий физический артефакт, позволяющий перенести на него фокус внешнего внимания.
Рассмотрим ситуацию на примере монет. Монета находится в окружающей действительности, монету можно рассматривать, но ей же соответствует вполне конкретная, утилитарная роль. Это не то же самое, что и “внутренний фокус” – то есть, мысленное представление монеты (монету, кстати, даже не все могут представить). Напротив, настоящая монета, находящаяся в обращении, это ещё и переходящий фокальный объект: монета движется – приходит вместе с товаром (“сдача”), уходит в качестве оплаты, в обмен на товар.
Не обязательно быть нумизматом: если монеты имеют хождение в качестве представления денег, то, так или иначе, с ними сталкиваются те жители планеты, кто наличные деньги использует. Раньше этот эффект регулярно вызывался с социальными целями: выпуск памятных монет, замена обозначений на монетах – это всё далеко не просто отражение некоторых событий, а процесс более хитрый, встраивающий некоторый опорный граф в восприятие окружающей действительности.
Отмена наличных денег уничтожает весь этот значительный эффект.
Комментарии (1) »
Повышение уровня абстракции – полезный и важный элемент процесса обдумывания, так как позволяет задействовать механизм “разрешения противоречий”. Если такой механизм есть, конечно.
Возьмём пару цитат и ещё одну, не менее замечательную:
“Нас невозможно сбить с пути, нам всё равно, куда идти”
М. М. Жванецкий(?), (есть вариант “никому не сбить”, не важно).
“У самурая нет цели – только Путь”
“Хагакурэ”, Ямамото Цунэтомо. (Иногда напоминаю коллегам эту важную максиму.)
Это почти об одном и том же. В первой цитате – всё равно, куда идти, но идти необходимо, иначе исчезает содержательная часть. Именно ход создаёт путь, который, по определению, тут не может вести к конкретной цели. Цели нет. Только Путь. Как и у самурая из второй цитаты. Почти.
“Всё равно куда” перекликается с одной из самых знаменитых цитат из “Алисы в Стране чудес”:
”
– Скажите, пожалуйста, куда мне отсюда идти?
– А куда ты хочешь попасть? – ответил Кот.
– Мне все равно… – сказала Алиса.
– Тогда все равно, куда и идти, – заметил Кот.
– …только бы попасть куда-нибудь, – пояснила Алиса.
– Куда-нибудь ты обязательно попадешь, – сказал Кот. – Нужно только достаточно долго идти.
“
Л. Кэрролл.
Эта цитата содержит машинерю, позволяющую детально разобрать две предыдущих цитаты. Всё равно, куда идти. Но если идти достаточно долго, то куда-нибудь попадёшь. Долгий ход, как сейчас говорят, “определяет”. Если недостаточно долго идти, то не получится дойти даже куда-нибудь (настолько размытое пространство). Как понять, что идёшь уже достаточно долго? Нужна точка отсчёта, иначе всякий раз может оказаться, что ход недостаточно долгий и никуда не приводит. Где предельный переход? Возможен ли он? У самурая нет этих проблем, из-за глубинных свойств его пути.

Занятно, что, согласно “Алисе в Стране чудес”, даже когда путь отделяется от цели, он обязательно приводит куда-нибудь. Это здесь чисто категорийное свойство пути – приводить куда-то. Стрелка.
К сожалению, такое определение недостаточно абстрактно: выходит, что если начать просто “идти” и “идти”, то это ещё не путь. В “невозможно сбить с пути”, не только путь появляется раньше цели, но и сказано, что куда-то мы должны идти. Да, всё равно – куда, но ведь – куда-то! Тем не менее, попытка отделить свойство, создающее путь, от цели, через “невозможность сбить с пути”, это абстракция достаточно высокого уровня, чтобы начать строить теорию категорий. Удивительно.

Тут-то и можно заметить преимущество положения самурая из самурайской цитаты, по сравнению с ситуацией “всё равно куда”. Во “всё равно куда” – цель неявно проступает, если попытаться задуматься и начать искать способ разрешения противоречий: как определить, что всё равно, куда? Ведь “куда” подразумевает некоторое направление пути, почти что цель. Для “куда” нужно ввести дополнительные понятия, чтобы отличать одно “куда” от “другого”. А про самурая нельзя сказать, что ему всё равно, куда идти. У самурая отсутствие цели постулируется, так что “куда” – просто не возникает. Все “куда” поднимаются для самурая в Путь (см. иллюстрацию).
Дзен самурая – дзен более высокого уровня, на фоне которого “всё равно куда” выглядит некоторым мельтешением: суетятся, бегают куда-то, всё равно, куда – лишь бы бегать. Самурай не суетится. У самурая нет цели. Только путь.
Комментарии (1) »
Представьте некий аппаратный счётчик импульсов, постренный, что называется, “на транзисторах”. Счётчик подсчитывает короткие прямоугольные импульсы, поступающие на вход. Выводит – текущий результат, который отображает при помощи линейки на восемь светодиодов, в привычном двоичном формате: то есть, буквально – показывает один байт. Как только байт переполнился (на 255-м импульсе), счётчик заворачивается снова в нуль. Это просто электронная схема, и к ней нет никакой программы на ЯВУ и памяти. Несмотря на то, что описать счётчик можно и на специализированных языках, и на универсальных языках программирования, такой же счётчик-энкодер нетрудно сделать исключительно на транзисторах, если есть достаточно и транзисторов, и времени на сборку.
Однако, считает ли этот счётчик, в привычном для разработчика-человека значении слова “считать”? Нет, не считает. Это просто схема, которую поступивший импульс последовательно переключает в следующее состояние. Автомат. Конечный. Каждое состояние соответствует некоторой конфигурации светодиодов. Вывод реализован на “двоичных” светодиодах, но в самой схеме нет никакого двоичного кодирования, какой-то реализации двоичной системы счисления или чего-то подобного. Системы счисления и количество импульсов здесь вообще образуются только в представлении разработчика и пользователя счётчика, когда те интерпретируют позицию и состояние каждого светодиода (ну, ещё при проектировании схемы, допустим).
Чтобы лучше понять этот момент, предположим, что вместо линейки светодиодов решено теперь использовать 7-сегментные индикаторы. Схема точно так же считает до 255, но результат демонстрируется при помощи десятичных цифр на трёх 7-сегментых индикаторах. Знакосинтезирующий энкодер – тоже собирается на транзисторах. Никакой внешней программы опять не нужно – только принципальная схема. Но ситуация стала сложнее. В варианте со светодиодной линейкой, отображающей “байт”, для вывода числа 8 включался только один светодиод. В варианте с индикаторами нужно включить семь светодиодов – это традиционная схема отображения восьмёрки на 7-сегментном индикаторе.
Почему так получилось? Формально, и двоичный, и десятичный вариант – отображают цифры. Но в двоичном варианте цифр требуется всего две, и одну из них обозначает выключенный светодиод. А вот в десятичной системе с индикаторами на сегментах – нужно десять цифр, и у этих цифр появляется необходимая пространственная конфигурация (двумерная): “рисунок” цифры {0, 1, 2, 3, 4…}, который и позволяет наблюдателю отличать одну цифру от другой.
Поэтому можно считать, пусть и несколько условно, что упомянутая выше двоичная схема отображения на светодиодной линейке – ближе к самому отображаемому числу, а вот схема с индикаторами – ближе к отображению цифр. Для десятичных цифр нужно больше структуры. Однако, во-первых, эта структура возникает в представлении разумного наблюдателя; во-вторых, конфигурации сегментов индикаторов всё так же можно легко сопоставить с числами {0,…,255} попарно. То есть, с точки зрения схемотехники, да, стало больше элементов, но количество состояний схемы осталось тем же, что и в случае светодиодной линейки. Структура, необходимая для понимания цифр, добавилась, а количество состояний – не увеличилось. Всё потому, что никакого процесса счёта и записи чисел цифрами – в схеме нет. Это лишь интерпретация. Интеллектуальная интерпретация. Но реализуется она не на схеме.
Пусть теперь вместо электронной схемы “на транзисторах” наш счётчик устроен снова иначе: 7-сегментные индикаторы остались, остались и десятичные цифры, но теперь они переключаются с помощью диска, на который нанесены контактные дорожки, включающие нужную комбинацию сегментов на каждом из трёх индикаторов. Диск поворачивается электромеханическим приводом: на каждый импульс – следующий угол, соответствующий нужному набору контактных дорожек. Поворачивается диск – работает счётчик. Если убрать механизм в ящик, то внешний наблюдаемый эффект – точно такой же. Однако электронная схема “на транзисторах” – содержит больше связей и внутри выглядит сложнее, потому что там нет простого и понятного диска с контактами, а есть много связей между “непонятными детальками”. Потому что понять, без подготовки, как устроен диск с контакными дорожками – проще, чем понять схему на транзисторах.
Теперь человеку-наблюдателю, который мало что знает об электротехнике и практически ничего – о твёрдотельной электронике, показывают и объясняют, как работает электромеханический вариант с диском, а потом выдают электронную схему на транзисторах, показывают, что там нет диска внутри, но как она устроена – не объясняют, зато просят сравнить результаты. Результаты одинаковые? Да. И вот теперь этому человеку-наблюдателю говорят, что транзисторная схема, поскольку в ней нет движущихся частей и диска, это “искусственный интеллект”, так как система “умеет считать про себя, в уме”. Интерпретация процесса как счёта – незаметно подменяется на различие в реализации одного и того же автомата.
Комментировать »
Очень много популярных статей “про квантовую механику” начинаются с дежурной фразы, утверждающей что-то вроде такого: “в квантовой механике – частица находится во многих точках пространства одновременно”. (Есть ещё полностью аналогичный вариант про пребывание во многих состояниях.) Примеры найти нетрудно, свежий есть на сайте Quanta Magazine.
Вообще, это сильно напоминает едва ли не столь же распространённую историю про “пересекающиеся параллельные прямые”: казалось бы, прямые – параллельные, но нет – “пересекаются”, да и всё тут!
Если частица “одновременно находится в нескольких местах”, то что это могло бы означать? Допустим, есть утверждение, что результат попытки измерения координат квантовой частицы может выдать разные значения с разной вероятностью. С одной стороны, все подобные экспериментальные измерения обладают некоторой погрешностью. Поэтому всегда можно ввести распределение верояностей.
С другой стороны, из того, что математическая модель позволяет построить распределение вероятностей, хорошо согласующееся с результатами последовательных измерений в сходных условиях, вовсе не следует обратное, не следует вывод, что и частица находится одновременно во всех этих точках пространства, которых, вообще говоря, можно насчитать сколько угодно – то есть, буквально, больше любого заданного натурального числа. При этом вовсе не запрещены эксперименты с локализацией квантовых частиц: соответствующая теория лишь позволяет с высокой точностью предсказывать распределение результатов для разных измерений, а не “размазывать” одну и ту же частицу – всякая работающая теория тут вообще про измерения, а не про частицы.
Естественно, можно считать, что это такое свойство – “размытие” частицы по “пространству”. Но если частица стала “размытым облаком”, то вот это размытое облако – и есть же область пространства, занимаемого частицей. То есть, если задуматься, то даже в такой интерпретации, – очень странной, – частица оказывается ещё более локализованной: вот же, описано, где она, буквально. Ну, хорошо, допустим, “сразу везде”, как и утверждается – экстремальный случай. Но отдельные точки пространства, необходимые для того, чтобы вообще “склеивать объёмы” и что-то сравнивать – как их определить? Точки всё равно оказываются некими наборами координат. И если за координаты принять вещественные числа, то утверждение, обратное к размытию вероятностей результатов измерения, опять перестаёт работать: практически невозможно попасть ни в какую заранее выбранную точку.
То есть, буквально, называете координаты точки, – например, (√2, π), – и всё – результат измерений “на приборах” всегда будет другим (потому что нельзя записать в десятичных дробях ни одну координату, ни вторую). А значит, частицу не удалось локализовать в достаточной мере, она осталась столь же “размытым облаком” – и где тогда проводить границу, по какому объёму? Если же сделать координаты дискретными, то необходимость “копирования частицы” по всем экспериментально мыслимым “кубикам” тут же исчезает вовсе, поскольку не только само вычисление вероятности не требует занятия всех возможных “кубиков” копиями частицы, но это не нужно и для непосредственного дискретного измерения.
Кстати, вот тут-то, конечно, сразу возникает и работает контраргумент Бернштейна к невозможности создания квантовых компьютеров, который про битовые строки: буквально – для вычислений над 1000-битными числами не обязательно все их хранить в памяти компьютера. Поэтому для вычисления значений функции, задающей вероятность результатов измерений координат в последовательных экспериментах, не нужно, чтобы частица была сразу во всех точках вычисляемого пространства. Зато вот если бы было нужно, то это тоже оказалось бы полезным. Вот только вряд ли об этом можно было бы узнать, поскольку такой расклад запретил бы не только обычные, но и квантовые компьютеры.
Посудите сами – все точки пространства забиты всеми возможными частицами за все возможные периоды времени и за все возможные эксперименты. Что это за пространство такое? Откуда оно берётся? Да, можно вспомнить про исходный огромный топос, сечение которого и есть наблюдаемый расклад окружающей действительности, но тогда в топос входит и, не менее обобщённое, пространство. Так что это не спасает утверждение про квантовую частицу, “пребывающую сразу во многих точках пространства”. Да и суждений таких, про топос, в научпоп-статьях упомянутого типа “про кванты” что-то не встречается.
Это, впрочем, не отменяет более общего рассуждения про потоки “квантовых” вероятностей, нужные для работы того же алгоритма Шора: эти вероятности, предположим, таки должны быть где-то распределены до того, как проводится измерение, в отличие от обработки тысячи битов на классическом компьютере. Но никакой необходимости одновременного пребывания потенциально локализуемой частицы во множестве точек пространства – нет и здесь.
Комментарии (1) »
Если самый полный известный текст “Илиады” (например) – это манускрипт десятого века (Venetus A), то как определить, что “Илиада” написана не в десятом веке, а сильно раньше? Помимо цитат в других произведениях, – для которых иногда встречаются более древние, чем десятый век, записи, – используется, например, тот факт, что нашли существенно более старые фрагменты папирусов, содержащие кусочки текста “Илиады”. Ну, как минимум, фрагменты на папирусах можно читать, как фрагменты “Илиады”. И эти фрагменты укладываются в текст манускрипта десятого века. Какие-то фрагменты укладываются очень точно. Например, потому что в них достаточно много слов сохранилось. Какие-то укладываются не так точно и однозначно, как хотелось бы. Естественно, подходят не только папирусы, но и какие-нибудь надписи на прочих предметах, – папирусы тут для примера.
Вообще, не так уж трудно подобрать очень короткие фрагменты из других текстов, которые, при подходящей нарезке, совпадут с “Илиадой”. Пример, который я нашёл достаточно быстро, есть даже на dxdt.ru (с картинками). Ничего удивительного: побуквенно совпадающие фрагменты из нескольких слов, не являющиеся прямой цитатой, всегда можно найти в двух достаточно больших литературных текстах на естественном языке. Во-первых, чтобы исключить подобные совпадения, нужно специально задаться подобной целью и начать генерировать синтетический текст в стиле “редкий редан редактора редукторной редиской… и т.д.”; но, – во-вторых, – даже если и задаться целью, то всё равно ничего не выйдет на сколь-нибудь большом расстоянии: какие-то слова обязательно попадут в типовую конструкцию, потому что всякая цепочка, выстраиваемая с прицелом на уникальность, начнёт рушиться из-за грамматических правил и смысловой составляющей (по условию задачи – текст литературный). Тем не менее, совпадение фрагментов – довольно надёжный инструмент. Нужно только правильно его применять. Надёжность возрастает с ростом количества доступных букв фрагментов.
Вообще, существенную роль в процессе атрибуции тех же папирусов с фрагментами “Илиады” играет уже расположение букв фрагмента. Эти буквы-символы собираются в кусочки слов, а относительное расположение кусочков похоже на расположение кусочков при общепринятом, каноническом способе записи текста “Илиады”. То есть, чтобы сдвинуть текст “Илиады” из десятого века в прошлое искусственно, нужно будет как-то “пересчитать” все эти фрагменты и их совпадения, разложив нужные элементы на папирусах. Получается что-то похожее на блокчейн с хеш-функциями: чтобы внести изменения – нужно “пересчитать” много данных, которые расползлись по папирусам, это, так сказать, “вычислительно сложно”. Причём, понятно, какие-то папирусы ещё не найдены, на момент формирования основного текста. Это всё не отменяет того факта, что каноническая запись “Илиады” является результатом редактирования и там заведомо отброшены какие-то фрагменты и варианты записи. Речь о другом: существенное изменение – потребует переучёта уже оставленных следов: какие-то нужно будет исключить, какие-то – сделать заново и признать “старыми”, где-то там закопав незаметно в древних развалинах.
Но можно ли, тем не менее, для “Илиады”, к примеру, реализовать такое современными методами? Скажем, взять разные автоматические генераторы изображений, насоздавать изображения папирусов и других надписей, сказать, что это всё вот просто в архиве оцифровано и показывать через Интернет. А при помощи 3d-принтеров и прочих хитрых инструментов – сделать много поддельных кусочков папирусов, надписей на “каменных табличках” и глиняных амфорах. Это можно сделать, но всё требует затрат. Тут речь не про альтернативную хронологию, а про погружение некоторого текста в более древние слои: получается, что для аккуратного погружения нужно “пересчитывать” совпадения элементов, расставлять слова на разных объектах согласованным способом. Понятно, что это всё работает не только для текстов, но и для археологических изысканий вообще. Тексты тут сильнее потому, что они сковывают возможности трактовки фактов через известное свойство истории “быть функцией от современности”.
Комментировать »
Новый