Закон Верта по-прежнему остается верным?

Отступ, сделанный Никлаус Вирт в 1995 году:

"Программное обеспечение становится медленнее, чем аппаратное ускорение"

  • Как вы думаете, это правда?
  • Как вы должны измерять "скорость" программного обеспечения? По циклы процессоров или, скорее, по времени вам нужно выполнить некоторую задачу?
  • Что касается программного обеспечения, которое на самом деле становится быстрее и компактнее (измеряется циклами ЦП и МБ ОЗУ) и более восприимчиво к новым версиям, таким как Firefox 3.0 по сравнению с 2.0, Linux 2.6 по сравнению с 2,4, Ruby 1.9 по сравнению с 1,8. Или совершенно новое программное обеспечение, которое на порядок быстрее, чем старые вещи (например, Google V8 Engine)? Разве это не отрицает этот закон?

Ответ 1

Да, я думаю, это правда.

Как измерить скорость программного обеспечения? Хорошее время для решения задач - это соответствующий показатель. Для меня как пользователя программного обеспечения мне все равно, есть ли в моей машине 2 или 16 ядер. Я хочу, чтобы моя ОС быстро загружалась, мои программы запускались быстро, и я абсолютно не хочу ждать таких простых вещей, как открытие файлов. Программное обеспечение должно просто чувствовать себя быстро. Поэтому при загрузке Windows Vista нет быстрого программного обеспечения, которое я наблюдаю.

Программное обеспечение /Framework часто улучшают их производительность. Это здорово, но это в основном незначительные изменения. Исключением является правило:)

По-моему, это все о чувствах. И похоже, что компьютеры были быстрее лет назад. Конечно, я не мог запускать текущие игры и программное обеспечение на этих старых машинах. Но они были быстрее:)

Ответ 2

Это не то, что программное обеспечение становится медленнее, тем самым увеличивается его сложность.

Теперь мы строим на многих уровнях абстракции.
Когда в последний раз люди на SO закодированы на ассемблере?
Большинство никогда не бывает и никогда не будет.

Ответ 3

В общем, закон верен. Как вы заявили, есть исключения, "которые доказывают правило". Мой брат недавно установил Win3.1 на свой 2 ГГц + ПК, и он загружается в мгновение ока.

Я думаю, есть много причин, по которым закон имеет право:

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

Я обнаружил, что FF не имеет немедленного диалога всплеска, раздражающего, так как требуется некоторое время, чтобы основное окно появилось после запуска приложения, и я не уверен, что щелчок "работал". OO также страдает от этого.

В Интернете есть несколько статей об изменении восприятия скорости программного обеспечения без изменения фактической скорости.

EDIT:

В дополнение к вышеприведенным пунктам пример низкой важности, придаваемой эффективности, - это сайт, а точнее, большинство других сайтов Q & A. Этот сайт всегда был разработан, чтобы быть быстрым и отзывчивым, и это показывает. Сравните это с другими сайтами - я нашел сайты на основе phpBB гибкими, но медленными. Google - еще один пример того, насколько высокая скорость имеет значение (он даже говорит вам, сколько времени прошло поиск) - сравните с другими поисковыми системами, которые были вокруг, когда google начал (теперь, они все быстро благодаря google).

Требуется много усилий, навыков и опыта, чтобы сделать быстрый код, который я обнаружил у многих программистов.

Ответ 4

Это неправильно. Правильно

Программное обеспечение становится медленнее с той же скоростью, поскольку аппаратное ускорение становится быстрее.

Причина в том, что это в основном определяется человеческим терпением, которое остается неизменным. Также пренебрегают упоминанием о том, что программное обеспечение сегодня работает более 30 лет назад, даже если мы игнорируем глазные конфеты.

Ответ 5

Одна из проблем медленного программного обеспечения - результат большинства разработчиков, использующих высокопроизводительные машины с многоядерными процессорами и нагрузками ОЗУ в качестве основной рабочей станции. В результате они не замечают проблем с производительностью.

