Добро пожаловать на вторую часть моих топ-100 книг о программировании, компьютерах и науке. Если Вы ещё не видели первую часть, прошу Вас ознакомиться с ней. В этой части я сделаю микс моих любимых книг по теории и практике, ведь, как говорит Дональд Кнут в своих Избранных статьях по информатике, — «Лучшая теория основана на практике; Лучшая практика основана на теории».

image

В моём представлении теория и практика должны быть разделены в соотношении 20/80. Я люблю добиваться выполнения практических задач, но в то же время мне нравится изучать теорию, на основе которой я их решаю. Мои наиболее творческие идеи всегда приходят ко мне из теоретических книг. Прочитав достаточно книг по теории, внезапно множество идей выстраивается во что-то новое.

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

Если вас заинтересовала серия, вы можете подписаться на RSS-рассылку моего блога и подписаться на обновления в моём твиттере.

image

Итак, приступим к книгам этой недели!



#6 Избранные статьи по Информатике Дональда Кнута
image
Избранные статьи по Информатике.

Это одна из самых доступных книг Кнута. Эта книга принесла мне много наслаждения. Она написана не только для тех, кто является специалистом в предмете. Она написана для людей, имеющих образование в любой отрасли, и для её прочтения нет необходимости знать высшую математику.
Сам Кнут об этой книге говорит следующее: «Если какая-либо из моих работ заслуживает того, чтобы о ней знали все, то я бы хотел, чтобы запомнили именно эту книгу». Кнут рассуждает в ней о таких темах, как борьба с конечностью, полезность игровых проблем, теория против практики, история алгоритмов, первая компьютерная программа Фон Неймана, и о многих других.

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

Я только что вспомнил, что много лет назад уже написал в блоге статью о о Первом Компьютере Дональда Кнута много лет назад, основанную на одной из глав этой книги. Я даже отсканировал фотографию из этой книги, на которой изображен молодой Дональд Кнут в возрасте 20 лет, работающий на моём любимом IBM 650 (1958 год):

image
Молодой Дональд Кнут в возрасте 20 лет за своим первым IBM 650 в 1958 году.

Автор: Дональд Е. Кнут

#7 Как рассмешить Пересмешника
image
Как рассмешить Пересмешника.

Одна из самых запоминающихся и забавных книг, которую я когда-либо изучил. Эта книга учит комбинаторной логике, представляя комбинаторов в виде поющих птичек. Вы услышите пение птиц Тьюринга и отправитесь путешествовать в лес Геделя. Убедитесь, что Вы готовы к этому путешествию, — Вам понадобится много бумаги и чая, потому что эта книга захватит Вас сразу, как только вы начнете разбираться в описанных в ней проблемах. Книга будет смешить Вас, рассказывая Вам о новых птицах. Вы получите хорошую зарядку для ума. Если у Вас хватит терпения проработать все главы, в конце Вы узнаете о кодировках Чёрча (Church encoding) и теореме Гёделя о неполноте.

image
Мастер лес — вход только для Элиты.

Эту книгу, возможно, будет проблематично найти, потому что она больше не издаётся. Свой экземпляр я получил много лет назад, когда она ещё была в печати. Прямо сейчас на Amazon есть 10 подержанных копий. Также она доступна на Kindle и Nook. Если Вам нужна именно печатная версия, попробуйте поискать её на Ebay или Powell. Там тоже есть несколько копий в продаже.
Автор: Рэймонд Смулиан.

#8 Опытный Комбинатор
image
Опытный комбинатор.

Опытный Комбинатор — это продолжение книги Маленький Комбинатор, которую я отметил в своём списке под номером #4 в первой части серии. Эта книга написана в том же стиле, что и Маленький Комбинатор и читать её очень весело. Это диалог между Вами и авторами, но, в отличие от Маленького Комбинатора, который учит думать рекурсивно, эта книга учит думать о природе вычислений. Вы изучите приближения, продолжения и программирование в стиле передачи продолжений (Continuation-passing style, CPS), y-комбинатор (комбинатор неподвижной точки) и реализацию Вашего собственного языка Lisp на Lisp в конце книги.

Когда я читал книгу, я собирал все примеры кода и заповеди программирования на github: репозиторий-опытного-комбинатора.

image
Решение одной из проблем Опытного Комбинатора.

Авторы: Даниэль П. Фридман и Маттиас Феллайзен.

