Есть книга Кнута "Исскуство программирования", что думаете о ней?

Тема в разделе "WASM.HEAP", создана пользователем neutronion, 14 апр 2011.

  1. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Есть такая замечательная книга Кнута, как думаете стоит ли потратить время на ее изучение? Я мельком посмотрел в нее, автор на мой взгляд учит больше математике, чем программированию. Не слишком ли глубоко копнул автор в математические понятия, чтобы считать эту книгу полезной для программеров?
     
  2. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Читали все, усвоили еденицы
     
  3. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Вот в том и проблема, а нужно ли ее так копать, на мой взгляд эта книга больше для исследователей, чем для программеров. Программерам нужно просто пользоваться уже известными наработками, а разработкой новых алгоритмов должны разбираться специально обученные люди.
     
  4. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    Это справочник. Надо просто знать, что там есть, и пользоваться, чтобы не изобретать каждый раз заново велосипеды с квадратными колесами. По крайней мере, в http://www.wasm.ru/forum/viewforum.php?id=17 на половину топиков можно смело отвечать: читай Кнута, и закрывать.
     
  5. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Для того, чтобы это использовать, разве нужны все эти кучи формул и глубокий экскурс в математику?
     
  6. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    neutronion
    Для использования все эти формулы действительно не нужны. Программисту главное -- правильно усвоить выводы (какие алгоритмы в каких условиях быстрее и т.п.). Впрочем, нелишним будет разобрать хотя бы часть математики, чтобы лучше понять, например, как можно оценить производительность алгоритма.

    А вот это -- грубейшая ошибка. Это быдлокодеры алгоритмы не создают, а тупо кодируют кем-то спущенные сверху. Искусство же программиста как раз в том и заключается, чтобы создавать новые алгоритмы или творчески приспосабливать уже существующие к конкретным задачам.
     
  7. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Некоторые новые алгоритмы без серьезного уровня знания математики невозможно оценить.
    Создать новые алгоритмы без серьезного знания математики, тоже трудновыполнимая задача. Это значит мы приходим к тому, что этим должны заниматься серьезные математики.
     
  8. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Более того, в математике тоже существуют специализация, кто-то занимается топологией, кто-то алгоритмами. В общем как говорил К. Прутков Нельзя объять необъятное.
    Поэтому и создал этот топик, как работать с сией замечательной книгой, только как справочником, тогда глубокие знания математики нафиг не нужны, как исследователь, тогда программированием уже будет заниматься недосуг.
     
  9. vover

    vover Владимир

    Публикаций:
    0
    Регистрация:
    21 авг 2008
    Сообщения:
    202
    Что делает программер?
    1. Зарабатывает деньги - книга навряд ли нужна.
    2. Пишет программы - книга будет полезной, даже может натолкнуть на интересные идеи и решения.
     
  10. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Встречал другую книгу по алгоритмам в 1000стр -- математики там не меньше
     
  11. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    neutronion
    Все просто в 60-тых годах 20 века. Компьютеры назывались электронными вычислительными машинами сокращенно ЭВМ. Программисты в те времена занимались именно математическими вычислениями на компьютере. Более того скорость компьютеров было несколько килогерц и памяти всего ничего от нескольких байт до нескольких килобайт.
    А когда ставишь себя в рамки и годами оттачиваешь умение работать в этих рамках, то тогда и рождается искусство.
    Кнут начал писать свою книгу именно в 60-тых и тогда это было актуально.

    С развитием вычислительной технике это стало не так актуально. Некто не мог даже предположить что электроника так будет развиваться. Оказалось что развитие вычислительной технике приняло экспоненциальною зависимость. Каждые полтора года число транзисторов удваивалось. Рост частоты процессоров и объема памяти были тоже экспоненциальными.

    Сразу стало понятно что нет надобности заботиться о том сколько байт съедает программа или сколько времени тратит программа. Достаточно было оценить сложность алгоритма в предельном состояние O и тетта большая. Уже реже требуется вылизывать алгоритмы до байта. Так что смело можно найти любую другую книгу по алгоритмам где меньше математике.

    В 80-тых годах появляются персональные компьютеры и становится проще купить новый компьютер. До этого времени старались вылизывать программы, так как компьютеры стоили очень много денег. А в 80-тых произошло резкое удешевление.

    Но до 2000 года Кнут не теряет своей актуальности. А да и не стоит забывать что это всё-таки искусство, а не обычное программирование.

    В 90-ых интенсивно развивает интернет. И в это время появляется новый термин "экстремальное программирование".
    Программистам не требуется каждый раз набирать код достаточно просто скопировать с сайта. А потом уже доводить до ума.

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

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

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.879
    Кому не нравится Кнут -- пусть читают Уоррена, тоже искусство, куча великолепных находок и т.д.
     
  13. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Недавно наблюдал такую картину. На одном из форумов. Один молодой программист искал как распараллелить алгоритм. В результате ему порекомендовали место где можно обзавестись кластером и человека который поможет запустить его задачу на кластери. А задачка простая. Так вот ему было предложено сменить алгоритм, а он не захотел. А зря. То мог бы запросто обойтись без кластера. У него алгоритм был O(n^2), а можно было заменить на другой алгоритм со скоростью O(n*log(n)) При этом у него было n=2^32. Вот и почувствуйте разницу в скорости несколько месяцев против нескольких минут.

    Это совсем не так. Есть литература как делаются изобретения можете почитать.
    Правда я придерживаюсь другой теории.
    1) Чтобы изобрести нужно много знать - т.е иметь обширные знания в различных областях.
    2) Хорошо знать существующие алгоритмы.
    Ну и самое лучшее когда выполняется оба условия.
     
  14. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    JCronuz

    Ахаха, какая глубокая драма))
     
  15. ava

    ava New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2003
    Сообщения:
    169
    "Товарищи христиане, есть такая книга "Библия", что думаете о ней?" :)
    Кнута читать нужно. И не страшно, что бОльшую часть книги не понимаешь - даже без глубоких математических познаний книга будет очень полезна (хотя стремиться к полному пониманию нужно).

    Использование исключительно известных наработок - удел быдлокодеров. Что будет делать такой кодер, если столкнется с задачей, для которой еще не придумали подходящего решения?

    Не скажи. RLE, LZ77/LZSS, Bubblesort - чтобы самостоятельно придумать и обосновать подобные алгоритмы, серьезный матан не нужен :) Да и более сложные алгоритмы можно сочинить, если очень нужно. Реализация, придуманная "нематематиком", наверняка будет далеко не оптимальной, но все же будет!

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

    Тупо взять и скопипастить код, написанный неизвестно кем, неизвестно для чего, с неизвестными требованиями и багами? Причем говнокодеры встречаются чаще, чем программисты? Нет уж, спасибо.