Пока ехал на строяк собора, в голову мне пришла стройная цепочка аналогий между реализацией алгоритмов и строительством. Возьмем для примера пролеты и сортировку.
Самый простой способ получить пролет — просто положить балку (а отсортировать — какими-нибудь наивным методом со сложностью n2). Пока прочности нашего материала (вычислительных мощностей) хватает, а размер пролета (выборки) не велик, то все идет хорошо. Но потом начинает хотеться большего. И изобретают арку (алгоритм со сложностью n log n): тут намного проще накосячить при реализации, так что все вообще сломается. Зато если все сделано правильно, то можно сильно увеличить размер пролета (выборки). А потом появляются новые материалы (компьютеры), и выясняется, что те же размеры теперь доступны и при наивных реализациях. А можно все равно применять умные технологии и получать еще большие размеры, или запасы по прочности (производительности). Но на практике часто не важно, будет у конструкции 10 или 100 кратный запас по прочности (выполнится алгоритм за 0.01 или 0.001с). К слову, чтобы не накосячить, можно использовать арки промышленного производства (библиотечные алгоритмы), а не собирать на коленке.
Впрочем, как и любая аналогия, эта тоже конечна. Найти хорошую opensource реализацию проще, чем бесхозный склад клевых стройматериалов. Хотя... :)
- Сопротивление кода
( 1 comment — Leave a comment )
- ←
- 1
Всё так! :)
- ←
- 1