Блог пользователя fedor.birjukov

Автор fedor.birjukov, 14 лет назад, По-русски
В наши дни существует необычайной количество прекрасных книг о программировании, которые стали классикой, традиционными учебниками для программистов. Так что же все-таки стоит прочитать и в какой последовательности?
Сейчас я сам столкнулся с тем, что не знаю за что взяться, потому что количество книг, которые я хочу прочитать плавно перевалило за 20...
Вот, что рекомендует Санкт-Петербургский тренировочный центр:
  • Кормен, Т., Лейзерсон, Ч., Ривест Р., Штайн К. «Алгоритмы: построение и анализ».
  • Кнут Д. «Искусство программирования».
  • Шень А. А. «Программирование. Теоремы и задачи».
  • Керниган Б., Пайк Р. «Практика программирования».
  • Романовский И. В. «Дискретный анализ».
  • Уоррен Г. «Алгоритмические трюки для программистов».
  • Грехем Р., Кнут Д., Паташник О. «Конкретная математика».
  • Скиена С. С., Ревилла М. А. «Олимпиадные задачи по программированию. Руководство по подготовке к соревнованиям».
  • Меньшиков Ф. В. «Олимпиадные задачи по программированию».
  • Асанов М. О., Баранский В. А., Расин В. В. «Дискретная математика: графы, матроиды, алгоритмы».
  • Гасфилд. Д. «Строки, деревья и последовательности в алгоритмах».
  • Вирт. Н. «Алгоритмы и структуры данных».
Но есть еще много интересных книг, которые стоило бы почитать:
  • Роберт Седжвик «Фундаментальные алгоритмы на C++».
  • Steven Skiena "The algorithm design manual". Если честно, то именно эта книга и ввела меня в задумчивость. Потому что, немного просмотрев ее, я увидел какое-то сходство с творением Кормена (CLRS, «Алгоритмы: построение и анализ»).
  • И великое множество книг по математике. Ведь математика тоже очень полезна. Этот пункт тоже ввел меня в задумчивость. Литература по линейной алгебре и по аналитической геометрии. По высшей математике.
Чем больше список, тем больше он дезориентирует.
Поэтому я рекомендую всем остановиться для начала на списке тренировочного центра. Можно, конечно, добавить к нему Седжвика и еще одну книгу Стивена Скиены, только она полностью на английском.
Если смотреть только на первый список, то я могу определиться, что читать следующим. Но если добавить еще пару книг, то я в замешательстве.
Сложно добавить еще что-то к этому звездному составу. Книги по языкам программирования не в счет. Мне больше интересно, может ли кто-нибудь высказаться по поводу моих добавлений к списку. Потому что они сбивают меня с толку и я не могу взять наконец книгу и читать ее.
Если кто-то хочет, может высказаться о книгах и сказать, в каком порядке он советовал бы их читать.
Думаю, тем, кто собрался здесь, все эти книги знакомы. Но всегда есть люди, которые только начинают свое знакомство с программированием. В итоге, может получиться неплохое руководство.
Я, в свою очередь, рекомендую прочитать Кормена, "Конкретную математику" и Стивена Скиену. Ну и все остальное) Потому что все книги очень интересные. Правда, одни сложнее, а другие проще.
  • Проголосовать: нравится
  • +6
  • Проголосовать: не нравится

14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Ну я как и любой новичок тоже пытаюсь читать/искать все подряд, вот что могу добавить к списку:

1. М.С. Долинский Решение сложных и олимпиадных задач по программированию.
 // Белоруссия 

2. Порублёв. Алгоритмы и программы. Решение олимпиадных задач 
// тут где то была ссылка, на сайт e-maxx и разборы задач со сборов в Харькове

3. А.В. Ахо, Д.Э.Хопкрофт, Д.Д.Ульман - Структуры данных и алгоритмы
// вроде многим нравится

но вот мне почему то кажется, что если просто постоянно много решать задач читать разборы, то это покроет все знания что даются в книгах.
  • 9 лет назад, # ^ |
      Проголосовать: нравится -19 Проголосовать: не нравится
    "Белоруссия"
    

    FFFFUUUUUUUUUUUUUUU

    • 9 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится +1 Проголосовать: не нравится

      не пойму почему так заминусовали...

      видимо они посчитали что ты это написал относительно к стране, а не к к "правильному" написанию(

      • 9 лет назад, # ^ |
          Проголосовать: нравится +24 Проголосовать: не нравится

        Ну потому что нечего некропостить из-за таких глупостей...

        • 9 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          Вообще это кто-то другой некропостнул, я не заметил и отписался.

        • 9 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          Да я бы не сказал, что это глупости. Но некропостить не следует из-за этого, да.

          • 9 лет назад, # ^ |
              Проголосовать: нравится +6 Проголосовать: не нравится

            Эх... Словно это было вчера :)

            • 9 лет назад, # ^ |
              Rev. 2   Проголосовать: нравится +8 Проголосовать: не нравится

              Казалось бы, довольно очевидно, что моё мнение отличается от мнения большинства тут :). А до этого было ещё и это

              P.S: Не сразу понял, что хочет сказать adamant . Да, второй раз мы в подобной теме сталкиваемся :)

              • 9 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится

                Обидно что человек забил. Строил такие большие планы, но написал 3 контеста и забил... Однако, допускаю что он качался где — то еще...

