aruslan: (Default)
Иногда создается ощущение, что то, как линкер работает - военная тайна.
И поэтому делают странное и смешное.

Например, в процессе чтения одного ассета (или библиотеки ассетов) - лезут в другой, в третий, обратно в первый, обратно во второй.
До тех пор, пока много секунд загрузки не будут потрачены исключительно на DVD seek.
Про циркулярные зависимости я промолчу. И про тонны копирований внутри - тоже.
Ну и про отсутствие минимального контроля целостности.

А вот линкеры - они обычно умнее. Особенно те, что разрешают связи при загрузке.
Пусть не все, но у нас и задача попроще )
Замечу - эта схема более чем тривиальная.
Её в самом тупом виде реализовать ничуть не сложнее, чем сложную обычную.
Учитывая управление временем жизни и прочее счастье вроде хэш-таблиц - так еще и проще.

Грустно про это рассказывать, на самом деле. Ведь не стриминг бесконечных миров даже.
Вот и дядя Дима на gamedeff рассказывает хоть и уровнем повыше, но всё про то же.

Зачем делать плохо - вот загадка.
Лучше уж не делать совсем - хотя бы устойчивее работать будет, да и дешевле.
aruslan: (Default)
Иногда возникает брутальное желание запретить коммит кода, если в нём нет или мало ассертов.
С одной стороны - учить пользоваться вилкой глупо если код как пюре.
Но ведь становятся же люди веселее, когда берут образ веселого человека?..

[Poll #1109174]
aruslan: (Default)
Иногда создается ощущение, что проблемы диагностики бинарной несовместимости не были решены обычным дайджестом лет сорок назад.
Т.е. не на Microsoft 360, а на вполне себе IBM 360.

В самом тупом случае используют просто номер версии. Слишком хрупко ибо человеки.
Или CRC32 всего текста шейдера или там описания класса. Это чересчур строго.

Более жизнеспособен дайджест бинарной совместимости.
Т.е. хэш того, от чего эта самая бинарная совместимость зависит.

Например для классов - это хэш от layoutа и сигнатур виртуальных функций плюс layoutа полей.
Для шейдеров - описание внешних связей (порядок, типы, имена/семантика).

И всё - при построении ассета, который требует конкретного шейдера, - считаем дайджест шейдера и пишем его прямо в ассет (32 бита например или там MD5).
А в рантайме берем дайджест теперь уже реального шейдера (из рантайма) и сравниваем с дайджестом что в ассете.

Очевидно следующий шаг - вообще побороть несовместимость, но это обычно дорого и через это ненужно.
Поэтому все или делают дайджесты или делают абсолютно быстрый и прозрачный бандлинг.

И вместо невероятных глюков и access violation спокойно говорят - "сорри, бинарная несовместимость".
aruslan: (Default)
Ограничения решают, факт.
И Линус идёт на полный и тотальный пролом!

http://article.gmane.org/gmane.comp.version-control.git/57918

Особенно понравилось
  Quite frankly, even if the choice of C were to do *nothing* but 
  keep the C++ programmers out, that in itself would be a huge 
  reason to use C.

via [livejournal.com profile] sim0nsays


Update: Не забывайте читать камменты дальше по ветке - там Линус отвечает на вопросы и W.B. который "D" получает ответы :)
aruslan: (Default)
Орфографический словарь
 ретироваться, -руюсь, -руется

Словарь трудностей
 РЕТИРОВАТЬСЯ (неправильно ретироваться).

Толково-словообразовательный
 РЕТИРОВАТЬСЯ несов. и сов.
    1. устар. Отступать во время боевых действий.
    2. разг. Уходить, скрываться (обычно с оттенком шутливости).
Русское словесное ударение
 ретироваться, ретируюсь, ретируешься[не ретироваться, ретируюсь, ретируешься]

via gramota.ru


P.S. Встречаемся в центре Красной площади. Форма одежды - удобная ;)
aruslan: (Default)
На всякий синтаксический сахар найдётся синтаксический диабет.
А также синтаксическая изжога и синтаксическая язва.
aruslan: (Default)
Смотрел сегодня зачем-то немножко всякого кода.
Мысль остановилась на втором экране невнятной сети несвязанных между собою условий.
Понял, что волю читать мегапростыни кода я утратил. Особенно ненужного. Бажного.
А чем больше кода - тем скорее он станет ненужным.

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

Не пишите лишний код. Пишите нужный.
aruslan: (Default)
http://www.dtf.ru/articles/read.php?id=42536
Сказано хорошо.
Но то ли еще будет, конечно.

"Третий год правлю, а уже пять заговоров подавил. За что меня так не любят? За то что приказал Макрону покарсить стену своей кровью с разбегу? За то что попросил Птолемея подарить мне его пурпурный плащ вместе с головой? За коня, насравшего в сенате? Дык просто люди шуток не понимают! А я же им акведуки строю, лимес возвожу, даже евреев не громлю... Вот скажи, Херея, за что меня не любят. Прекращай жрать говно, меня это уже не забавляет."
-- Гай Юлий Цезарь Август Германик Калигула (из разговоров во время оргии)
(ц) [livejournal.com profile] satanov

Profile

aruslan: (Default)
aruslan

January 2014

S M T W T F S
   1234
56789 1011
12131415161718
19202122232425
262728293031 

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 25th, 2017 04:46
Powered by Dreamwidth Studios