2009-08-11 4 views
1

Кнут: Мы должны забыть о небольших эффективности, скажем, около 97% времени: преждевременная оптимизация есть корень всех золДругой вопрос о преждевременной оптимизации указанной

Мне любопытно, как он пришел с 97% , Может кто-нибудь, пожалуйста, поделитесь чем-то об этом?

ОБНОВЛЕНИЕ: Проблема заключается в следующем: это предложение написано в исследовательском документе, как субъективное утверждение принимается в таком формальном документе?

+2

Обратите внимание на большую разницу между «скажем, около 97%» и «это факт, что 97%». – Fredrik

+0

Я уверен, что в статье, которую он написал впоследствии, он объяснил, что вы должны бросить 5d20 всякий раз, когда вы думаете о преждевременной оптимизации, а затем только вперед, если вы бросите 98 или выше. –

+1

@Mark, сказал он 97%. Ваш бросок кубика даст 99.99934375%. Кнут знал бы использовать процентные кости. –

ответ

1

Я считаю, что ответ Майка Данлави был самым близким. Я верю, что Кнут справится с этим только потому, что он «Кнут». Представьте, что кто-то вроде меня говорит это заявление в газете. Ну ... может быть, многие согласятся со мной, но пока это не будет доказано теоретически, мой документ не будет принят.

И люди разделяли чувства Кнута, потому что они знают, кто такой Кнут. Представьте себе, что он не знает, кто такой Кнут, я могу сказать, что вероятность того, что он отклонит это заявление, будет значительно больше (Стивен: больше не будет 97%;))

9

Я не верю, что оно предназначалось для точного номера. Просто «почти все время».

+0

Проблема заключается в том, что это заявление написано в исследовательской работе. Почему документ принят с таким субъективным заявлением? – nanda

+0

Этот вопрос не связан с программированием, мой друг. –

+0

не является (частью), что такое исследование? ссылаясь на опубликованные работы, то есть. – KevinDTimm

12

80% всей статистики составлено на месте, включая этот.

Я думаю, вы обнаружите, что Jon Skeet имеет правильную идею.

+0

+1, лучшая статистика шутка пока (возможно, единственная) –

+0

+1, да хорошая шутка и, кстати, статистика не должна быть взята точно в любом случае;) – neuro

+0

Правильно, остальные 15% могут быть интерпретированы, без сомнения приводя к новым и улучшенным способам злоупотребления здравым смыслом. –

6

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

4

В ответ на эту часть вопроса:

Это предложение написано в исследование бумаги, как же субъективное заявление получить признание в таком официальном документе?

Исследование публикуется, если оно удовлетворяет нормам «исследования» в соответствующей дисциплине. Так, например:

  • Экспериментальная физика и химия требуют воспроизводимых результатов. Если результаты не воспроизводятся, это черная метка против исследователя.

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

  • Математики требуют доказательств. И тебе лучше не ускользнуть.

  • Философы как хороший аргумент ... «Нуф сказал о них, я думаю.

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

Документы по дисциплинам «Информатика и программное обеспечение» особенно подвержены определенной субъективности. Я думаю, что это неизбежно, потому что во многих областях CS/SE очень сложно (дорого) делать эксперименты, которые позволили бы сделать абсолютно объективные утверждения. Например, как вы можете определить, вызвала ли преждевременная оптимизация (а не что-то другое)? Или более конкретно, как вы можете объективно измерить, лучше ли монолитное ядро, чем микроядро?

Относительно цитаты (я предполагаю) от Кнута:

Мы должны забыть о небольших эффективности, скажем, около 97% от времени: преждевременная оптимизация является корень всех зол.

Это субъективно, но Кнут явно не претендует на объективность здесь. Скорее, он дает некоторые советы особенно содержательным и незабываемым образом. Это тот материал, который делает интересными научные исследования, ИМО.

И для записи мнение Кнута разделяют 97% всех опытных разработчиков программного обеспечения. (Я только что сделал это :-)

1

Я думаю, что утверждение Кнута в основном относится к «аргументу престижа». Кто собирается обсуждать это?

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

Мой любимый пример того, где профессора имеют шторы, связаны с производительностью программного обеспечения, где они идут о большой-O и сложной оптимизации компилятора, в то же время полностью теряя промышленное явление gi-normous software и огромную неэффективность из-за горных over- дизайн.

0

Это предложение написано в исследовании бумаги, как же субъективное заявление получить признание в таком официальном документе?

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

+0

Эйнштейн считал, что Гейзенберг прав, он просто ненавидел последствия, вытекающие из теории Х., и он провел много лет, чтобы найти другую интерпретацию. –

0

Только грубая цифра, как и другие отметили. Стоит отметить, что qoute был с 70-х (1974) в пользу использования заявлений goto для ускорения измеренных критических путей в программном обеспечении.

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

Если мы представим что-то вроде Adobe Photoshop, возможно, по крайней мере четверть их программного обеспечения будет потрачена на цикл через пиксели, и любой цикл изображения будет критичным по производительности, поскольку он может легко прорисовывать миллионы и миллионы пикселей (просто возьмите количество пикселей наших мониторов отображается как «базовая» цифра). В результате у них может быть четверть или более их критических путей моделирования кода, и они действительно выигрывают от оптимизации на микроуровне, такой как многопотоковая обработка, SIMD или обработка графического процессора.

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

Смежные вопросы