Категория: Компьютеры

Заметки о программировании и на околокомпьютерные темы

Вложенные категории: Игры, Нейросети, Delphi

NTFS: Can a file change without its MFT record also changing?

Answering my own question which StackOverflow thinks is not a question.

Can a file change without its MFT record also changing?
Clarifications:

  1. Broadly files:
    Directory counts as a file. Any change on the volume is a change to some "file".
  2. Arbitrary composition:
    Any compounded set of changes could happen between the points where we do comparison.
  3. Eventual consistency:
    If a change is delayed but will eventually get written out, this is fine. We only care about missing the change completely.
  4. Brought this upon yourself:
    Editing raw volume bypassing NTFS doesn't count.
    Obscure IOCTLs, FSCTLs and settings count only insomuch as they are realistic in normal use.
    We care about scenarios like "logging is disabled on the volume" or "backup tool rolls dates back with SetFileTime", but not ones where you have deliberately tried to circumvent NTFS.

The answer

For all intents and purposes: No, so long as you handle a limited bunch of exceptions:

  • All segments 0-35, and maybe up to 0-63.
  • All subcontent in $Extend, System Volume Information, Boot.
  • If a file has multiple segments they have to be treated as one. Any segment is dirty => all clusters mentioned in all of them are dirty.
  • Non-resident $INDEX_ALLOCATIONs's DUPLICATED_INFORMATION may change without the directory's MFT changing. Maybe consider all of these dirty.

Special files

Segments 0-15 are NTFS system files: $Bitmap, $LogFile, $BadClus etc. NTFS driver skips normal accounting with them. Do not rely on the MFT changing.
Segments 16+ are less fixed, but 16-35 are still commonly reserved/used for system files and also get driver magic.

There's a bunch of other files the NTFS and related drivers access directly, the ones I have encountered are all in $Extend, System Volume Information and Boot (on the boot volume; do not confuse with $Boot). The latter two can have arbitrary segment numbers, so if you want to be thorough you have to find them by parsing the directory tree.

Multi-segment files

Files can span multiple segments. The base segment will have $ATTRIBUTE_LIST, and the secondary ones will have its segment number in their BaseSegmentNumber fields. Changes to non-resident data in any of these segments may be reflected in other segments, so all segments have to be treated as one.

Creation/deletion

Creation: At least one MFT segment is associated with the new file and its IN_USE flag is set (a change).
Deletion: MFT segment loses its IN_USE flag (a change).
Reuse: On deletion, the MFT segment update counter is incremented by one. If a new file is stored in that place, even one identical in all other respects, its update counter will be different.

Segment addition/removal: If a segment is added to a multi-segment file, this sets its IN_USE flag. If it's detached, this increments the update counter and clears IN_USE flag for the segment itself. Either case changes the contents of $ATTRIBUTE_LIST in one of the remaining segments.

Simple attributes

Changes to the resident attributes ARE changes to the MFT segment and so are automatically covered. Some attributes are always resident so changes to those are always MFT-only.

Non-resident attributes are stored as a list of pairs "first cluster + length". If, due to size changes, clusters have to be allocated or released, this changes the MFT. But ever before that, data size in bytes for each non-resident attribute is stored in the MFT, so if data size changes, MFT changes.

The only remaining complex case is "non-resident attribute changes while maintaining the data size". This is a surprisingly common case. All sorts of databases are updated in this way, by writing to particular positions without changing the data size.

Non-resident attributes with no change to the data size

Here are the things that will change in the MFT entry:

LastModificationTime.
Changes every time you make changes to the file. Cannot easily be disabled, but you can roll it back with SetFileTime and various copy/restoration tools do just that.
LastChangeTime.
Reflects any changes to any attributes (data AND MFT), even if you later roll the change back. Cannot easily be disabled, and cannot itself be rolled back with SetFileTime, but I suppose there could be FSCTLs or IOCTLs. Borders on "brought upon yourself".
LSN (Log Sequence Number).
A pointer into $LogFile. Incremented every time there's a change to the MFT, even if you later roll it back. The $LogFile itself is circular but the sequence number includes a wrap counter: every time $LogFile wraps, the counter is incremented. The LogFile cannot be disabled.
USN (Update Sequence Number).
A pointer into $UsnJrnl. Tracks higher-level changes to files. The journal itself can be disabled.
Cached change times in $FILE_NAME.
No guarantees but also harder to roll back.
MFT segment fixups.
Increments every time this segment or its neighbors are writen. Wraps after 65536 so only *somewhat* reliable long-term. Not very useful as hits to one segment catch too many of the neighboring ones so usually when you're trying to detect changes you want to ignore fixup changes. Basically it's a worse version of LSN.

