?
Ни о какой безапелляционности в моих высказываниях не может быть и речи! [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

программистское [дек. 7, 2007|07:50 pm]
Anatoly Vorobey
Реддит приятно удивил темой Must-read programming books с множеством хороших советов.

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

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

Comments:
[User Picture]From: kot_begemot
2007-12-07 06:34 pm
Очень субъективно.
Я бы сказал, программирование сегодня стало настолько широким и расплывчатым понятием, что единого списка книг для всех просто не существует.
(Ответить) (Thread)
[User Picture]From: trurle
2007-12-07 06:41 pm
Программирование, как и любовь, это одно слово подразумевающее множество разнообразнейших занятий.
(Ответить) (Parent) (Thread) (Развернуть)
(Удалённый комментарий)
[User Picture]From: avva
2007-12-07 07:29 pm
Я помню твою запись об этом.
(Ответить) (Parent) (Thread)
(Удалённый комментарий)
(Удалённый комментарий)
[User Picture]From: faceted_jacinth
2007-12-07 06:44 pm
Ну как бы асимптотика-то не меняется. А так да, HeapSort должен получиться раз в двести-четыреста медленнее квиксорта, в среднем, на достаточно большом массиве.
(Ответить) (Thread)
[User Picture]From: faceted_jacinth
2007-12-07 06:56 pm
То есть не 200 и уж точно не 400 раз, это я загнул. Особенно в реальной задаче, с неинлайнутым (и, возможно, достаточно сложно устроенным) компарером, как минимум одиним уровнем индирекции етс. С другой стороны, если тупо сортировать инты, то, пожалуй, раз пятьдесят разницы можно получить. Это много!
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: alexott
2007-12-07 06:46 pm
SICP можно не только почитать, но и посмотреть - есть видеолекции, которые читали для сотрудников HP.
Из кнута мне очень понравилась "конкретная математика"
(Ответить) (Thread)
[User Picture]From: _navi_
2007-12-07 07:37 pm
тяжёлая книжка, мне так и не далась, застрял в начале, где-то после полов/потолков. Но это конечно всё вопрос времени и приоритетов.
(Ответить) (Parent) (Thread)
[User Picture]From: alexott
2007-12-07 06:50 pm
кстати, в свое время мне очень понравилась книга "Advanced programming language design" Finkel = http://www.amazon.com/Advanced-Programming-Language-Design-Raphael/dp/0805311912
Она доступна свободно, и обязательня (имхо) для чтения начинающими программистами
(Ответить) (Thread)
[User Picture]From: slobin
2007-12-07 07:36 pm
Ага. А если вы уже не совсем начинающий, очень полезно подумать, почему он не рассказал о той или иной (кажущейся вам существенной) особенности языка.

... Встречаются Ёроол-Гуй, Олгой-Хорхой и Шай-Хулуд ...

(Ответить) (Parent) (Thread)
From: ex_juan_gan
2007-12-07 07:07 pm
Я года три назад перечитал третий том Кнута и перелистал второй. Но чтобы их читать, надо внимательно прочитать первый.

Короче - книги стоят того... но не всем же это надо по жизни. Вон птички божии - не сеют, не пашут, и Кнута не читали.

Просто когда народ лезет с глупостями на тему как генерировать случайные числа или как тестировать генераторы случайных чисел или там со всякими оценками сортировок... ну с нечитавшими Кнута разговаривать на эти темы имеет мало смысла.
(Ответить) (Thread)
From: (Anonymous)
2007-12-07 11:09 pm
Мне всегда казалось, что сила Кнута не в текстах, а задачках
Не в том смысле, что основной материалл он выкладывает в задачи, как некоторые авторы продвинутых текстбуков просят доказать многие теоремы.
А в том смысле, что большая часть программирования (в смысле инжениринга, а не разработки систем типа "Консультант плюс" или веб-сайтов) требует не очень большой объем базовых знаний -- условно тот же Кормин и немного больше, но гораздо более требовательно к умению находить вывод из нестандартных ситуаций. Плюс "алгоритмическое мышление" вплоть до умения доказывать, что алгоритм плох, находить самые тяжелые сдучаи для данного алгоритма
Этим задачки (особенно рейтинг как тяжелые) у Кнута и хороши
(Ответить) (Parent) (Thread)
[User Picture]From: spamsink
2007-12-07 08:34 pm
Там пишут:

Knuth, SICP, and K&R are the R, S, T, L, N, and E of required programming reading.

Q: Как переводится на американский Sine qua non?
A: R, S, T, L, N, E.

Интересно, кто за пределами американской аудитории это поймет?
(Ответить) (Thread)
[User Picture]From: krace
2007-12-07 08:46 pm
любой, кто не поленится скопировать строчку в форму поиска и нажать кнопку
(Ответить) (Parent) (Thread) (Развернуть)
(Удалённый комментарий)
[User Picture]From: pingva
2007-12-07 10:47 pm
сикп все равно до сих пор решает, читал просто с упоением =)
(Ответить) (Thread)
[User Picture]From: cema
2007-12-08 01:09 am
Я не знаю хороших моделей многоуровневой памяти.
(Ответить) (Thread)
From: (Anonymous)
2007-12-08 09:26 am

кэши

весь анализ алгоритмов там не учитывает возможности, что память может быть более и менее важная

Слово "весь" я воспринимаю здесь как полемическое заострение. :) Всё же, с вычислительной моделью, где элементарными операциями являются чтения и запись одного слова в память, иметь дело приходится нечасто.

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

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

Обзоры:
http://en.wikipedia.org/wiki/Cache-oblivious_algorithm
http://blogs.msdn.com/devdev/archive/2007/06/12/cache-oblivious-data-structures.aspx

Евгений Д.
(Ответить) (Thread)
[User Picture]From: flaass
2007-12-08 12:12 pm
Странно, что TeX Book Кнута никто не упомянул.
(Ответить) (Thread)
[User Picture]From: gt
2007-12-08 01:33 pm
По слухам, второе издание Кнута (80-е) было на паскале, а не на микс-машине. Я воспитан на первом, мне кажется, микс-машина крайне дурна. Некоторые вещи (сортировка и поиск) у Гарольда Лорина лучше намного. Вместо Танненбаума (мне кажется) лучше книжка аэнбешника Кейслера. Мак-кракен хорош, если забыть про фортран, неплохое введение в чмы (но лучшие чмы у Воеводина). Про лямбду кроме Чёрча есть хорошие книжки (на русском такая красная была начала 80-х) и заумная Барендрегта. И почему-то решётки Скотта пропущены совсем. Ещё David Gries compiler theory. И обязательно Николай Вирт с Эдсгером Дийкстрой.

Edited at 2007-12-08 13:36 (UTC)
(Ответить) (Thread)
From: (Anonymous)
2007-12-09 11:51 pm
Нет, Мак-Кракен плох и плох катастрофически, поскольку устарел на 40 лет не только в смысле фактического материала, но и в части расстановки акцентов.
(Ответить) (Parent) (Thread)
(Удалённый комментарий)
[User Picture]From: alll
2007-12-10 04:49 pm

Re: в десятки и сотни раз более быстрых, чем основная пам

Так ведь разделение на быструю-дорогую-маленькую и медленную-дешёвую-большую вроде как ещё с магнитных лент идёт.
(Ответить) (Thread)