#9 Экспертное Прогарммирование на C
image
Экспертное Программирование на C.

Вернёмся к книгам по практике, — это классическая книга по программированию на C. Я изучил этот язык в совершенстве, программируя и разбирая примеры кода, не прочитав ни единого учебника, и эта книга стала моей первой книгой по C. Эта книга предназначена для людей, которые уже знают C на приличном уровне. Она представляет тонкие аспекты языка и выявляет шокирующую правду, что массивы и указатели в C — это не одно и то же. Причудам языка сопутствуют интересные истории и предположения, называемые удобной эвристикой. Она написана забавно, и исторические анекдоты тоже очень интересны.

Мне понравилось, как про эту книгу было сказано следующее: «Вы точно поймёте, что вы гик, если поймаете себя на хихиканьи над всеми весёлыми комментариями книги. То, что создал Питер ван дер Линден, является не столько книгой о C, сколько взглядом изнутри на культуру хакерства. Это образ ещё того Интернета, который когда-то почти являлся синонимом для „Аккаунт UNIX“. Эта книга даст Вам +10 очков к гиковости. Вперёд к прочтению!

image
Забавная задачка по программированию.

Автор: Питер ван дер Линден.

#10 Комбинаторные Проблемы и Упражнения Ласло Ловаса
image
Комбинаторные Проблемы и Упражнения Ласло Ловаса.

Эта книга, возможно, самая продвинутая из всей серии. Но она настолько хороша, что я должен был рассказать про неё как можно раньше, в топ-10. Эта книга написана в стиле Проблема-Подсказка-Решение. Проблемы занимают первые 100 страниц, далее следуют подсказки и решения на остальных 500 страницах. Ловас начинает с простых проблем, которые может решить любой, и быстро продвигается к более сложным проблемам. В этой книги нет теории.

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

Забавная история — я слышал, что первокурсники, которые учатся на доктора наук (PhD) в Венгрии (родина автора книги), должны прорешать все задачи этой книги. Те же, кто не справится, — не смогут и перейти на второй курс.

Автор: Ласло Ловас.

До следующего раза!

