Дмитрий Радищев (dibr) wrote,
Дмитрий Радищев
dibr

universe haters handbook

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

Взять, например, юникс (точнее, современный зоопарк unix-like OS). Придуман юникс был чёрт-те когда, и когда его придумывали, он казался вполне строгим и логичным. Костыли появились почти сразу - если кто из интересующихся не читал "Unix Haters Handbook", советую почитать; для меня наиболее каноничным примером того, как сначала сделали красиво, а потом, когда понадобилось чтобы оно ещё и работало, приделали систему костылей, убивающую всю изначальную "красоту" жестоким, долгим и мучительным образом, является сетевая файловая система NFS. Ну, и хотя книжка - 1994 года, а заметная часть описанных в ней проблем относятся вообще к доисторическим временам, и большая часть проблем давно исправлена (а использованные при этом костыли выстроены так, что издали их система даже кажется стройной), проблем актуальных и сейчас (ввиду того, что они оказались "встроены" в идеологию, и тут "проще сломать и заново") внезапно не так уж мало.

Вот свеженькое, из вчерашнего ru_root. В юниксе есть команда dd, испокон веков используемая для копирования (файлов или файлоподобных объектов) в тех случаях, когда нужно явно указать размер копируемых данных, или произвести какие-то простейшие преобразования (типа "отступить n байт", "выровнять по границе 1к блока"). Команда, казалось бы, простейшая - задаётся "откуда", "куда" и "сколько", она копирует сколько попросили, если не может (и не задан параметр noerror) - выдаёт ошибку, примеров всяких там "dd if=file1 of=file2 bs=1k count=100" навалом в каждой первой методичке. Ну вот что тут, в принципе, может пойти не так?!
Может. В частности, буквально вот этот пример, причём в тех случаях, когда этого совсем не ожидаешь, способен молча (и оставаясь в рамках строгой логичности исходной системы) скопировать не всё. А чтобы он скопировал всё, нужен особый ключик, по умолчанию выключенный. Но не везде (не во всех дистрибутивах) и не всегда (может сыграть, например, загрузка процессора), поэтому можно написать скрипт, отладить его, раздать на 10000 компьютеров, его запустят 1000000 раз и всё будет нормально, а на 1000001 раз он грохнет какие-нибудь данные, потому что ну вот так вот, надо же знать нюансы, сами понимаете.

Разумеется, в других ОС ситуация не сильно лучше, сами знаете - хотя этих "идеологически стройных ОС" было немеряное количество (где например сейчас OS/2? А ведь в русско-фидошной среде на неё когда-то разве что не молились).

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

Есть такой анекдот.
Умер Эйнштейн. Попал в рай, как полагается. Бог, в знак уважения к земным заслугам, предложил выполнить любое - в пределах доступного в рамках рая - желание. На что Эйнштейн сказал, что, в-общем, в раю его всё и так устраивает, но - ведь наш мир описывается какими-то законами, так вот - нельзя ли на эти законы взглянуть? Бог засомневался, но провёл Эйнштейна в комнату, в которой висела доска, исчерканная формулами. Эйнштейн пару минут разглядывал формулы, после чего воскликнул:
     - Так у вас же вот тут ошибка!
     - Да я уже знаю... - ответил Бог.

Я вот и думаю. Может, физики со своими проблемами создания "единой теории всего" и несовместимостью КМ и [О]ТО, впёрлись именно в это? И что Создатель изначально предполагал создать нашу вселенную по красивым, логически строгим и непротиворечивым законам, но когда вселенную запустили, а кварки уже послипались в протоны с нейтронами, выяснилось что что-то идёт не так как хотелось бы (скажем, жизнь не зарождается, или зарождается, но какая-нибудь неправильная), и пришлось, как обычно, подпирать подпорками и приматывать скотчем - так, на обычных масштабах почти незаметно, но если закопаться достаточно глубоко - места склейки заметны.

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

Также интересно, как там дела у DZ Phantom OS. Она ведь, насколько я помню, довольно революционна, внутренне логична и непротиворечива, всё как мы любим - при этом те места, которыми она будет вынуждена соприкасаться с нашей грязной реальностью и подстраиваться под неё, довольно очевидны...
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 21 comments