ассемблерофилия, часть вторая
Sep. 11th, 2023 12:21 pmЯ недавно написал про ощутимое изменение core values после чтения ГЭБ. У него есть много последствий, и оно из них - это проблема выбора направления движения.
Когда мы стоим на позиции редукционизма, то есть ставим своей целью понять как работает система через понимание как работают её части, или даже нижележащая подсистема, то наше направление движение понятно: есть нечто и мы хотим понять её части. Например, столкнувшись с языком программирования нас начинает интересовать как он использует память, как выглядет его кодогенерация, как он решает проблему раскручивания исключений и т.д.; а может быть, мы даже не особо интересуемся его потрошками, но нам очень интересно, какими именно инструкциями он добивается от процессора такой быстрой работы.
Направление простое, потому что имея целое, и разделив его на части, мы не получим существенно больше. Мы можем обнаружить, что процессор умеет больше, чем использует компилятор, но в отношении самого компилятора мы тожно не увеличим сложность. Редукция обладает анти-эмергентным свойством, то есть "набор деталей менее сложен, чем само устройство". Это невероятно привлекательная модель, потому что мы от сложного переходим к простому. В каком-то смысле это аналог дифференцирования. Оно сильно проще интегрирования и мы практически всегда можем его сделать. Несколько монстров-контрпримеров совершенно не мешают работать с большинством других функций без особых проблем.
Редукция сужает поле для исследования и понимания. Достаточно целенаправленная редукция (с фильтрацией точно не существенных подсистем) позволяет добраться до ответа очень быстро. Именно так работает отладка: открываешь код и ищешь где именно сломано. Поломка вероятнее всего будет либо локальная (простой вариант), либо результат взаимодействия нескольких подсистем (трудный случай).
А теперь мы отказываемся от редукционизма, как метода понимать систему. И куда тогда? Окей, холизм, холизм. Холизм чего? Системы? Но если мы остаёмся на одном уровне системы, то мы получаем очень скудную информацию: знание о том, как устроена система.
В редукционизме мы понимаем как устроена нижележащая система, то есть мы можем применить это знание к множеству других систем, построенных на том же принципе (один из аргументов ассемблерофилии - я знаю как они все работают, потому что все они используют ассемблер).
Так что в холизме мы вынужены искать движение вверх, то есть искать метасистему из которой мы можем рассматривать изучаемую систему как частный случай. Если мы это не делаем, то мы теряем мультипликативный эффект знаний.
И куда и как мы двигаемся тогда? Вместо очевидного направления редукционизма мы получаем несчётное множество метасистем, в которой наша система является частным случаем. Как мы можем понять, какая из метасистем наиболее интересна? Более того, где эта метасистема? Что изучать-то? Мы же не придумываем, мы изучаем. У нас есть необходимость в изучении метасистемы, но она не описана, у нас нет документации или даже "кусков кода" для изучения.
Мы можем сами сконструировать метасистему и изучать её - но мы не знаем как её сконструировать, мы не знаем как её изучать и мы не знаем, та ли эта метасистема, или нет.
Так что холизм, при всей своей привлекательности, не обладает конструктивностью процесса изучения. Наш разумный предел, это изучение самой системы, без метасистемы. Мы можем попытаться расшириться до метасистемы после изучения всех систем в метасистеме, но это очень медленный и трудный процесс. Не напоминает ли он интегрирование? Такое же безнадёжное и работающее только для каких-то отдельных случаев?
Поменяв редукционизм на холизм мы получаем практическую проблему обучения или исследования. Здорово, когда кто-то для нас уже нашёл и создал метасистему, в которой мы можем изучать нашу систему с мультипликативным эффектом. Но чаще всего это не так, и мы получаем выбор между узким (но эмергентным) знанием, или широким, но антиэмергентным.
Вот где-то тут я и ощущаю чувство невозвратной потери от ранее абсолютно положительного жизненного тезиса.
Когда мы стоим на позиции редукционизма, то есть ставим своей целью понять как работает система через понимание как работают её части, или даже нижележащая подсистема, то наше направление движение понятно: есть нечто и мы хотим понять её части. Например, столкнувшись с языком программирования нас начинает интересовать как он использует память, как выглядет его кодогенерация, как он решает проблему раскручивания исключений и т.д.; а может быть, мы даже не особо интересуемся его потрошками, но нам очень интересно, какими именно инструкциями он добивается от процессора такой быстрой работы.
Направление простое, потому что имея целое, и разделив его на части, мы не получим существенно больше. Мы можем обнаружить, что процессор умеет больше, чем использует компилятор, но в отношении самого компилятора мы тожно не увеличим сложность. Редукция обладает анти-эмергентным свойством, то есть "набор деталей менее сложен, чем само устройство". Это невероятно привлекательная модель, потому что мы от сложного переходим к простому. В каком-то смысле это аналог дифференцирования. Оно сильно проще интегрирования и мы практически всегда можем его сделать. Несколько монстров-контрпримеров совершенно не мешают работать с большинством других функций без особых проблем.
Редукция сужает поле для исследования и понимания. Достаточно целенаправленная редукция (с фильтрацией точно не существенных подсистем) позволяет добраться до ответа очень быстро. Именно так работает отладка: открываешь код и ищешь где именно сломано. Поломка вероятнее всего будет либо локальная (простой вариант), либо результат взаимодействия нескольких подсистем (трудный случай).
А теперь мы отказываемся от редукционизма, как метода понимать систему. И куда тогда? Окей, холизм, холизм. Холизм чего? Системы? Но если мы остаёмся на одном уровне системы, то мы получаем очень скудную информацию: знание о том, как устроена система.
В редукционизме мы понимаем как устроена нижележащая система, то есть мы можем применить это знание к множеству других систем, построенных на том же принципе (один из аргументов ассемблерофилии - я знаю как они все работают, потому что все они используют ассемблер).
Так что в холизме мы вынужены искать движение вверх, то есть искать метасистему из которой мы можем рассматривать изучаемую систему как частный случай. Если мы это не делаем, то мы теряем мультипликативный эффект знаний.
И куда и как мы двигаемся тогда? Вместо очевидного направления редукционизма мы получаем несчётное множество метасистем, в которой наша система является частным случаем. Как мы можем понять, какая из метасистем наиболее интересна? Более того, где эта метасистема? Что изучать-то? Мы же не придумываем, мы изучаем. У нас есть необходимость в изучении метасистемы, но она не описана, у нас нет документации или даже "кусков кода" для изучения.
Мы можем сами сконструировать метасистему и изучать её - но мы не знаем как её сконструировать, мы не знаем как её изучать и мы не знаем, та ли эта метасистема, или нет.
Так что холизм, при всей своей привлекательности, не обладает конструктивностью процесса изучения. Наш разумный предел, это изучение самой системы, без метасистемы. Мы можем попытаться расшириться до метасистемы после изучения всех систем в метасистеме, но это очень медленный и трудный процесс. Не напоминает ли он интегрирование? Такое же безнадёжное и работающее только для каких-то отдельных случаев?
Поменяв редукционизм на холизм мы получаем практическую проблему обучения или исследования. Здорово, когда кто-то для нас уже нашёл и создал метасистему, в которой мы можем изучать нашу систему с мультипликативным эффектом. Но чаще всего это не так, и мы получаем выбор между узким (но эмергентным) знанием, или широким, но антиэмергентным.
Вот где-то тут я и ощущаю чувство невозвратной потери от ранее абсолютно положительного жизненного тезиса.