Комментарии (22)


  1. lari4
    10.06.2015 12:34
    +8

    Вы серьезно? Собираетесь перевести 20 статей по пять книг? Проще было бы дождаться выхода всех статей из этого цикла и уместить все в 1-2 поста.


    1. kal1sha Автор
      10.06.2015 12:37
      +1

      Спасибо Вам! Тоже думал об этом, если народ будет просить я так и сделаю.


      1. miwa
        10.06.2015 12:48
        +2

        Как по мне, лучше переводить описания к тем книгам, для которых есть перевод на русский язык. Кто сможет читать эти книги в оригинале, тому ваши переводы не нужны — они прочтут и оригинал от Peteris Krumnis. А кто не сможет — тому тоже переводы не особо нужны, так как кроме вашего перевода все равно больше ничего прочесть не смогут.


      1. Punk_Joker
        10.06.2015 15:07
        -1

        Хотябы книг 10-20 в статье было бы лучше.


        1. kal1sha Автор
          10.06.2015 19:54

          Да, вы правы, я подумал, и мы (вместе с другом, который делал перевод) будем ждать, пока автор напишет по 2 или 4 статьи и потом будем перевод публиковать по 10 или 20 книг.


  1. brainick
    10.06.2015 14:46
    +4

    >>Комбинаторные Проблемы и Упражнения Ласло Ловеса<<

    Комбинаторные задачи и упражнения Ласло ЛовАса, блин.
    ru.wikipedia.org/wiki/Ловас,_Ласло

    >>студенты-первогодки (PhD)<<
    WTF??? Я то считал, что PhD это en.wikipedia.org/wiki/Doctor_of_Philosophy

    >> разобраться в теорией графов<< ????

    >>Проблемы занимаются<<

    >>идеальным способом для быстрого для быстрого изучения <<

    В общем, по всей видимости статья была написана так:
    1. Случайная выборка книг с Амазона
    2. Гугл-транслейт аннотаций

    P.S. Надеюсь, следующего раза не будет.


    1. FractalizeR
      10.06.2015 14:56

      У вас претензии к грамотности или к сути? С тем, что ошибки в переводе имеются и местами грубые — согласен. Но разве книги, которые описываются, не заслуживают того, чтобы их прочитали?


      1. brainick
        10.06.2015 15:51
        +14

        Ошибки в переводе не просто грубые — это ошибки, которые показывают, что автор перевода не знаком с предметной областью.

        >>Если у Вас хватит терпения проработать все главы, в конце Вы узнаете о кодировках в Церквях и незавершённости теорем Гёделя.<<

        кодировки в Церквях!!! — АААААААААААААААААААА!!!

        Бл… дь это же Church encoding, а Чёрч это ru.wikipedia.org/wiki/Чёрч,_Алонзо

        Бл… что это с Хабром творится, на главной странице долболюбы свои испражнения демонстрируют?

        Интересно, а кто статью плюсует, тот прочитал то хоть ее содержание?


        1. dzugaru
          10.06.2015 19:31
          +7

          >незавершённости теорем Гёделя

          А это видимо теорема Гёделя о неполноте.


    1. lari4
      10.06.2015 15:14
      +2

      Это не подборка автора поста, а перевод цикла статей программиста Петериса Круминыша.


    1. kal1sha Автор
      10.06.2015 20:07
      -5

      Очень извиняюсь за все ошибки. Это мой друг делал перевод, а я ему доверял. Я не перечитал его перевод перед тем, как опубликовать, и вот результат. Я ему только что написал, что так нельзя делать перевод, и он извинился, сказал, что торопился и мозг не включил.

      Я только что перечитал всю статью сам и поправил все ошибки, которые вы упомянули.

      В следующий раз я сам буду делать перевод, и ошибок не будет. И я буду делать перевод по 10-20 книг, а не по 5.


      1. kstep
        11.06.2015 12:14
        +3

        Нет, нет, не удержусь.

        Скрытый текст
        Мопед не мой?..


        1. kal1sha Автор
          11.06.2015 19:11

          На этот раз не мопед. Вот блог моего друга, Вовы, devprog.ru. Он только что перевел и 3. часть (последняя статья на его блоге). Но я теперь буду внимательно перечитывать его перевод прежде публиковать на хабре, а то позор.


  1. Myshov
    10.06.2015 18:46
    +3

    Schemer — это все же не комбинатор, а человек, пишущий на/изучающий язык Scheme.


    1. kal1sha Автор
      10.06.2015 20:25
      -3

      Если честно, это зависит от того, как на это посмотреть. В моём понимании комбинатор — это человек, который много думает. А книжка как раз это и требует от читателя. И комбинатор классно звучит, почти как герой из «12 стульев». Потому мы и использовали это слово.


      1. kstep
        11.06.2015 12:13
        +1

        И всё же книги по программированию на Scheme


  1. brainick
    10.06.2015 19:06
    +8

    >> Если у Вас хватит терпения проработать все главы, в конце Вы узнаете о Церковных кодировках (Church encoding) и незавершённости теорем Гёделя.<<

    Аффтар, ты кто? Я же написал тебе, что Church — это ru.wikipedia.org/wiki/Чёрч,_Алонзо

    >>Мастер леса — вход только для Элиты.<<
    Master forest — это главный лес, а не мастер леса.

    В этой статье уже ничего не исправить — НЛО жги.


    1. kal1sha Автор
      10.06.2015 20:13
      -2

      Ещё раз извиняюсь за ошибки. Посмотрите пожалуйста мой комментарий выше. Я там написал, почему так произошло. В этот раз все ошибки исправил сам (а не друг). Теперь будем смотреть, сожгёт ли НЛО статью или нет…


    1. kstep
      11.06.2015 12:12

      Всё же в данном контексте не «главный лес», а «лес мастеров», на что намекает вторая половина фразы: «вход только для элиты» (то есть для мастеров).


      1. brainick
        11.06.2015 13:04

        В своем переводе я опирался на то, что существует The Master Forest Owners Volunteer Program www.cce.cornell.edu/learnAbout/GetInvolved/Pages/MasterForestOwners.aspx
        поэтому и перевел как главный лес. Мультитран выдает www.multitran.ru/c/m.exe?CL=1&s=master+forest&l1=1 хотя, возможно, там достаточно хитрая игра слов.


  1. sferrka
    11.06.2015 08:30

    Друга зовут Mr. Google Translate?)


    1. kal1sha Автор
      11.06.2015 19:07
      -2

      Нет, его зовут Вова (посмотрите его блог — devprog.ru). Он только что перевел и 3. часть. Последняя статья на его блоге. Но я теперь буду внимательно перечитывать его перевод прежде публиковать на хабре.