Тяжкий груз легаси

Jan 17, 2025 17:37

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

Read more... )

минутка юмора

Leave a comment

rbs_vader January 17 2025, 18:51:51 UTC

Бгг, это к x86 относится в полной мере.

Reply

d0ctor_z January 17 2025, 19:13:10 UTC
Ага. Собственно, второе дно (которое в третьем требовании) как раз про то, что рукотворное легаси такого рода тоже встречается. Еще можно раскладку qwerty и ее историю вспомнить. Technological lock-in и барьеры переключения...

Reply

rbs_vader January 17 2025, 19:57:05 UTC

А кто эрраты читал на современные процессоры, тот не то, что в цирке - даже в армии не смеется.

Reply

d0ctor_z January 17 2025, 20:12:43 UTC
Тут еще один любопытный момент. Пока человечество само не научилось конструировать такие сложные системы, причем в течение длительного времени, чтобы пресловутые костыли накопились, было непонятно, что это (легаси) вообще такое. Когда строение живых организмов только начали изучать - вау, как все непонятно и сложно, человек такого не может! Природа крута и, может быть, даже мудра и совершенна! А потом - ну да, понятно, при неуправляемой разработке какая-то такая дичь и должна была получиться, технический долг в почти четыре миллиарда лет... И рефакторить проблематично, потому что чуть тронь, и все ломается.

Reply

rbs_vader January 17 2025, 20:31:26 UTC
Вот именно поэтому техноэволюционистика пока не взлетает.

Reply

rdia January 19 2025, 00:56:01 UTC
Как нас учит работа с legacy кодом - нужно отрезать хвост кошке по частям. То есть, менять обозримого размера подсистемы по-отдельности.

Но надо сказать, что мы ещё не доросли до таких сложных систем, ведь человек саморазворачивается довольно хитрым образом.

Reply

d0ctor_z January 19 2025, 09:03:52 UTC
В проекте, над которым я работаю, я то хвост по частям отрезаю, то пришиваю новые клешни, выдвижные челюсти и щупальца :-) Пользователям, впрочем, судя по отзывам, нравится. И это мелкий монстрик, я годами над ним один работал (а легаси - от моего бывшего начальника).

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

Reply

rdia January 19 2025, 17:27:21 UTC
Я просто намекал на известную книжку Working Effectively with Legacy Code, где рассказывается, как обновлять большие legacy системы, написанные на ООП/однофазных императивных языках (без препроцессора). Это хорошо проработанные протоколы, когда кусок изолируется, пишутся тесты, потом переписывается. В общем, все более-менее интуитивно знают.

А вот ситуации, когда мы работаем с самомодифицирующимся кодом, хотя бы в стиле макросов, непроработаны вообще. В журнале Практика функционального программирования была классификация изменяемых данных по степени проблемности, вкратце

неизменяемые, инициализируемые (однократное изменение), локально многократно изменяемые и т.д ( ... )

Reply

d0ctor_z January 20 2025, 18:07:03 UTC
Изменяемость, ох... Вспоминаю свое знакомство с древним кодом одного проекта на C#, откуда мне нужно было вытащить какие-то алгоритмы (обсчета массива данных, точнее не вспомню). Вот класс, который писали математики. Все логично, метод принимает параметры расчета и выдает массив. А вот другой класс. Гигантский исходник, тысячи строк кода и метод без параметров, ничего не возвращающий: void calculate(), что-то типа такого. И параметры он читает из полей класса, и результат куда-то туда пишет...

Reply

rdia January 20 2025, 21:27:01 UTC
> А вот другой класс. Гигантский исходник, тысячи строк кода и метод без параметров, ничего не возвращающий: void calculate(), что-то типа такого.

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

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

Reply

d0ctor_z January 21 2025, 08:06:54 UTC
Кромсать такое можно, да - нормальные функции получения массивов я написал (старый код не трогал, конечно). Самомодификация очень сложна. Даже сериализация и рефлексия в C# (которые до собственно самомодификации кода не доходят) способны попить немало крови, особенно когда ими, скажем так, несколько злоупотребляют.

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

Reply

d0ctor_z January 23 2025, 18:02:57 UTC
И, возможно, не взлетит. Эволюционные алгоритмы, что естественные, что искусственные, "любят" скатываться в локальные экстремумы и застревать там.

Reply

cosmicstarcat January 18 2025, 10:29:34 UTC
Вроде мтроения глаза у млекопитающих. Из за того что глаза сформировались у хордовых фильтраторов которым глаза были нужны что бы заметить хищника то они наловчились смотреть сквозь свой мозг. Так этот фиче баг, до сих пор сохранился. Свет проходит сквозь нервы, попадаетна сетчатку, и уже она посылает сигнал на прозрачные нервы, у которых из за этого проводимость упала

У тех же молюсков глаза гораздо более "разумно" устроены. Сначала сетчатка, потом нервы.

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

Reply

d0ctor_z January 19 2025, 09:17:57 UTC
Так пост и навеян известным пассажем из "Лезвия бритвы". В оригинале Гельмгольц вроде бы писал: "Если бы оптическая мастерская прислала мне такой прибор, я бы вернул его для переделки". Конечно, профессору XIX века положено выражаться сдержанно, но мы-то понимаем :-)

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

Reply

cosmicstarcat January 17 2025, 22:47:11 UTC
Современные процессоры уже как лет 40 людьми не проектируются. Аглоритмы автоматизации для создания схем процессоров еще в 80х создали.

Reply

rbs_vader January 18 2025, 09:45:17 UTC

Ну да, а напроектируют такого, что 300 страниц эрраты не предел. И это ведь старая добрая автоматика, я представляю, чего они там с применением ИИ нарисуют.

Reply


Leave a comment

Up