Математика и секс
Февраль 19th, 2013

Конкретная математика, Д. Кнут

Еще недавно прочитал (вернее конечно пролистал) книгу Кнута «Конкретная математика». Опять же читал с целью найти чего-нибудь интересного для собственного учебника.

Когда-то, в заметке, где я ругал «Искусство программирования» того же Кнута, я эту книгу уже рекомендовал читателям. Тогда я не имел хорошего представления о книге, и поэтому судил по прочитанным парочке первых глав и содержанию. Мне тогда показалось, что первые главы очень просты и хорошо написаны, а судя по содержанию там материал был довольно интересный — мне казалось, что там весьма глубоко рассматривалась комбинаторика, всякие там числа Бернулли, постоянная Эйлера и прочие интересности.

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

Проблем у книги три:

1. Сам материал крайне примитивен. Даже теорема Эйлера (та что $latex m^{\phi(n)}\equiv 1 \pmod n$ при $latex (m, n) = 1$) не доказывается, хотя используется.

2. Всё что доказывается — доказывается исключительно синтаксически. Везде, где есть какая-то логика за рамками синтаксических выводов (та же комбинаторика или метод «разделяй и влавствуй»), это просто умалчивается. Верхом сообразительности в книге позиционируется способность придумать какую-нибудь замену или что-то на что-то домножить.

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

В общем не читать ни в коем случае. Говно редкостное.

Вообще в очередной раз удивляюсь почему люди испытывают такой фанатизм в отношении книг Кнута. Читаю каждый раз хвалебные отзывы, и сомневаюсь прочел ли эти книги хоть один из тех, кто их хвалит, а если прочел, то читал ли он что-либо еще по темам, затронутым Кнутом. Лично я ни одного положительного момента в этих книгах не вижу и не вынес из них для себя вообще ничего интересного.