Часть их ежедневной активности должна запускать свой код на более медленном более общем оборудовании, которое будут использовать ожидаемые клиенты. Это продемонстрирует реальную производительность в мире и позволит им сосредоточиться на улучшении узких мест. Или даже работа в VM с ограниченными ресурсами может помочь в этом обзоре.

Более быстрое аппаратное обеспечение не должно служить оправданием для создания медленного неаккуратного кода, однако это так.

Ответ 6

Из моего собственного опыта я должен не соглашаться с законом Вирта.

Когда я впервые подошел к компьютеру (в 80-х), время для отображения небольшого неподвижного изображения было заметно. Сегодня мой компьютер может декодировать и отображать видеоролики AVCHD в формате 1080p в реальном времени.

Другим показателем является количество кадров в секунду видеоигр. Совсем недавно он составлял около 15 кадров в секунду. Сегодня от 30 до 60 кадров в секунду не редкость.

Ответ 7

Цитата из исследования UX:

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

Подробное сравнение UX на марочном Mac и современном двойном ядре: http://hubpages.com/hub/_86_Mac_Plus_Vs_07_AMD_DualCore_You_Wont_Believe_Who_Wins

Ответ 8

Моя машина становится медленнее и clunkier каждый день. Я приписываю большую часть замедления запуску антивируса. Когда я хочу ускориться, я обнаружил, что отключение антивируса творит чудеса, хотя я опасаюсь, как быть в застенчивом борделе.

Ответ 9

Я думаю, что закон Вирта был в значительной степени обусловлен законом Мура - если ваш код работал медленно, вы просто проигнорируете его, так как достаточно скоро он будет работать достаточно быстро. Производительность не имела значения.

Теперь, когда закон Мура изменил направление (больше ядер, а не более быстрых процессоров), компьютеры фактически не ускоряются, поэтому я ожидаю, что производительность станет более важным фактором в разработке программного обеспечения (пока действительно хорошее параллельное программирование во всяком случае, парадигма попадает в мейнстрим). Там есть предел тому, насколько медленным может быть программное обеспечение, пока оно еще полезно, знаете.

Ответ 10

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

Давайте возьмем в качестве примера: Powerpoint. Если бы я создал слайд-шоу с Powerpoint с начала девяностых, у меня может быть слайд-шоу с красивыми цветами довольно легко, приятный текст и т.д. Теперь его слайд-шоу с движущейся графикой, причудливыми переходами, приятными образами.

Дело в том, что, да, программное обеспечение работает медленнее, но оно делает больше.

То же самое относится к людям, которые используют программное обеспечение. еще в 70-х годах, чтобы создать презентацию, вам нужно было создать свои собственные прозрачные пленки, возможно, даже используя ручку:-). Теперь, если вы сделали то же самое, вы бы посмеялись из комнаты. Это занимает одно и то же время, но качество выше.

Это (на мой взгляд), почему компьютеры не дают вам прироста производительности, потому что вы тратите столько же времени на выполнение задания. Но если вы используете сегодняшнее программное обеспечение, ваши результаты выглядят более профессионально, вы получаете качество работы.

Ответ 11

Skizz и Dazmogan имеют это право.

  • С одной стороны, когда программисты пытаются сделать свое программное обеспечение максимально возможным, они преуспевают, и это ослепительно быстро.

  • С другой стороны, когда они этого не делают, что в большинстве случаев, их интерес к "Галопирующей общности" использует каждый доступный цикл, а затем некоторые.

Я очень много настраиваю. (Мой метод выбора - случайный останов). Почти в каждом случае причиной медленности является чрезмерный дизайн класса и структуры данных.

Как ни странно, причиной, обычно заданной для чрезмерно управляемой событиями и избыточной структуры данных, является "эффективность".

Как говорит Bompuis, мы строим много слоев абстракции. Это точно проблема.

Ответ 12

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