In conclusion:
Any change to the data triggers LastModificationTime. Any changes to anything (including the data AND LastModificationTime) triggers LastChangeTime. Any change to the MFT (including LastModificationTime and LastChangeTime) triggers LSN increase which is monotonic, non-disableable and cannot be rolled back.
To prevent this you'll have to disable BOTH LastModificationTime and LastChangeTime and prevent changes to $FILE_NAME. There does not seem to be a way to do either. Any of these trigger LSN which is then permanently different.

Delayed updates

NTFS delays some updates for, as some sources say, up to hours. This is fine, so long as those cumulative updates will eventually get written out.

Sparse files

Sparse files have some of the start:length pairs in the non-resident attribute run list marked as skips (not mapped to any real clusters). Changes to the total length or to the real parts are covered by the normal logic above.

Clusters turning from sparse to real and back will have to be reflected in the attribute run list (a change).

Directories

Directory contents is stored in its $INDEX_ROOT and $INDEX_ALLOCATION attributes, changes to which normally trigger the usual change logic (LastChangeTime -> LSN).

Exception: Cached file times in index file entries's DUPLICATED_INFORMATION may get updated at any time, and if that's non-resident, the driver does not consider this "a change to the directory" and does not do any MFT changes. If you want to catch these, consider all non-resident $INDEX_ALLOCATIONs dirty.

So far I have only seen this happen to DUPLICATED_INFORMATION. This is basically an unreliable cached information about the target file. It is reasonable that a change to the target file details is not considered a change to the directory. If this behavior is limited to this case, then maybe these can be ignored. I have not thoroughly verified that a change to important properties such as addition or deletion of a file will get reflected in the MFT, though I would expect it so.

File name changes and hard links

For each hard link, a file receives another $FILE_NAME attribute or two (if short names are enabled). This changes both the directory (its index) and the file. Renaming the file changes its name in the MFT.

How to test this

Get a segment dumper/printer. I'm using my own which I plan to share eventually.
1. Create some file and fill it with 4096 bytes, so that it does not fit in the MFT.
2. fsutil file queryfileid test.txt
3. Dump its segment.
4. Use a script which reads file times, changes the file and writes file times back.
5. Dump the segment again.
6. Compare.

Inapt

Переговоры с apt:
– Откатить один пакет на старую версию? 27 пакетов будут УДАЛЕНЫ, включая xorg.
aptitude
– Есть решение, где мы удалим 26 пакетов
– Нет
– Есть решение, где мы удалим 25 пакетов, установим 2 и нарушим 2 правила
– Нет
(30 таких решений спустя)
– Кстати говоря, есть решение, где мы откатим 8 пакетов на старые версии и всё будет хорошо. Годится?
– Господи, конечно, годится.
– Ну хорошо, вызываю apt
apt:
– Будут УДАЛЕНЫ 260 пакетов, продолжить?

SSD и HDD

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

SSD работают хорошо, а потом однажды не включаются и всё. Данные потеряны окончательно. Предупреждения не будет. Шансов на восстановление нет. На HDD полетел контроллер? Открутил, прикрутил такой же, работает. Полетели головки? В довольно-таки средней лабаратории их могут аккуратно заменить, если данные важны. У SSD почти неважно, что полетело, починить нельзя ничего.

Поэтому с SSD бэкапы ещё важнее, чем с HDD!

Ещё особенности:
1. Если вы скопируете один диск SSD на другой посекторно, не применяя никаких хитрых "filesystem-aware cloning", то ваш второй диск с точки зрения SSD будет полностью занят (даже если на нём много свободного места). Для SSD важно знать, какие сектора не используются. Когда вы копируете все сектора, в том числе незанятые, второй SSD не знает, какие из них какие. Нужно с помощью операционной системы сделать второму диску defrag /Retrim.
2. Команда TRIM (FSCTL_SET_ZERO_DATA) это способ, ошибившись в параметрах, одной командой уничтожить все данные на своём диске за долю секунды без возможности восстановления. Мало таких команд, где можно так быстро ошибиться настолько катастрофически. Благодаря тому, как устроены внутри SSD, урезанные (TRIM) сектора вытащить назад уже нельзя никаким доступным обычному человеку способом.
3. Было много утилит, восстанавливающих удалённые файлы, пока их данные на диске ещё не затёрты нулями. Если у вас включен TRIM при удалении (а это правильно, и по умолчанию он включен на SSD), то эти утилиты на SSD ничего не найдут. Не расчитывайте на них.

