Минимальные требования
Заключительный вопрос. Верно ли утверждение: чем мощнее компьютер, тем быстрее на нем можно решить данную задачу?
Заключительный ответ. Нет, это не верно.
Всем нам знакома эта пирамида памяти:
этот закон Мура:
о котором стоит говорить, не забывая про закон Амдала:
Производительность вычислительной системы, состоящей из связанных
между собой устройств, в общем случае определяется самым
непроизводительным её устройством.
Все вышесказанное я привел к тому чтобы показать какими аппаратными возможностями обладает любой современные прикладной программист, разрабатывающий коммерческий, пользовательский софт. И опять обратиться к теме, в которой старшее ИТ-поколение с ностальгией говорит о программах, работающих на 16 Кб памяти. Или же еще более искушенная часть низкоуровневых программистов, которые действительно делают "красивые, алгоритмичные" программы.
Но и это не главная мысль поста о которой мне недавно подумалось. Моя мысль — чем ниже минимальные требования к системе, тем качественнее она будет сделана и как следствие лучше работать. Да, пожалуй это очевидно в одних случаях, и не очевидно в других, но тем не менее. Половина косяков и багов современных систем, возникает из-за а) снизившейся квалификации среднего программиста (средний программист = кодер) и б) а может и а) =) обширных, доступных ресурсов. И ресурсы в данном случае это не только мощные пользовательские машины, но и богатые современные IDE, RADы и прочие dev. tools. Программирование как деятельность упростилось, кадровый дефицит привел к снижению "порога" входа в софтверную деятельность (я имею ввиду профильность и уровень образования, а также опыт работы).
Количество строк кода и реализация алгоритмов стало неважно из-за быстроты процессоров и транзакций в СУБД. Все это привело к неоптимальности работы алгоритмов и как следствие — снижению качества работы программы. Ведь, на мой взгляд, из 2х одинаковых программ, лучше работать будет та, для которой минимальные требования конфигурации аппаратных и системных средств значительно ниже. Одно дело накодить, имея в запасе пару гигов оперативы, а другое дело для 16 Кб.
В чем соль? Заказывать и принимать систему надо заведомо на более заниженных аппаратных и системных требованиях. Не 3 Гига, а 1, не выделенка, а диалап, не двухядерных, а хотя бы 3ий или средний атлончик AMD. Чем агрессивнее среда, тем качественее программа. Тем лучше алгоритм, тем выше надежность, тем сложнее процесс тестирования и дольше этап проектирования.
В каком то плане, вы как заказчик системы должны крутиться в треугольнике:
Кол-во багов и ошибок (качество) — Возможности АС и ПС (ресурсы) — Стоимость ПО (деньги + время).
А расставить приоритеты — дело каждого.