Люди, работающие с ядром, знают о разных архитектурах процессора, многоядерных проблемах, кеш-строках и т.д. Существует интересная дискуссия о включении поддержки счетчиков аппаратных производительности в ядре mainline. Это интересно с политической точки зрения, поскольку существует конфликт между людьми ядра и людьми, имеющими большой опыт мониторинга производительности.

Люди, развивающие Firefox, понимают, что браузер должен быть "легким" и быстрым, чтобы быть популярным. И в некоторой степени им удаётся сделать хорошую работу.

Предполагается, что новые версии программного обеспечения будут работать на более быстром оборудовании, чтобы иметь одинаковый пользовательский интерфейс. Но стоит ли цена? Как мы можем понять, была ли функциональность добавлена ​​эффективным способом?

Но, возвращаясь к основной теме, многие люди после окончания учебы не знают о проблемах, связанных с производительностью, concurrency (или, что еще хуже, им все равно). В течение долгого времени закон Мура обеспечивал стабильное повышение производительности. Таким образом, люди писали посредственный код, и никто даже не заметил, что что-то не так с неэффективными алгоритмами, структурами данных или более низкоуровневыми вещами.

Тогда были введены некоторые ограничения (например, тепловой КПД), и уже невозможно получить "легкую" скорость для нескольких долларов. Люди, которые просто зависят от улучшения производительности оборудования, могут получить холодный душ. С другой стороны, люди, обладающие глубокими знаниями об алгоритмах, структурах данных, concurrency (довольно сложно их набрать), будут продолжать писать хорошие приложения, и их ценность на рынке труда будет возрастать.

Закон о Вирте должен толковаться не только буквально, но и о плохом раздувании кода, нарушающем правило "держать-просто-глупо" и людей, которые теряют возможность использовать "более быстрое" оборудование.

Кроме того, если вы работаете в области HPC, эти проблемы становятся очевидными.

Ответ 13

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

В нескольких отягчающих случаях случаях закон очень и очень прав. При открытии окна "Мой компьютер" в Vista, чтобы ваши диски и устройства занимали 10-15 секунд, кажется, что мы движемся назад. Я действительно не хочу начинать споры здесь, но это было так же, как и огромная разница во времени, необходимая для того, чтобы открыть Photoshop, который вывел меня из платформы Windows и на Mac. Дело в том, что это замедление в общих задачах достаточно серьезное, чтобы заставить меня выйти из моей прежней зоны комфорта, чтобы уйти от него.

Ответ 14

Невозможно найти смысл. Почему это предложение является законом?

Вы никогда не можете сравнивать Программное и аппаратное обеспечение, они слишком разные.

Оборудование - это подлинный материал, а программное обеспечение - это письменный код.

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

Почему я должен замедлять Программное обеспечение? Мы всегда стараемся сделать это быстрее!

В физическом режиме очень много возможностей сделать аппаратное ускорение (изменение модулей печати или даже физических частей компьютера).

Может быть, есть смысл, если Вирт означает: сделать это на одном компьютере (= одна программная и аппаратная система).

Чтобы получить более высокую скорость аппаратного обеспечения, необходимо знать функцию аппаратного обеспечения, количество параллельных входов или выходов в один момент и частоту возможных переключателей за одну секунду. Последнее, что не важно, важно, чтобы разные аппаратные принты имели одинаковый или с числовым коэффициентом, умноженным на частоту.

Итак, возможно, программное обеспечение может замедлить автоматическое очень просто, если вы что-то измените в Аппаратном обеспечении. - Вирт думал гораздо больше о аппаратных средствах, он один из великих изобретателей, поскольку компьютер существует в немецкоязычной области.

Другим способом непросто. Вы должны знать Системное программное обеспечение компьютера очень точно, чтобы ускорить работу оборудования, изменив Программное обеспечение (= Системное программное обеспечение, машинные программы) компьютера. И если вы используете больше уровней, вы почти не оказываете прямого влияния на скорость работы оборудования.

Возможно, это может быть объяснение Замысла Вирта... Я понял!