Аналогично тому, как стрелковый часы много веков остается удобным способом слежения за временем, удачные архитектуры ЭВМ могут оставаться конкурентоспособным на протяжении десятилетий. Эволюционировать может и сама архитектура, обогащая программиста новыми инструментами для написания надежных и быстродействующих приложений.
Пример - архитектура IA-32 (x86, начиная с i386 ) центрального процессора фирмы Intel, которая является ключевой составляющей общей архитектуры ЭВМ. Эта архитектура не была революционной, а сохранила полную совместимость снизу вверх с предыдущей архитектурой IA-16 (x86, заканчивая i286 ), но в нее были добавлены новые инструменты для работы в защищенном режиме, организации многозадачной работы, расширена разрядность операндов и т.д.. Каждое следующее семейство процессоров IA-32 включает новые инструменты, новые команды, но при этом требование к совместимости снизу вверх остается неприкосновенной.
Эта совместимость является определенной жертвой со стороны разработчика, который мог бы, наверное, предложить радикально новую архитектуру, которая имеет массу преимуществ по сравнению с другими, морально устаревшими, но он таким поступком заставил бы пользователей на колоссальные затраты, связанные с адаптацией существующего программного обеспечения, накопленного за многие годы эксплуатации. Это обстоятельство мгновенно нивелирует любые аргументы привлекательности новой архитектуры для большинства потенциальных пользователей. Аккуратней подход как раз заключается в обеспечении эволюционной преемственности новых архитектур.
Существует и другое решение проблемы совместимости программного обеспечения с различными архитектурами ЭВМ - использование языков программирования высокого уровня для написания кросс-платформенных приложений ( переносимых программ ). Под переносимыми программами понимают такие программы, в текстах которых не используются никакие специфические для какой-либо конкретной архитектуры сведения. Язык высокого уровня должна в свою очередь быть стандартизированной. Это дает гарантию того, что однажды написанная, программа может быть использована на разных архитектурах. Ответственность за адаптацию высокоуровневых конструкций языка программирования к особенностям конкретной архитектуры берет на себя компилятор с этого языка для данной конкретной архитектуры.