LINUX.ORG.RU
ФорумTalks

Unixway vs bloatware

 , , ,


0

2

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

В пространстве bloatware в почёте традиционные ценности: программы живут семьями. Будучи «подпиленными» друг под друга, они стягиваются в скопления и целые галактики ценой отдаления от остальных программ. Тут всё понятно. Вопрос вот в чём: откуда уверенность, что использование пространства unixway априори эффективнее?

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

В принципе, Линукс юзабелен благодаря уходу из unixway в bloatware: systemd, btrfs, само ядро Linux, все эти DE. По-моему, чтобы иметь какое-то будущее, Линуксу нужно деформировать пространство ПО и постягивать программы в bloatware-кластеры в самых используемых областях. Недостаточно делать отдельные дистрибутивы под какую-то область задач, нужно вонзать скальпель глубже.

Deleted

Ответ на: комментарий от beastie

RLY? А мужики то и не знают. Отсыпь.

Чего мужики не знают? Как пользоваться letoh?

Специально дял таких мужиков выдержка из man endian:

       #include <endian.h>

       uint16_t htobe16(uint16_t host_16bits);
       uint16_t htole16(uint16_t host_16bits);
       uint16_t be16toh(uint16_t big_endian_16bits);
       uint16_t le16toh(uint16_t little_endian_16bits);

       uint32_t htobe32(uint32_t host_32bits);
       uint32_t htole32(uint32_t host_32bits);
       uint32_t be32toh(uint32_t big_endian_32bits);
       uint32_t le32toh(uint32_t little_endian_32bits);

       uint64_t htobe64(uint64_t host_64bits);
       uint64_t htole64(uint64_t host_64bits);
       uint64_t be64toh(uint64_t big_endian_64bits);
       uint64_t le64toh(uint64_t little_endian_64bits);
kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от kirk_johnson

int16 [..] универсален. Он всегда 16 бит. [..] на дисках лежит в little-endian

Загляни как-нибудь в любую git-repo у себя на диске (на своей little endian машине) и удивись, что инты там хранятся в bit endian (network byte order) формате. :D

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от kirk_johnson

Это важно когда ты переносишь данные.
В одном случае у тебя просто ascii файл, который читабелен везде.
В другом случае blob с непонятным форматом.

На лицо выгода первого случая. Даже если для этого его надо парсить.
Во втором случае тоже надо парсить, если endianness не сошёлся. Плюс ограничения на размер int. BigInt ты так просто уже не сохранишь, а в ascii — легко.

dixi

beastie ★★★★★
()
Ответ на: комментарий от beastie

Это важно когда ты переносишь данные.

Это _НЕ_ важно, когда ты переносишь данные. Потому что все делают htobe при записи и betoh при чтении.

Плюс ограничения на размер int

Да, вот это вполне себе аргумент за ASCII. Но endianess тут вообще не при чем.

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

Это _НЕ_ важно, когда ты переносишь данные.

Твой rsync/scp/ftp/ntfs/whatever уже научились конвертировать случайные данные on-the-fly?

beastie ★★★★★
()
Ответ на: комментарий от beastie

И шо, шо TCP? Там всё оговорено. В шапке. А вот к данным это не относится.

Умничка. А теперь экстраполируй ту же логику на rsync :)

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

А вот ты не умничка. rsync передаёт данные as is. Т.к. даже знать не может, что по смещнию xyz в файле abc у нас int64 в le, а по смещению uvw int16 в be.

beastie ★★★★★
()
Ответ на: комментарий от beastie

А вот ты не умничка. rsync передаёт данные as is. Т.к. даже знать не может, что по смещнию xyz в файле abc у нас int64 в le, а по смещению uvw int16 в be.

Ага :) И почему это внезапно стало проблемой?

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

Это не у меня проблема. Это ты мне тут втираешь, что rsync что-то там конвертирует. ;) Причепил tcp ко всему этому. И вообще по ходу не в теме, о чём втираешь. :D

Я говорю только о том, что ascii — универсальный форат представления данных, который не зависит ни от размера int/float/etc., ни от endianness. Который можно хранить/передавать, не заботясь обо всё этом.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от beastie

Это не у меня проблема. Это ты мне тут втираешь, что rsync что-то там конвертирует. ;) Причепил tcp ко всему этому. И вообще по ходу не в теме, о чём втираешь. :D

Наоборот, я втираю, что rsync (как и TCP/IP) данные не конвертирует. Потому что это не нужно, ибо все вменяемые софтины сами знают, в каком формате (и в каком endianess) хранятся их данные. Ты же мне второй день лечишь какую-то дичь в духе

А от куда файл знает что он оказался на другой FS, с другим endianness и что он содержит в себе не int16, а int128?

Диске? А как ты будешь переносить на комп с другой endianness?

и

Твой rsync/scp/ftp/ntfs/whatever уже научились конвертировать случайные данные on-the-fly?

Давай ты уже проспишься и перестанешь пороть чушь? :)

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от kirk_johnson

софтины сами знают, в каком формате (и в каком endianess) хранятся их данные

Это очень наивное предположение. И как мы знаем «assumption is the mother of all f*ckups».

Для того, что бы оно было верным, программа должна быть написана с заделом на портабельность. Что в современном мире скорее исключение из правил.

beastie ★★★★★
()
Ответ на: комментарий от beastie

Для того, что бы оно было верным, программа должна быть написана с заделом на портабельность. Что в современном мире скорее исключение из правил.

Уф... Архиваторы (git, tar, zip). Все ядерные метаданные (mdadm, lvm). Базы данных (bdb, postgres, sqlite). Библиотеки для работы с медиа (libpng, libjpeg, ffmpeg). Прекращай позориться.

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

Все эти програмы были написаны, когда большая половина ЛОРа ещё под стол пешком ходила. ;)

Котрпример: rrdcache — даже перенос с 32 bit на 64 bit — головная боль. (Делается через экспорт в xml.)

beastie ★★★★★
()
Ответ на: комментарий от necromant

Классический unixway - это открытая система, которая легко расширяется.

Ценой всего остального.

Deleted
()

В принципе, Линукс юзабелен благодаря уходу из unixway в bloatware

Нифига. Наоборот - он всё меньше и меньше готов для десктопа из-за этого.

Quasar ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.