14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Я всегда очень рекомендую читать чужие решения. Даже если ты сам решил задачу, обязательно надо почитать коды топовых участников и понять, что написали они.
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Только, к сожалению, до сих пор этого нельзя сделать почти нигде (кроме топкодера и наших сайтов)...
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      А что за "наши сайты"? )
      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Это локальные тренировочные сайты СГУ. Удивительно, но некоторое время назад даже на них нельзя было посмотреть решения других людей, занимающихся в том же самом Центре олимпиадной подготовки )
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Да. Но на codeforces это невозможно.
    Только на TopCoder.
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Теперь такая возможность появилась.
      Спасибо CodeForces!
      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        А где, если не секрет. В окошке статуса она уже есть давно.
        Вот только до сих пор ждем возможность просмотра решений конкретного участника.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Я согласен с твом списком из 3-х книг :) Ниже мои мысли по поводу их.


Мне в своё время очень понравилась книга Скиены. Это имхо самая практичная для олимпиад книга, с неё вполне можно получить "быстрый старт" и набрать необходимый минимум знаний по многим областям. Классно то, что по каждой теме есть список задач (со ссылками на работающий контестер), и в разделе "указания" некоторые идеи по этим задачам, которые помогают в придумывании решений. Другой плюс - огромный форум этого сайта (UVA online judge), на котором в случае больших затруднений можно найти более подробные рекомендации по решению.


Книга №2 по моему мнению - Кормен. Доступным языком описывается множество теоретических вещей и алгоритмов, причём алгоритмы даны в удобопонимаемом виде.


Книга №3 - Конкретная математика. Очень много интересных математических штук, которые часто находят применение в наших олимпиадах. Хотя всё же это математическая книга.


Книга №4 - Гасфилд (Строки [...]). Классная книга по алгоритмам на строки, но пожалуй не для начинающих (z и префикс-функции можно почитать и в другом месте). Плюс хорошие упражнения.


Книга №5 - Шамос, Препарата (Геометрия). Великолепная книга с множеством сложных геометрических алгоритмов. Реально в олимпиадах применяется очень узкий набор алгоритмов оттуда. Но всё равно, книга впечатляющая, я думаю, стоит каждому её просмотреть, чтобы получить хотя бы представление о сложности тех или иных геометрических задач.


Остальные книги из списка я все читал, но рекомендовать конкретные не стал бы. Обычно скорее это получается так: ищешь какой-нибудь конкретный материал, и находишь его в одной-двух книгах, вот их и приходится читать :)


Очень многое находится просто в статьях. Но здесь туговато - большая часть статей в интернете открывается только за деньги, простому смертному часто приходится подолгу искать "хоть какую-нибудь статью" по нужной теме :(

  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Спасибо за мысли) Я успел написать только скелет записи, спасибо за реальное наполнение и рекомендации. Я читал еще не все книги. На самом деле, действительно можно ограничиться какой-то одной - тремя - пятью, но никак не 20...
    Остальные уже просматриваются избирательно, вдруг есть что-то стоящее. На чтение уходят считанные часы.
    У меня вот только один вопросик. Просто хочу прочитать книгу Скиены, но теперь у меня их две, а может появиться и больше. И я даже не знаю, какую лучше читать. «Олимпиадные задачи по программированию. Руководство по подготовке к соревнованиям» или «The Algorithm design manual»? В чем серьезные отличия? Что посоветуете? )
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Да, забыл отметить, что под "Скиеной" я имел в виду Олимпиадные задачи. Другая его книга, с алгоритмами, мне совсем не понравилась.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Эта книга есть в списке, но я бы хотел заострить на ней внимание. Это "Программирование. Теоремы и задачи." Автор А. Шень. На первом курсе некоторое время это была моя настольная книга. В таких книгах очень важно самому решать упражнения или, хотя бы, по-настоящему пытаться это сделать.

Примерно в то же самое время много читал Кнута и тоже делал упражнения. С Кнутом, конечно, шло потяжелее - но он и копает значительно глубже.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Я бы выделил из этого списка, как очень понятные и при этом очень содержательные, три книги: Шень, Кормен, Керниган—Пайк.