sb, хакеры ZX Spectrum, нас, новичков, учили просчитывать каждую команду по тактам процессора и использовать оптимальные алгоритмы.
Между платформами ZX Spectrum и Amiga было негласное соревнование:
Как-то амижники выдали попиксельный диагональный скроллинг, по-дружески подколов спектрумистов: "А вам слабО?". Спектрумисты выдали код и показали: "нет, нам на наших 3.5 MHz без турбо и без 10 MHz не слабО".
Некоторые из подходов по оптимизации быстродействия программ:
Время выполнения недокументированных команд процессора Z80Viator: вывод изображеия за одно прерываниеЗдесь важна не архитектура или код, здесь важна идея.
Всё это можно отнести к огромной теме совершенный код.
Но проблема в том, что
Может они как-нибудь сами начнут?
Увы, нет. Сейчас время другое, информационное поле другое, доступно железо, которые в разы и десятки и сотни раз мощнее того, что было во времена качественного кода. Так кто будет напрягаться ? Всем нужны деньги, а качественный код это теперь для гиков.
"попадем в цикл, что совсем не нужно"
Где-то на просторах форума лежит мой шелл-скрипт.
В контексте фразы, этот скрипт хороший пример как делать не нужно.
Секрет прост: Циклы по тактам процессора занимают много времени.
Как был написан mplayer-vc?
Целью ставилось, максимальное упрощение использования видео в консоли, - делай проще.
Почему про mplayer-vc? Потому что ситуация с которой пришлось столкнуться, на редкость нетипичная.
И потому что здесь применена своеобразная и в чём-то похожая на защиту от дурака.
Термин этот на платформе ZX не носит оскорбительной окраски. Он предусматривает прогнозирование непредсказуемых действий пользователя.
Сначала был написан алгоритм для обработки на обычных и вайдскрин мониторах.
Написан шелл-код. Исправлена нефатальная, но достаточно серьёзная ошибка.
На этом можно было бы и закончить. Но опыт на платформе ZX подсказывал: любая хорошая программа содержит как минимум одну серьёзную ошибку.
Так оно и случилось:
На одном из многочисленных роликов последовал отказ вывода.
Релиз был в срочном порядке остановлен и заблокирован.
Собственно ошибка была не в самом скрипте:
Если размер изображения хотя бы на один пиксел не поместися во фреймбуфер, последует отказ вывода. Осложняется это тем, что mediainfo неверно обсчитывает пропорции и для например пропорции 4x3 выводит целочисленное значение, что при выводе через fbdev2 совершенно неприемлемо: этот редкий ролик был неверно закодирован и на несколько пикселов вылазил за пределы фреймбуфера. Отказ вывода здесь предсказуем.
Для блока был переписан заново алгоритм и соотвественно код.
И только после этого пакет стал релизом.
Стоило ли это делать, если такой ролик один на миллион? На мой взгляд оно стоило того: программы создаются для пользователя, а не наоборот.
Но возвращаясь к теме совершенный код, - нет предела совершенству, нет предела совершенному коду. Но это требует много времени и усилий. Только на отслеживание двух багов ушло больше недели часов по 16-18 ежедневно.