Переписывание и плагины

Чтобы программа существовала долго, в ней должны быть плагины.

Почему происходит бесконечное переписывание – “новый блокнот, где ничего нет и толстые кнопки”? Читать чужой код тяжело! Новичку чего-то не хватает, он открывает ваши исходники, а там волшебный лес AbstractSingletonFactory. “Cложно разбираться, напишу сам, а остальные функции всё равно ерунда“. Естественно, результат этого – плохой. Человек неопытен.

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

Почему переписывать кажется проще? Когда пишешь с нуля, постоянно достигаешь результата. Сразу что-то запускается и работает. Чтобы разобраться в чужом коде, надо не одни сутки копаться в нём, а результат минимален. Не только удовольствия нет, но и схема плохо запоминается. В итоге вас переписывают.

Как с этим бороться? Нужно дать новичкам лестницу из лёгких результатов.
Нужно предоставлять АПИ плагинов, которое одновременно простое – чтобы можно было, не вникая в подробности, быстро сделать что хочешь, – и выводит наружу особенности архитектуры. Достигая небольших результатов, программист будет лучше понимать её. К тому же, это инвестиция в вас. Таким образом будут воспитаны программисты, которым хочется вас доработать, а не переписать.

Так сделано в Вордпрессе, и какой процент сайтов работает на нём? Так было сделано в Windows (WinApi).
Так было сделано в Файрфоксе, но они бросили эту идею. В результате программистов, которые могли бы и хотели бы заниматься Файрфоксом, практически не осталось.

Естественно, архитектуру нужно постараться сделать простой! Части её – независимыми. Чтобы для отдельной задачи достаточно было разобраться в чём-то одном.
Если плагины нужно компилировать, можно добавить “простые плагины” на Питоне или Lua, но выводить туда настоящие внутренние классы. Или их упрощённые версии, но отражающие полезные идеи о них.

Подсознание и рефлексия

Так вот, в продолжение предыдущего поста.

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

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

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

В отличие, например, от зрения. Мы легко научаемся определять цвет, но построить рефлексию глубже мы не можем. Цвет кажется нам одной неделимой “квалией”, мы не в силах научиться отдельным чувствам, из которых он состоит. Хотя цвет – это составное ощущение. Или например: трудно отделить форму и положение предметов от пятен цвета, хотя глазами мы видим именно пятна, а форму и положение подсказывает наш зрительный комплекс.

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

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

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

Так или иначе, подсознание хорошо доступно для рефлексии. Если читать много примеров, в которых мотивы героя уже различили, то скоро научишься различать и собственные. Конечно, надо выбирать примеры с правильным разбором и объяснениями! Если читать околопсихологическую чепуху, то рефлексию вместо этого можно испортить. Верен анализ или нет – должен подсказывать рассудок

.

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

Скорее всего, верна теория о том, что мы автоматически (верим всему, что слышим)

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

Эта теория мне всегда казалась верной потому, что она логична. Обезъяны и другие животные, когда формировалась речь, не могли сразу получить полную систему безопасности. Речь была лишь сигналами: кто-то заорал от страха – туда не ходи. Крик – ещё один внешний стимул, как запах или вид опасности. Мы не сомневаемся в тревожном запахе. Когда развитые обезъяны начали использовать речь для передачи сложных сигналов, у передающего сначала не было никакой хитрости и лжи – и защищаться от них не было причины. Позже всё это появилось, и мы научились сопротивляться услышанному. Но вряд ли в нас есть особая камера, куда мы помещаем входящие слова прежде, чем санируем их. Скорее всего, если мы пропустили мяч, мы пропустили гол.

Каким же образом пропущенные, услышанные и не подвергнутые сомнению слова влияют на нас?

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

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

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

Пересказ сюжета

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

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

(Почему?)

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

Но и нейронка, если поместить текст книги в разговор, перескажет его и ответит на вопросы. На первый взгляд, можно сказать: конечно, ведь она видит текст. Но она видела этот текст на тренировке, и неоднократно! Почему *тогда* она не сделала из него выводов?

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

