Закон Вирта все еще остается в силе? - PullRequest
10 голосов
/ 03 марта 2009

Изречение, сделанное Никлаусом Виртом в 1995 году:

«Программное обеспечение работает медленнее, быстрее, чем аппаратное обеспечение быстрее»

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

Ответы [ 14 ]

2 голосов
/ 03 марта 2009

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

1 голос
/ 03 марта 2009

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

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

1 голос
/ 03 марта 2009

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

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

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

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

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

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

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

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

0 голосов
/ 01 февраля 2011

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

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

Аппаратное обеспечение является подлинным материалом, а Программное обеспечение - письменным кодом.

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

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

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

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

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

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

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

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

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