Вот уже который раз лазаю по темам про собеседования и часто вижу там слова в духе "кандидат не смог почитать сложность ля-ля-ля". Неужто на ваших фирмах с бугалтерий@документоообротом хоть одному программисту хоть раз за всю историю разработки понадобилось посчитать алгоритмическую сложность?
Помнится, я на 2 курсе спокойно асилил как считать эту самую сложность и запросто решал на экзаменах и зачётах любые задачи с этим связанные. И с тех пор так и не вспоминаю про это, так за за все эти годы мне это ни разу не понадобилось.
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
Здравствуйте, Sorc17, Вы писали:
S>Вот уже который раз лазаю по темам про собеседования и часто вижу там слова в духе "кандидат не смог почитать сложность ля-ля-ля". Неужто на ваших фирмах с бугалтерий@документоообротом хоть одному программисту хоть раз за всю историю разработки понадобилось посчитать алгоритмическую сложность?
S>Помнится, я на 2 курсе спокойно асилил как считать эту самую сложность и запросто решал на экзаменах и зачётах любые задачи с этим связанные. И с тех пор так и не вспоминаю про это, так за за все эти годы мне это ни разу не понадобилось.
Жду когда пойдут темы: "Не смог написать свое имя без ошибок, просто давно не писал, раньше проблем не было, надо будет научусь заново".
Ну как, как, можно забыть, что a(b + c) = ab + ac, или что проход по массиву n элементов имеет сложность O(n) ?!!
Обычно это просто маркер говнокодеров. Я не встречал нормальных программистов, у которых были бы с этим проблемы, тем более, что в задачах с бугалтерий@документоообротом вся алгоритмическая сложность сводится к выбору между тремя вложенными циклами или каким-нибудь более эффективным решением. Зато говнокодеры, которые любили писать какую-нибудь лапшу без понимания, как оно работает, почти никогда не знали, что такое алгоритмическая сложность.
Здравствуйте, MTD, Вы писали:
MTD>... или что проход по массиву n элементов имеет сложность O(n) ?!!
Зачем это знать? Написал foreach и всё. Какая разница какая там у него сложность? А если начала тормозить выборка для отчёта, сделал постраничную разбивку и всё. Если всё равно тормозит, то сделал чтобы оно динамически подгружалось, пока юзер втыкает в его начало, грузится конец. Всё равно тормозит? Впилил кеширование. Всё равно тормозит? Купил новый сервер и новый комп менегеру, который юзает прогу. На любом этапе тут можно посчитать сложность, только не нужно, потому что это не решит проблему, а значит не нужно
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, Sorc17, Вы писали:
ПМ>Обычно это просто маркер говнокодеров. Я не встречал нормальных программистов, у которых были бы с этим проблемы, тем более, что в задачах с бугалтерий@документоообротом вся алгоритмическая сложность сводится к выбору между тремя вложенными циклами или каким-нибудь более эффективным решением. Зато говнокодеры, которые любили писать какую-нибудь лапшу без понимания, как оно работает, почти никогда не знали, что такое алгоритмическая сложность.
Ну ежели вы спрашиваете просто на понимание о чём вообще речь, то ладно.
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
Здравствуйте, Sorc17, Вы писали:
S>Вот уже который раз лазаю по темам про собеседования и часто вижу там слова в духе "кандидат не смог почитать сложность ля-ля-ля". Неужто на ваших фирмах с бугалтерий@документоообротом хоть одному программисту хоть раз за всю историю разработки понадобилось посчитать алгоритмическую сложность?
Считать сложность как таковую — нет. Но один раз в жизни алгоритмы пригодились. Где-то пол-года назад в нашем внутреннем проекте загрузка данных стала уж очень долгой, по кейсу от юзеров ~ 5 часов. Но я же краем уха помнил, что есть всякие разные поиски. Полчаса гугления и исправление в пару строк, с заменой поиска на бинарный поиск снизило это время до ~1-2 минут. Я потом месяц ходил и собой гордился, особенно с учётом того, что я простой кодерок, а исходно код писали наши ведущие программеры.
Здравствуйте, Sorc17, Вы писали:
S>Вот уже который раз лазаю по темам про собеседования и часто вижу там слова в духе "кандидат не смог почитать сложность ля-ля-ля". Неужто на ваших фирмах с бугалтерий@документоообротом хоть одному программисту хоть раз за всю историю разработки понадобилось посчитать алгоритмическую сложность?
S>Помнится, я на 2 курсе спокойно асилил как считать эту самую сложность и запросто решал на экзаменах и зачётах любые задачи с этим связанные. И с тех пор так и не вспоминаю про это, так за за все эти годы мне это ни разу не понадобилось.
Если ваши амбиции ограничены фирмами "с бугалтерий@документоообротом", то можете смело забить на алгоритмы, их сложность и нужность. А при упоминании их на собеседовании говорить, что это прошлый век, сейчас все решается волшебным форычем.
S>Неужто на ваших фирмах с бугалтерий@документоообротом хоть одному программисту хоть раз за всю историю разработки понадобилось посчитать алгоритмическую сложность?
Естественно нет. Никогда и нигде задачи в виде "подсчитай алгоритмическую сложность этого куска кода" не было. С другой стороны, алгоритмическая сложность она везде. Особенно в правильном выборе структуры данных и работой с большими объёмами. Ещё у алгоритмической сложности есть одно замечательное свойство. Если программист профессиональный и понимает (не помнит назубок!) алгоритмы и структуры данных, то он не думает об алгоритмической сложности и пишет качественный быстрый код. Если программист слабый, то он тоже никогда не думает об алгоритмической сложности, но пишет тормознутое глючное фуфло.
Здравствуйте, Sorc17, Вы писали:
S>Вот уже который раз лазаю по темам про собеседования и часто вижу там слова в духе "кандидат не смог почитать сложность ля-ля-ля". Неужто на ваших фирмах с бугалтерий@документоообротом хоть одному программисту хоть раз за всю историю разработки понадобилось посчитать алгоритмическую сложность?
S>Помнится, я на 2 курсе спокойно асилил как считать эту самую сложность и запросто решал на экзаменах и зачётах любые задачи с этим связанные. И с тех пор так и не вспоминаю про это, так за за все эти годы мне это ни разу не понадобилось.
Я вообще никогда в жизни не слышал о таком понятии, как "алгоритмическая сложность". Нигде — ни в институте, ни на работе, ни в книжках, ни в интернетах, ни от коллег.
Здравствуйте, Злобастик, Вы писали:
З>Я вообще никогда в жизни не слышал о таком понятии, как "алгоритмическая сложность". Нигде — ни в институте, ни на работе, ни в книжках, ни в интернетах, ни от коллег.
Это все потому, что не все алгоритмы обладают Алгоритмической Сложностью. Очевидно — ей обладают только сложные алгоритмы. Легкие алгоритмы, например те, которые проходят в институте, соверщенно очевидно, обладают Алгоритмической Легкостью.
Здравствуйте, anomander, Вы писали:
A>Здравствуйте, Злобастик, Вы писали:
З>>Я вообще никогда в жизни не слышал о таком понятии, как "алгоритмическая сложность". Нигде — ни в институте, ни на работе, ни в книжках, ни в интернетах, ни от коллег.
A>Это все потому, что не все алгоритмы обладают Алгоритмической Сложностью. Очевидно — ей обладают только сложные алгоритмы. Легкие алгоритмы, например те, которые проходят в институте, соверщенно очевидно, обладают Алгоритмической Легкостью.
Ну так я и про Алгоритмическую Легкость первый раз слышу.
Здравствуйте, Злобастик, Вы писали:
З>Ну так я и про Алгоритмическую Легкость первый раз слышу.
Может вы и про волшебный форыч не слышали? Сейчас придут злые кодеры, которые делают "бугалтерию@документоооброт вот это все" и расскажут как программы, использующие его, более лучше работают и, при этом, не требуют особых умственных вложений.
Здравствуйте, anomander, Вы писали:
A>Здравствуйте, Злобастик, Вы писали:
З>>Ну так я и про Алгоритмическую Легкость первый раз слышу.
A>Может вы и про волшебный форыч не слышали? Сейчас придут злые кодеры, которые делают "бугалтерию@документоооброт вот это все" и расскажут как программы, использующие его, более лучше работают и, при этом, не требуют особых умственных вложений.
Ум надо вкладывать в первую очередь в архитектуру и проектирование. Если производительность проседает, на то есть средства диагностики. Если красивое решение работает медленнее корявого, но более быстрого, то делаем замену. В том числе форыча на фор. Я в таких тонких местах обычно стратегию применяю. Так что можешь и дальше кичиться своим более лучшим знанием термина "Алгоритмическая Сложность", но реально знать о ней нафиг не нужно. Оценка самого алгоритма — вот что действительно важно.
Здравствуйте, Sorc17, Вы писали:
S>Вот уже который раз лазаю по темам про собеседования и часто вижу там слова в духе "кандидат не смог почитать сложность ля-ля-ля". Неужто на ваших фирмах с бугалтерий@документоообротом хоть одному программисту хоть раз за всю историю разработки понадобилось посчитать алгоритмическую сложность?
Нет. Этого вообще никогда не требуется. За исключением ... S>Помнится, я на 2 курсе спокойно асилил как считать эту самую сложность и запросто решал на экзаменах и зачётах любые задачи с этим связанные. И с тех пор так и не вспоминаю про это, так за за все эти годы мне это ни разу не понадобилось.
... собеседований.
Здравствуйте, Sorc17, Вы писали:
S>Вот уже который раз лазаю по темам про собеседования и часто вижу там слова в духе "кандидат не смог почитать сложность ля-ля-ля". Неужто на ваших фирмах с бугалтерий@документоообротом хоть одному программисту хоть раз за всю историю разработки понадобилось посчитать алгоритмическую сложность?
Подсчитать — нет. Подумать какой из алгоритмов/контейнеров будет оптимальным в данный момент или придумать как решить ту или иную алгоритмическую задачу — очень часто. И вот для этого "очень часто" знание, хотя бы приблизительное, того, как устроены контейнеры, или какова сложноть у алоритмов необходимо. Хотя, возможно, это потому, что я вообще не занимаюсь ни бухгалтерией, ни документоообротом.
Здравствуйте, MTD, Вы писали:
MTD>Жду когда пойдут темы: "Не смог написать свое имя без ошибок, просто давно не писал, раньше проблем не было, надо будет научусь заново".
А что, может и забывали бы и отучались, если бы имя не требовалось часто в повседневной жизни.
Интересно другое. Ну, вот знаю, что это за сложность, могу подсчитать. Но в работе не пригождается, не было задач с необходимостью считать сложность. Теперь думаю, может значение O-большое действительно преувеличено? Было время, когда хирожопые алгоритмы были основой большинства проектов. Сейчас время другое, много готовых решений, много задач, не связанных напрямую с хардкорным программированием. Причем ситуация такова, что разработчики по-прежнему думают о скорости, но средства профилирования, например, предлагают для этого другие характеристики. Как оптимайзиться среднестатистичекий SQL-запрос? Глядим план, видим на что уходит большая часть времени. Нет там О-большого, есть процент от общего времени и смысл его траты. Как оптимайзиться среднестатистичекий энтерпрайз? Глядим профайлером, где много времени расходуется. Снова нет О-большого, а есть количество вызовов, процент собственного времени и т.п. К чему я. К тому, что некоторые даже хорошие программисты действительно могут не знать О-большое, потому что сейчас есть средства, предлагающие другие методы анализа производительности.
Здравствуйте, MTD, Вы писали:
S>>На любом этапе тут можно посчитать сложность, только не нужно, потому что это не решит проблему, а значит не нужно MTD>Жесть! Теперь спрашивать про о-большое буду в обязательном порядке.
Расскажите, пожалуйста, про практику применения этого знания. В каком контексте и для каких задач вы рассчитывали алгоритмическую сложность?
Здравствуйте, minorlogic, Вы писали:
M>для "бугалтерий@документоообротом" Это все ен надо , да и ппрограмированием это с натяжкой нызывается. M>Но с чего вы взяли что тут все документооборот клепают ?