?

Log in

No account? Create an account
Previous Entry Share Next Entry
Сопротивление кода
Слон
yashunsky
Пока ехал на строяк собора, в голову мне пришла стройная цепочка аналогий между реализацией алгоритмов и строительством. Возьмем для примера пролеты и сортировку.
Самый простой способ получить пролет — просто положить балку (а отсортировать — какими-нибудь наивным методом со сложностью n2). Пока прочности нашего материала (вычислительных мощностей) хватает, а размер пролета (выборки) не велик, то все идет хорошо. Но потом начинает хотеться большего. И изобретают арку (алгоритм со сложностью n log n): тут намного проще накосячить при реализации, так что все вообще сломается. Зато если все сделано правильно, то можно сильно увеличить размер пролета (выборки). А потом появляются новые материалы (компьютеры), и выясняется, что те же размеры теперь доступны и при наивных реализациях. А можно все равно применять умные технологии и получать еще большие размеры, или запасы по прочности (производительности). Но на практике часто не важно, будет у конструкции 10 или 100 кратный запас по прочности (выполнится алгоритм за 0.01 или 0.001с). К слову, чтобы не накосячить, можно использовать арки промышленного производства (библиотечные алгоритмы), а не собирать на коленке.

Впрочем, как и любая аналогия, эта тоже конечна. Найти хорошую opensource реализацию проще, чем бесхозный склад клевых стройматериалов. Хотя... :)

  • 1
  • 1