Многие специалисты компьютерной области знают (ну, или хотя бы слышали) следующее высказывание:
Преждевременная оптимизация - корень всех зол в программировании
Большая часть этих самых компьютерных специалистов склоняется к мысли, что автором этой цитаты является Дональд Кнут и хотя для многих программистов не важно, кто на самом деле является автором, у меня этот вопрос вызывал интерес и я решил заняться им более подробно.
Существует как минимум три разновидности этой фразы, которая встречается в различных трудах Дональда Кнута.
Первый вариант:
Преждевременная оптимизация - корень всех зол в программировании
Оригинал:
Premature optimization is the root of all evil
Источник:
1974 год, лекция, посвященная вручению премии Тьюринга, Computer Programming as an Art, Communications of the ACM, Volume 17, Issue 12, Dec. 1974 (see p.671)).
Полная версия оригинала:
The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature optimization is the root of all evil (or at least most of it) in programming.
Второй вариант:
Нам следует забывать о небольшой эффективности, например, в 97% случаев: преждевременная оптимизация - корень всех зол. Хотя мы не должны отказываться от своих возможностей в этих критических 3%
Оригинал:
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3.
Источник:
1974 год, статья Structured Programming with go to Statements, ACM Computing Surveys, Vol 6, No. 4, Dec. 1974 (see p.268) (эта статья является критикой статьи Эдсгера Дейкстры Go To Statement Considered Harmful).
Третий вариант:
Я также знал, но забыл афоризм Хоара о том, что преждевременная оптимизация — корень всех зол в программировании
Оригинал:
But I also knew, and forgot, Hoare’s dictum that premature optimization is the root of all evil in programming.
Источник:
1989 год, статья The Errors of Tex, Software—Practice & Experience, Volume 19, Issue 7 (July 1989), pp. 607–685, а также в книге Literate Programming (p. 276)
Все три варианта появились в трудах Дональда Кнута, но судя по третьей цитате складывается впечатление, что изначальным автором фразы был другой знаменитый ученый в области компьютерной науки Тони Хоар (C.A.R. Hoare), также лауреат премии Тьюринга, автор быстрой сортировки, Логики Хоара и много чего другого.
С момента выхода в свет The Errors of Tex, прошло уже два десятка лет, но до сих пор нигде не удается найти информацию, подтверждающую слова Кнута о том, что автором этой фразы является именно Хоар. Более того, сам Хоар в 2004 году в личной переписке с Hans Genwits написал о том, что он НЕ является автором этой цитаты (оригинал здесь):
Dear Hans,
I’m sorry I have no recollection how this quotation came about.? I might have attributed it to Edsger Dijkstra.
I think it would be fair for you assume it is common culture or folklore.
Tony.
На самом деле не так и важно, кто является автором этого высказывания, Дональд Кнут, Эдсгер Дейкстра, Тони Хоар, или кто-то не столь именитый в области компьютерных наук. Важно то, что эта фраза стала известной именно благодаря Дональду Кнуту.
Ну и последнее, помните, Дональд Кнут говорил о 97%, а не о 100%;)
Интересно.
ОтветитьУдалитьУжасно что об этом часто забывают. Забыли и в нашем проекте.
Вообще весьма странно и печально, что в нашей профессии люди очень любят крайности. И это касается не только оптимизации, это касается практически любого вопроса. А вот разумное, "прагматичное" отношение к каким-то сложным вопросам встречается, к сожалению, редко.
ОтветитьУдалитьСо всем уважением к автору, но ... Как-то вот "криво", иногда пишите, например: как можно было перевести small effective - в русское небольшая эффективность.
ОтветитьУдалитьЛично мой мозг был искорёжен попытками понять русский текст, пока не посмотрел английский.
Мои варианты: "маленькая/низкая эффективность" или, хотя бы, "небольшая неэффективность"
@Миша: "Со всем уважением к автору", но фразы "small effective" просто нет в моем сообщении (и, соответственно, я никак не мог ее перевести), там есть "small efficiencies". Хочу заметить, что и вы и я пропустили множественное число;) Возможно, более правильный вариант - это "Нам следует забывать о небольших выгодах...".
ОтветитьУдалитьgeneric viagra
ОтветитьУдалитьБолее того, я ни разу не встречал случая, когда просчет эффетивности до и после внедрения проводился по одной и той же неизменямой методике. Т.е. посчитали до, потом после, НЕ МЕНЯЯ ПРИ ЭТОМ МЕТОДИКУ, и сказали - вот получились сопоставимые цифры, погрешность - столько-то... Нет, обычно присутствует фраза "в процессе выснилось, что не были учтены такие-то и такие-то факторы, методика была скорректирована и теперь она будет давать результат", забывая при этом добавлять "...для данного конкретного внедрения"...
Что более всего поражает, это то, что признавая, что точность оценки никак не 90 и даже не 80 и даже не 70, тем не менее, если вариант А превышает Б на 5-10%, то это повод для выбора...
Лариса Вам пора запускать Скайнет и нас ВСЕХ зачиповать,а то мы раскоментировались много, да и мозги в голову невлазят....
ОтветитьУдалить