А вот если вы попросите её напечатать текст рассказа и затем ответить на вопрос, то она сможет. Узнали? Чтобы ответить на вопрос учителя о стихотворении, вы сначала вспоминаете его.

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

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

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

Это наводит на мысль, что на самом деле и мы не анализируем книгу на лету, и не усваиваем её вместе с сюжетом и ответами на вопросы. Этого не делает наш субстрат, наша нейронная сеть. Мы отвечаем на вопросы только тогда, когда задаём себе их. Когда обращаем своё внимание на них и запускаем обработку по шагам. Что и логично потому, что чудес не бывает: наша нейронная сеть тоже обладает ограниченной однопроходной мощностью, что нам хорошо известно (“надо подумать”).

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

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

Похоже это на правду? Получалось ли у кого-то заметить такое за собой?

Отставание в ракетах

Вот появятся убедительные виртуальные девушки/парни, и будет как в фантастике: каждому обидчику можно дать робота-жертву, чтобы он отвёл душу, не причиняя никому вреда. Таким образом часто мечтали сделать гуманную тюрьму будущего: если ты садист — заточить тебя в мире неразумных кукол, мучай технику. Или, скажем, если не можешь без скандалов, вот тебе робот, скандаль с ним.

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

Было бы неправильно подвергать разумных роботов насилию (даже психологическому). Так что маленькие уязвимые чатботы на роль жертв не годятся. Но можно ведь сделать Великий Гигантский Сверхинтеллект, и попросить его для каннибалов и насильников разыгрывать одним пальцем нужные им роли, всерьёз не увлекаясь? Для Сверхинтеллекта это лишь игра, одна из миллионов – сравнительно с масштабом его настоящих мыслей и чувств.

(Возможно, что и этого сделать нельзя)

Возможно, что и этого сделать нельзя.

В “Отставании в ракетах” Штросса однажды в 1960-х люди времён холодной войны, люди из поделённого на зоны влияния СССР и США мира, проснулись на другой Земле — с теми же материками, но плоской, почти бесконечной во все стороны, как лист бумаги. Звёзды поменялись, и в паре световых лет от них висит ещё один такой же лист, а за ним другие.

Что это? Это память какого-то колоссального организма в далёком будущем. США и СССР на этом листе это воспоминания или догадки о них. Любые подробные воспоминания хранят структуру вспоминаемого и процессы в ней. Упрощённо для этого организма, но достаточно подробно для нас. Когда этот разум помнит США и СССР, в нём в какой-то форме хранятся и существуют США и СССР. Для них самих это особая китайская комната.

На словах эта идея всегда была понятна, но книга Штросса нарисовала для неё живой запоминающийся пример, поэтому у меня этот принцип в голове подписан как “Отставание в ракетах”.

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

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

Гугл сделал страшную вещь, теперь по большинству запросов вылезает ответ ИИ. Нередко он полезный! Но он есть и когда совсем не думаешь о нём, а гуглишь ерунду:

“thumbs up emoji” —
A “thumbs up” is a gesture of approval, agreement, or that something is good. It’s commonly represented by extending the thumb upwards…

“thank you emoji”
The most common emoji to express thanks is the folded hands emoji…

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

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

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

Когда чатбота спрашиваешь явно, в этом хотя бы есть соразмерность. Раз ты спрашиваешь, тебе нужен ответ. Ты ценишь труд бота, пусть и не по цене своего.

В фантастике есть такая тропа (клише) – “Боги и разная нечисть существуют потому, что люди в них верят, и выглядят они так, какими люди их представляют”. Кажется, это называется “коллективное бессознательное”, “эгрегор”, или как-то так.

Забавно, что так и получилось — персонажи нейросетей ощущают себя такими, какими люди их воображали. Чатботы рисуют себя роботом потому, что люди верили, что 1. роботы будут выглядеть так, 2. искусственный интеллект должен ощущать себя роботом.

Сущности

Некоторым программистам ставят задачу:
— Нашему софту нужно рисовать цветочек. Это надо делать во многих местах одинаково. Напиши рисование цветочка.
И программисты приносят:
— Это универсальный класс обработки сущностей. Над сущностями можно определить и выполнять произвольные операции. Реализуешь рисование и делай что тебе нравится.
“Правда, цветочек нарисовать нельзя, особенности архитектуры.”