June 2nd, 2005

moose, transparent

диктатура меньшинств (компьютерное)

Ulrich Drepper: Dictatorship of the Minorities

Дреппер работает в RedHat и знаменит в первую очередь поддержкой и разработкой в последние годы glibc - главной C-библиотеки проекта GNU, использующейся в первую очередь в Линуксе.

В этой заметке он пытается убедить open source-разработчиков не поддерживать странные, редкие или коммерческие OS и архитектуры, а поддерживать, по сути дела, только Линукс, да и то лишь несколько основных компьютерных архитектур, на которых бежит Линукс, а не всех.

По этому поводу разгорелся флейм у него в журнале и на Слэшдоте.

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

Как правильно заметили многие из ответивших ему, поддержка проекта для многих OS/архитектур очень часто помогает обнаружить баги/недостатки дизайна, не столь очевидные в случае, если вести его только на одной/двух платформах. Примеры многочисленны и очевидны. 32-битные/64-битные архитектуры. Платформы, на которых int==long, и на которых они различны. OpenBSD славится параноидальным подходом ко всему, включая, например, защиту адресного пространства, так что обращение по испорченному указателю с большей вероятностью повалит программу (и хорошо). Различия в абстрагировании "железа" и том, как уровни абстракции устроены... и так далее, и тому подобное.

Но есть и другие виды межплатформенных различий, которые, при попытке поддерживать проект на разных платформах, вызывают лишь раздражение, а пользы никакой не приносят. Сюда в первую очередь относятся мелкие и тонкие различия в стандартных библиотеках разного рода. Принципиальное несовершенство архитектуры (та же проблема 8.3 в файловых именах или неразличение регистра в них же). Принципиальная маломощность платформы (16-битные платформы те же). Мелкие несовместимости на уровне OS (скажем, различия в семантике сигналов). Отсутствие библиотеки на одной из платформ, в то время как та же библиотека есть на всех остальных (и переноси теперь её сам или калечь свой проект, пытаясь предоставить возможность обходиться без неё). И многое ещё.

Проблема в том, что Дреппер не делает различия между этими двумя источниками проблем, а точнее, все такие проблемы считает ненужной головной болью. Действительно, если писать только под Линукс, под 1-2 главные архитектуры, то их не будет. Правда, все недостатки, которые проблемы первого рода помогают обнаружить, останутся, и многие из них рано или поздно всплывут. Правда, такое поведение аналогично поведению тех, кто пишет только под Windows, и кого Дреппер считает "pure evil". Но такие противоречия в своём манифесте Дреппера не смущают. "I don't care and I certainly won't change my mind on this."

В общем, и на glibc это проливает некоторый свет. glibc - ужасно написанная и скомпонованная библиотека. Просто с точки зрения того, как устроены исходники, как найти нужную функцию и что-то понять/добавить/изменить, как она строится. Если бы она хотя бы поддерживала десятки платформ (как первоначально рассчитывали), эта сложность и запутанность была бы ещё хоть в какой-то мере оправдана. Но, оказывается, под руководством Дреппера всё свелось к поддержке одного лишь Линукса (и частично Хурда), и то не на всех архитектурах. Жалкое зрелище, и не очень понятно, зачем она тогда нужна. Истинно вам говорю, тот, кто видел и копался в исходниках libc под FreeBSD и под Линуксом - не задумываясь ни на секунду, выберет BSDшную библиотеку.
moose, transparent

мимоходом, портрет

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

Забавные всё-таки бывают люди и людишки.
moose, transparent

в порядке бреда

Вопрос о том, тождественно ли высказывание "Всё фигня, кроме пчёл. И пчёлы тоже фигня." высказыванию "Всё фигня", зависит от того, считать пчёл объектом или предикатом.

Если пчёлы - определённый объект, то в двух утверждениях "Всё фигня, кроме пчёл. И пчёлы тоже фигня" содержится больше информации, чем в утверждении "Всё фигня", потому что в первом случае мы как минимум знаем о существовании во вселенной одного конкретного объекта - пчёл; в то время как утветрждение "всё фигня" верно и в совершенно пустой вселенной, в которой нет ни одного объекта, тривиальным образом.

Если же пчёлы суть предикат, т.е. каждый объект может обладать или не обладать свойством бытия-пчёлами, то пара утверждений с пчёлами формализуется следующим образом: "если X не-пчела, то X фигня" и "если X пчела, то X фигня", и тогда эта пара по сути дела [мне здесь не хватает перевода слова essentially] эквивалентна утверждению "всё фигня".
moose, transparent

несмешно, зато из жизни

— Всё-таки есть что-то глубоко несправедливое... [пауза]

— В чём?

— А?

— В чём несправедливое-то?

— [пауза] А, ну... ну как. Во всём.

Напомнило анекдот про пустые листовки.