19 комментариев »

  1. Конкретная математика достаточно унылая, да. Но, как мне кажется, это вызвано унылостью анализа алгоритмов в принципе. Все вот эти нахождения закрытых форм для сумм и операции с биномиальными коэффициентами требуют синтаксических трюков.

    ACP же, напротив, хорошие книжки. Основная ценность (для меня) заключается в том, что Кнут анализирует не асимтотическое поведение алгоритмов, а среднее. Это важный практический аспект.
    В принципе, есть книги Седжвика, как более современный вариант, но у Кнута покрывается больший объем материала.

    Comment by measure_0 — 19.02.2013 @ 15:45
  2. Ага, все так. Никогда не понимал этой религии «книги Кнута — хорошие».

    Comment by Илья — 19.02.2013 @ 17:11
  3. Хеллер написал:

    Читаю каждый раз хвалебные отзывы, и сомневаюсь прочел ли эти книги хоть один из тех, кто их хвалит

    Разумеется нет. Люди используют эти книги для решения практических задач, а не для отвлечённого чтения в метро. То что ты не в состоянии понять, нахуй нужны эти книги, было ясно уже из предыдущей заметки «Мартышка и TAoCP».

    Comment by Anonymous — 19.02.2013 @ 18:02
  4. @ Anonymous:

    Какую же практическую задачу Вам удалось решить, прочитав AOP?

    Comment by Илья — 19.02.2013 @ 18:19
  5. @ measure_0:
    Из того, что ты говоришь, следует, что эту книгу можно использовать как справочник из которого можно переписать алгоритм, переведя на интересующий язык программирования, но не как книгу для последовательного чтения, не как учебник и не как источник, по которому можно разобраться с идеями, стоящими за алгоритмами. Я не против использования ACP как справочника (хотя до сих пор мне всё требуемое удавалось нагуглить, и ссылки были на другие источники), но обычно-то люди выдают рекомендации на ACP как на книгу, которая мозги вправит, хотя изучение процедурного программирования вряд ли сильно полезно (если не вредно) для разработчика, если только он не пишет на ассемблере.

    Соглашусь, что наверное в анализе алгоритмов действительно синтаксической математики полно, однако её очевидно можно сильно сократить — Кнут зачастую использует её там, где можно было бы вместо вынес-домножил-заменил взять интеграл или производную или применить какой-нибудь общий метод типа Master’s method.

    Comment by Хеллер — 19.02.2013 @ 18:30
  6. Ты чото попутал, конкретная математика это не учебник злого матана, а введение в математику для быдлокодеров, и в этом качестве она совсем неплоха.

    Comment by anonymous — 19.02.2013 @ 19:07
  7. @ Хеллер:
    ACP рекомендовать как книгу по программированию, конечно, глупо. Это книга об анализе алгоритмов, а не программировании.

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

    @ anonymous:
    Боюсь, что для быдлокодеров эта книжка слишком сложна.

    Comment by measure_0 — 19.02.2013 @ 19:43
  8. Хеллер написал:

    […] эту книгу можно использовать как справочник из которого можно переписать алгоритм, переведя на интересующий язык программирования, но […] не как источник, по которому можно разобраться с идеями, стоящими за алгоритмами.

    Бред. Кнут в одном месте собрал огромное количество базовых алгоритмов и подробно описал их. Последовательное, связное изложение + упражнения дают возможность разобраться, как эти базовые блоки работают, чтобы из них можно было сложить что-то необходимое в конкретном случае.

    На роль «учебника по алгоритмам» гораздо лучше подойдёт Кормен. Но и его читать «для общего развития», не реализуя на практике ничего из прочитанного, имхо, пустая трата времени.

    Илья написал:

    Какую же практическую задачу Вам удалось решить, прочитав AOP?

    Я же написал «используют», а не «читают». Как подставку под пиво, например.
    Практические задачи, которые решаются в TAoCP вполне очевидны из названий глав. Или тебе интересно, как лично я использовал подсчёт деревьев (немного 2-й главы) и деление полиномов (почти вся 4-я глава)?

    Concrete Mathematics я начинал читать с 5-7 глав, когда не мог вывести нужную свёртку. На мой взгляд, очень хорошая книжка для тех, кому нравится дискретная математика. По сранению с TAoCP, читается *намного* легче.

    measure_0 написал:

    ACP рекомендовать как книгу по программированию, конечно, глупо. Это книга об анализе алгоритмов, а не программировании.

    А что тогда относится к книгам по программированию? «Жава для чайников»? «Паттерны корпоративного быдлокода»?

    Comment by Anonymous — 19.02.2013 @ 22:08
  9. @ Anonymous:
    >>> А что тогда относится к книгам по программированию? «Жава для чайников»? «Паттерны корпоративного быдлокода»?

    Design Patterns, Structure & Interpretation of Computer Programs, Programming Pearls, Writing Secure Code, Hacker’s Delight, Purely Functional Data Structures, книги про идиомы в конкретных языках (Александреску, Рихтер, Блох) и т.д.

    Comment by measure_0 — 19.02.2013 @ 22:42
  10. В «Конкретной математике» раздражение вызвала теория чисел — там,
    конечно, отсутствие элементарных теоретико-групповых понятий
    бесит. А в целом мне лично понравилось, занятно.

    Comment by ende_neu — 20.02.2013 @ 01:35
  11. Вот это да. Как раз начал её читать. Если вы эту книгу все так ругаете, посоветуйте что-нибудь более подходящее для программиста, который стремится к уровню выше, чем «быдлокодер».

    Comment by Сергей — 20.02.2013 @ 21:50
  12. @ Сергей:

    А что бы вам конкретно хотелось изучить?

    Comment by Илья — 21.02.2013 @ 07:29
  13. @ Сергей:
    Если не собираетесь заниматься чистой математикой и хотите лишь извлечь практических навыков, то например самое простое вот: http://www.cs.princeton.edu/courses/archive/spr10/cos433/mathcs.pdf

    И скачайте «A Walk Through Combinatorics», Miklos Bona.

    Про производящие функции вот тут не плохо: http://www.math.dartmouth.edu/archive/m68f07/public_html/lectec.pdf

    Это всё довольно простое. Если надо более сложное, то надо уже смотреть какая конкретно тема интересует.

    Comment by Хеллер — 21.02.2013 @ 09:04
  14. @ Илья:

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

    @ Хеллер:

    Спасибо, кажется, то, что нужно.

    Comment by Сергей — 21.02.2013 @ 09:41
  15. @ Сергей:
    Да, но к сказанному конечно добавлю, что изучать только комбинаторику — вряд ли целесообразно. Знания линейной алгебры и свободное оперирование n-мерными пространствами, а так же понимание основ анализа и топологии довольно важно. Здесь рекомендации стандартные — по алгебре Винберг, Кострикин и Кострикин-Манин, по анализу — Зорич и Шварц. Дополнительно можно почитать первые главы лекций Вербицкого по топологии.

    Comment by Хеллер — 21.02.2013 @ 09:45
  16. Я, конечно максимум слоупок, но не посоветуете ли что-нибудь в духе первых трех глав Конкретной математики?

    Comment by bes — 10.01.2015 @ 14:06
  17. @ bes:
    Что вы подразумеваете под «в духе первых трёх грав»?

    Comment by Хеллер — 10.01.2015 @ 17:56
  18. Мне просто понравилась глава под названием «Возвратные задачи», и анализ предложенных там задач(3 параграфа), вот мне и хотелось бы разбора задач и головоломок такого же плана.

    Comment by bes — 10.01.2015 @ 19:06
  19. Кнут — он для кругозора, чтоб не изобретать велосипедов по типу инверсного индекса, например, когда какая-то задача чуть сложнее справочников попадется.

    Comment by Сергей — 18.06.2015 @ 15:57

RSS feed for comments on this post. TrackBack URI

Оставить комментарий

This work is licensed under GPL - 2009 | Powered by Wordpress using the theme aav1
SEO Powered by Platinum SEO from Techblissonline