Надо иногда выхватывать из памяти куски жизни, жадно их ощупывать, и опускать на хранение в колодец ЖЖ.
Есть лжеюзеры, у которых очень хорошо это получается. А у меня не получается, потому что мне всегда это кажется очень искусственным занятием. Но иногда бывает наитие, импульс, случайное воспоминание - и тогда можно попробовать этим воспользоваться. Перебить искусственность нарочитой импульсивностью выбора.
Когда-то (в совсем другой жизни) у меня было хобби: я обожал решать сложные графические проблемы в ассемблере под x86.
То было время, когда быструю графику под x86 кроме как в ассемблере и невозможно было делать. Время, если считать по главным ориентирам, между Wolfenstein-ом и первым Doom-ом. Кому-то это описание, наверное, ничего не говорит, а кого-то сразу ориентирует.
На тогда же примерно пришёлся расцвет так называемой demo scene. Одни фанаты месяцами работали над сложнейшими трёхмерными алгоритмами и изумительными эффектами, а другие фанаты сотни раз это прокручивали и тащились. Конечно, как и тогда всем было понятно, основная сложность была всё же не в том, чтобы это сделать, а в том, чтобы это сделать быстро. Так, чтобы побежало на стареньком триста-восемьдесят-шестом, или на новеньком 486DX-2.
Я никогда не работал всерьёз над демами, и не пытался присоединиться ни к какой команде. Это казалось мне непозволительно экстравагантной тратой времени: слишком интенсивно, слишком много. Всё-таки это было всего лишь хобби... не более того.
Наверное, зенитом этого хобби следует считать доведенный мной до вполне рабочего состояния движок, полностью соответствовший Вульфенштейновскому по возможностям и скорости работы. Он действительно бежал быстро на моём 386-м. Я безмерно гордился им. Правда, именно тогда же и появился первый Doom ;) Движок мой так никуда и не попал, да я и не стремился никуда его пристроить. Интересно, сохранился ли где-то этот код? Вот бы его отыскать. Ностальгия!
Сейчас я подумаю и, наверное, даже пойму, к чему я всё это начал вспоминать.
Да. Мне нравилось учавствовать в неформальных соревнованиях, которые были тогда популярны. Например: написать самый быстрый алгоритм, к-й рисует прямую линию из одной заданной точки на экране в другую. Естественно, такой алгоритм лежит в основе практически всей остальной графики, поэтому его скорость критична. Счёт шёл не на секунды и не на миллисекунды, а на процессорные такты, т.е. вот просто люди знали, какие инструкции сколько тактов занимали, и стремились общее количество тактов минимизировать. И я тоже знал, правда всегда нетвёрдо, и часто подглядывал (очень характерная деталь, now that I think about it). Мне сейчас трудно в это поверить.
Конечно, далеко не все ухищрения касались именно утилитарно-процессорных штучек типа того, как сэкономить регистр. Сами алгоритмы тоже обрабатывались и перерабатывались. Например, самый очевидный алгоритм рисования прямой использует плавающую точку - слишком медленно! Базисный алгоритм, использующий fixed-point и целочисленные итерации (смылось у меня из памяти его название) все мучили и улучшали, как могли. И я тоже.
Но однажды мы с приятелем решили устроить соревнование между собой (к которому потом присоединились ещё несколько человек) на самый маленький по размеру, в байтах, алгоритм рисования прямой линии.
Конечно, занятие это совершенно бесполезное. Если уж пишешь на ассемблере, насчёт размера кода можно не беспокоиться. Всё равно будет очень маленьким. Из двух основных ограничений: скорость и память - важно здесь только первое.
Но именно непрактичность, анти-практичность этого задания очень мне импонировала. Я получил от него намного больше радости и удовольствия, чем от всех других. В конце концов я написал самую маленькую функцию и победил всех остальных... вторая по размеру после моей функция была длиннее чуть ли не на пять байтов, если я правильно помню (вряд ли). Моя функция использовала совершенно нестандартный алгоритм, к-й я сам придумал и отладил. Все возможные трюки с использованием редких и непопулярных, но коротких по размеру инструкций были мной отысканы и использованы. Я не дошёл до уровня прыжка в середину многобайтной инструкции только потому, что функция была слишком мала и этот приём не оправдывал себя.
Она рисовала прямую очень медленно по сравнению с другими функциями, зато она была короче всех. Эта совершенная анти-практичность конечной цели грела мне душу. Совершенная, но не абсолютная. Конечная цель осмыслена (функция всё же рисует прямую линию, а не случайные точки). Значит, наверное, не так, а по-другому: анти-практичность не конечной цели, а критерия, по которому её воплощение оценивается.
Теперь я знаю, почему всё это вспомнил: именно эта идея анти-практичности. Откуда она? Что она? Как она?
И не она ли грела душу Харди, когда он заявил, что теория чисел никогда не будет иметь никаких практический применений? Бедняга Харди, наверное, переворачивается в гробу всякий раз, когда кто-то цитирует эту фразу и, хихикая, упоминает современную криптографию.
Всё.
Есть лжеюзеры, у которых очень хорошо это получается. А у меня не получается, потому что мне всегда это кажется очень искусственным занятием. Но иногда бывает наитие, импульс, случайное воспоминание - и тогда можно попробовать этим воспользоваться. Перебить искусственность нарочитой импульсивностью выбора.
Когда-то (в совсем другой жизни) у меня было хобби: я обожал решать сложные графические проблемы в ассемблере под x86.
То было время, когда быструю графику под x86 кроме как в ассемблере и невозможно было делать. Время, если считать по главным ориентирам, между Wolfenstein-ом и первым Doom-ом. Кому-то это описание, наверное, ничего не говорит, а кого-то сразу ориентирует.
На тогда же примерно пришёлся расцвет так называемой demo scene. Одни фанаты месяцами работали над сложнейшими трёхмерными алгоритмами и изумительными эффектами, а другие фанаты сотни раз это прокручивали и тащились. Конечно, как и тогда всем было понятно, основная сложность была всё же не в том, чтобы это сделать, а в том, чтобы это сделать быстро. Так, чтобы побежало на стареньком триста-восемьдесят-шестом, или на новеньком 486DX-2.
Я никогда не работал всерьёз над демами, и не пытался присоединиться ни к какой команде. Это казалось мне непозволительно экстравагантной тратой времени: слишком интенсивно, слишком много. Всё-таки это было всего лишь хобби... не более того.
Наверное, зенитом этого хобби следует считать доведенный мной до вполне рабочего состояния движок, полностью соответствовший Вульфенштейновскому по возможностям и скорости работы. Он действительно бежал быстро на моём 386-м. Я безмерно гордился им. Правда, именно тогда же и появился первый Doom ;) Движок мой так никуда и не попал, да я и не стремился никуда его пристроить. Интересно, сохранился ли где-то этот код? Вот бы его отыскать. Ностальгия!
Сейчас я подумаю и, наверное, даже пойму, к чему я всё это начал вспоминать.
Да. Мне нравилось учавствовать в неформальных соревнованиях, которые были тогда популярны. Например: написать самый быстрый алгоритм, к-й рисует прямую линию из одной заданной точки на экране в другую. Естественно, такой алгоритм лежит в основе практически всей остальной графики, поэтому его скорость критична. Счёт шёл не на секунды и не на миллисекунды, а на процессорные такты, т.е. вот просто люди знали, какие инструкции сколько тактов занимали, и стремились общее количество тактов минимизировать. И я тоже знал, правда всегда нетвёрдо, и часто подглядывал (очень характерная деталь, now that I think about it). Мне сейчас трудно в это поверить.
Конечно, далеко не все ухищрения касались именно утилитарно-процессорных штучек типа того, как сэкономить регистр. Сами алгоритмы тоже обрабатывались и перерабатывались. Например, самый очевидный алгоритм рисования прямой использует плавающую точку - слишком медленно! Базисный алгоритм, использующий fixed-point и целочисленные итерации (смылось у меня из памяти его название) все мучили и улучшали, как могли. И я тоже.
Но однажды мы с приятелем решили устроить соревнование между собой (к которому потом присоединились ещё несколько человек) на самый маленький по размеру, в байтах, алгоритм рисования прямой линии.
Конечно, занятие это совершенно бесполезное. Если уж пишешь на ассемблере, насчёт размера кода можно не беспокоиться. Всё равно будет очень маленьким. Из двух основных ограничений: скорость и память - важно здесь только первое.
Но именно непрактичность, анти-практичность этого задания очень мне импонировала. Я получил от него намного больше радости и удовольствия, чем от всех других. В конце концов я написал самую маленькую функцию и победил всех остальных... вторая по размеру после моей функция была длиннее чуть ли не на пять байтов, если я правильно помню (вряд ли). Моя функция использовала совершенно нестандартный алгоритм, к-й я сам придумал и отладил. Все возможные трюки с использованием редких и непопулярных, но коротких по размеру инструкций были мной отысканы и использованы. Я не дошёл до уровня прыжка в середину многобайтной инструкции только потому, что функция была слишком мала и этот приём не оправдывал себя.
Она рисовала прямую очень медленно по сравнению с другими функциями, зато она была короче всех. Эта совершенная анти-практичность конечной цели грела мне душу. Совершенная, но не абсолютная. Конечная цель осмыслена (функция всё же рисует прямую линию, а не случайные точки). Значит, наверное, не так, а по-другому: анти-практичность не конечной цели, а критерия, по которому её воплощение оценивается.
Теперь я знаю, почему всё это вспомнил: именно эта идея анти-практичности. Откуда она? Что она? Как она?
И не она ли грела душу Харди, когда он заявил, что теория чисел никогда не будет иметь никаких практический применений? Бедняга Харди, наверное, переворачивается в гробу всякий раз, когда кто-то цитирует эту фразу и, хихикая, упоминает современную криптографию.
Всё.
Re: AH/AL ãîâîðèòå...
2Ê íà êîä, 1Ê íà äàííûå (èëè òèïà òîãî, ÿ óæ è íå ïîìíþ). è ÿ ïèñàë ïîä ýòó ðàäîñòü äðàéâåð äëÿ òàáëåòêè (tablet, â ñìûñëå. ï¸ñ çíàåò êàê ýòî ïî ðóññêè).
âåñåëî áûëî, äà.
Re: AH/AL ãîâîðèòå...
Date: 2001-12-27 04:48 pm (UTC)Re: AH/AL ãîâîðèòå...
È íå íóæíî, êàê íà 8086, ñèäåòü è ïðèêèäûâàòü, ÷òî åæåëè ìû ñåé÷àñ çàéìåì ax ïîä âîò ýòî, òî ïîòîì ìû íå ñìîæåì çàíÿòü åãî ïîä âîí òî, à äðóãîé ðåãèñòð äëÿ òîé æå öåëè çàäåéñòâîâàòü âîîáùå íèêàê íå ïîëó÷èòñÿ. (ìíå ýòîò ïðîöåññ âñåãäà íàïîìèíàë àíåêäîò ïðî ìóæèêà, êîòîðûé íà ïàðòñîáðàíèè ñèäåë è äóìàë, êàê æå åæèêè åáóòñÿ).
À íà 8080 è z80 - ìèíîâàëà ìåíÿ ÷àøà ñèÿ.