?

Log in

No account? Create an account
компьютерное: об учебниках и учебных пособиях - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

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

Links
[Links:| English-language weblog ]

компьютерное: об учебниках и учебных пособиях [авг. 16, 2004|10:31 pm]
Anatoly Vorobey
Большинство компьютерных учебников не нравятся мне потому, что они написаны слишком медленно и длинно, слишком долго всё разжёвывают для тупых или неопытных.

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

Представьте себе шкалу, в начале которой находится простенькое и примитивное введение в какую-то тему для тех, кто вообще в этом ничего не смыслит; на отметке примерно в треть шкалы — пособие типа “... для чайников” или “... за 21 день”; в середине шкалы — солидный и хороший учебник по данной компьютерной технологии, не предполагающий, однако, от читателя никаких серьёзных знаний ни в чём, кроме разве что самых основ программирования или работы с компьютером; а в самом конце шкалы пусть будет Reference Manual, полный и подробный отчёт о всех аспектах и подробностях данной технологии (например, если это язык — список всех синтаксический конструкций, ключевых слов, встроенных функций). По Reference Manual обычно выучить технологию невозможно, т.к. он предназначен для тех, кто уже её знает и понимает. Или ещё в конце шкалы может быть формальный стандарт, фиксирующий во всех подробностях определённую стандартную версию данной технологии.

Введение этой одномерной метафоры сильно упрощают реальную картину, но тем не менее, воспользуюсь ей. Тогда идеальное для меня учебное пособие лежит где-то на отметке 75-85% данной шкалы. Это быстрое и одновременно глубокое введение в данный предмет для “хакеров” в хорошем смысле этого слова. Оно предполагает, что читающий его человек схватывает тривиальные вещи на лету, и заинтересован в том, чтобы понять не только “как с этим работать”, но и в определённой степени “как это устроено внутри”. Что ему ничего не нужно разжёвывать, а если уж что-то обсуждается долго и подробно, то это действительно сложная и действительно важная для понимания всего предмета вещь. В зависимости от того, о чём оно рассказывает, оно предполагает от читателя хорошее знание и знакомство с началами данной области. Его можно изучить довольно быстро, и вместе с тем понять довольно многое и усвоить главное.

(кстати, иногда бывает так, что формальный стандарт, или что-то близкое к Reference Manual, написаны так хорошо, что их можно использовать в качестве такого пособия. Например, для человека, который примерно понимает, что такое HTML и как его пишут, идеальным пособием для изучения XML в моём понимании является просто W3C-шный стандарт XML. Когда мне понадобилось изучить XML как технологию, я просто распечатал стандарт и прочитал; он написан очень хорошо, и его авторы явно старались обеспечить именно такую возможность: чтобы грамотный человек, которому не нужно разжёвывать очевидное, мог прочитать от начала до конца и выучить данную технологию без предварительного с ней знакомства. Ещё один пример — документация Перла, так называемые PODs; кроме того, что они являются reference manual всего языка, большинство возможностей Перла можно выучить прямо по ним (правда, “с нуля” не выйдет, какое-то начальное, пусть очень примитивное, знакомство с языком должно быть). Я так в своё время и сделал (прочитал первые две главы какого-то учебника Перла и бросил, слишком медленно было; с остальным разобрался, читая программы и документацию языка). В качестве ещё одного примера, на этот раз для сетевых технологий, могут служить многие RFC.)

Для чего я всё это написал? 1. Чтобы упорядочить свои мысли по этому поводу и определить точнее для себя, что я понимаю под идеальным учебным пособием. 2. Чтобы узнать, что по этому поводу думают другие и как они себе представляют идеальный с их точки зрения учебник/учебное пособие/FAQ/что угодно; кто согласен с этим моим представлением, кто не согласен и почему; какие есть хорошие и плохие примеры; и всё, что угодно будет заинтересованным читателям высказать на эту тему.

P.S. Всё вышесказанное не отменяет, конечно, необходимости в учебниках для совсем новичков, которым действительно нужно всё очень подробно объяснять и разжёвывать! И ничего плохо в таких учебниках нет, конечно. Просто я думаю, что тому, у кого уже есть определённый уровень знаний, опыта, смекалки, профессионализма — определяйте как угодно — гораздо лучше подойдёт пособие такого вида, который я описываю в данной записи. Ну или по крайней мере в отношении меня лично это так.
СсылкаОтветить

Comments:
Страница 1 из 2
<<[1] [2] >>
[User Picture]From: _krishulya_
2004-08-16 12:35 pm
100% согласна :-)
Вот мой учебник по С# - где-то на отметке 68%
(Ответить) (Thread)
[User Picture]From: merzavka
2004-08-16 01:31 pm
Professional C# Wrox Press вполне пригоден. Впрочем, у меня не было времени читать его с начала до конца, доучиваю в процессе работы. Но как reference-вполне годится.
(Ответить) (Parent) (Thread)
[User Picture]From: monomyth
2004-08-16 12:37 pm
А как же man?

+wikipedia
(Ответить) (Thread)
[User Picture]From: avva
2004-08-16 12:41 pm
Что man? man бывает разный. Wikipedia в последнее время сильно помогает, это верно. Но не всегда и не во всём. В том, что касается разных компьютерных технологий, сами статьи Википедии обычно слишком примитивны. Зато нередко хорошо подобраны ссылки на более продвинутые источники.
(Ответить) (Parent) (Thread)
[User Picture]From: xxqs
2004-08-16 01:07 pm
добрый вечер

Для языков программирования или технологий вроде XML, имхо, правильный учебник:

а) ни в коем случае не должен приближаться к reference manual. Иначе проще прочитать мануал.

б) ни в коем случае не должен разжевывать азы. Для этого есть буквари (ну или там, учебники по информатике для нулевого уровня).

в) должен давать общее представление о структуре предмета (основы синтаксиса, внешний вид программы) при помощи примеров.

г) должен концентрироваться на ключевых особенностях системы, не углубляясь в детали и отсылая к reference manual.

д) примеры должны быть краткими. Полные листинги программ мало кому нужны в книге.

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





(Ответить) (Thread)
[User Picture]From: avva
2004-08-16 01:24 pm
Если Вы такие учебники не читаете, то странно считать, что они такими должны быть ;)

Есть ли такой учебник (или учебное пособие, это необязательно должна быть книга, может даже быть длинный FAQ или серия статей или что угодно), который Вы предпочли бы прочесть вместо "обзорной статьи и reference"? Вот я считаю, что есть, несмотря на то, что я обычно тоже учу новые вещи по "обзорной статье и reference". Просто потом постфактум я понимаю, что было бы гораздо лучше, если бы какие-то важные и глубокие вещи мне объяснили сразу, вместо того, чтобы я осознавал их важность постепенно. Обзорная статья не может это дать; reference - тем более, кроме тех довольно редких случаев, когда reference сам оформлен в виде документа, помогающего изучить данный предмет.
(Ответить) (Parent) (Thread) (Развернуть)
From: (Anonymous)
2004-08-16 01:17 pm
Книжки по отдельным языкам, - малая часть компьютерных книжек.

Интересно, конечно, было бы послушать, кто читал какие хорошие книжки. Такие, что и перечитывать приятно.

Из языковых, очевидно, Керниган и Ричи по Си. Довольно неплох Строустрап по C++. Kent Dybvig on Scheme. А еще?

Из неязыковых. Про операционки неплох по охвату и точности, хотя и скучноват, Vahalia, _Unix Internals_. А вот Таненбаум в разных изданиях читабелен, на манер юмориста, но слишком тенденциозен и ненадежен.

Radia Perlman's _Internetworking_ совершенно замечательная.

Sedgewick про алгоритмы очень мил.

А больше?

Про распределенные системы вообще как-то ни разу удачных книжек не попадалось.
(Ответить) (Thread)
[User Picture]From: avva
2004-08-16 01:55 pm
По Джаве мне очень понравился Thinking in Java Экеля в своё время (есть бесплатно в PDF).
По Смоллтоку стандартная Smalltalk 80: The Language очень хороша.

Таненбаум мне тоже не понравился, а лучше ничего я так и не прочитал.

Надо ещё подумать и вспомнить.
(Ответить) (Parent) (Thread)
[User Picture]From: shmop
2004-08-16 01:17 pm
Учебники нужны для начинающих програмеров,человек с опытом и по Reference Manual разберется.
(Ответить) (Thread)
[User Picture]From: avva
2004-08-16 01:19 pm
Чепуха полная.
(Ответить) (Parent) (Thread)
[User Picture]From: yucca
2004-08-16 01:19 pm
А O'Reilly как?
(Ответить) (Thread)
[User Picture]From: avva
2004-08-16 01:26 pm
По-разному, но чаще хорошо, чем плохо. Но всё равно обычно оказывается слишком много воды на мой вкус. Более выгодным с точки зрения затрат времени и избежания скуки оказывается пойти к исходным RFC или другим стандартам.
(Ответить) (Parent) (Thread)
[User Picture]From: cema
2004-08-16 01:38 pm
Как раз по поводу Perl хотел сказать, что Programming Perl книжка классическая и хорошая для обучения (хотя и начинает с нуля).

Насчёт XML не знаю, не знаю. По одному стандарту не очень-то, надо бы и примеры посмотреть. Впрочем, без примеров всегда стрёмно.
(Ответить) (Thread)
[User Picture]From: tlkh
2004-08-16 01:52 pm
Конечно хорошо, чтобы учебник не разжевывал очевидные вещи и останавливался бы на сложных.
Проблема, к сожалению, одна - для одних очевидно одно, а сложно другое, и наоборот. Даже если накопленный багаж похож.

Разве не бывает так, что какая-то вроде бы очевидная вещь в руководстве ну никак не хочет пониматься?
(Ответить) (Thread)
[User Picture]From: avva
2004-08-16 02:00 pm
Бывает, но настолько чаще (в десятки или сотни раз) наоборот, что жаль потерянного зря на "воду" времени, а также скучно ведь.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: alll
2004-08-16 04:28 pm
есть проблема - для разных людей требуются разные точки на Вашей шкале, чтобы соответствовать "идеальному учебнику". А писать учебник под небольшую группу людей - накладно.

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

В идеале - "сетка", по одной координате - сложность, по остальным - области знания. Только трудоемко это. Разве что wikipedia эволюционирует - помимо широты приобретя глубину.
(Ответить) (Thread)
[User Picture]From: ifyr
2004-08-16 06:20 pm
Я предпочитаю учить язык или технологию следующим образом:

1) Прочитать высокоуровневый обзор, чтобы усвоить основные концепции. Это упрощает ориентацию в Reference.
2) Прочитать Reference (возможно, читать его по мере надобности, предварительно просмотрев для уяснения возможностей). Это дает представление о имеющихся в языке/технологии возможностях.
3) Читать продвинутую литературу, выхватывая из контекста общие принципы использования, и вникая в описываемые тонкости. Это дает хорошее понимание технологии, необходимое для ее эффективного использования.

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

Собственно, идеальный учебник в моем понимании состоит из этих трех частей (пропорция примерно 10/40/50).
(Ответить) (Thread)
[User Picture]From: avva
2004-08-16 07:00 pm
Да, в общих чертах согласен насчёт пропорции.
(Ответить) (Parent) (Thread)
[User Picture]From: msh
2004-08-16 09:47 pm
Мне очень нравятся учебники Bruce Eckel "Thinking in .."
(Ответить) (Thread)
[User Picture]From: avva
2004-08-17 02:02 am
Посмотрите на страницу отзывов в самом начале учебника Thinking in Java, первый отзыв ;)
(Ответить) (Parent) (Thread)
[User Picture]From: belkoff
2004-08-16 10:12 pm
Все гораздо проще:) Книги категории "чрезмерной разжованности" написанны ламерами, по природе своей склонных к писательству, но ничорта не понимающих в программировании и компьютерах.... а книги убивающие своим креативом в плане ознакомления с техническими сторонами процессов написаны крутыми программерами слабо представляющих себе таинство литературного творчества. Сочетание же первого и второго дарует истерзанным читателям радость познания слова печатного:)))
(Ответить) (Thread)
[User Picture]From: fantaseour
2004-08-16 10:25 pm

Наверное один хороший учебник

Случай относительно редкий. В идеале нужно 3 книжки:
1. Поверхностное введение-обзор
2. Продвинутый подробный-скучноватый мануал
3. Справочник.

Немного частностей. Вот для CSS -- очень хорошо (и достаточно) официального справочника w3c, так же, как и для HTML-XHTML. Официальный мануал по PHP -- тоже самодостаточная вещь включающая в себя все 3 пункта.

А вот XML по мануалу учить, ох уж очень он тягомотен и перегружен лингвистическими поределениями (что-то :: предмет1|предмет2...). Хорошей книжки я по XML так и не прочитал, но пары вводных-дурацких хватило, чтобы можно было официальный референс читать. По XSLT книжка Майкла Кея -- абсолютный маст рид.

По перлу мне очень нравились книжки O'Reilly, в то время как ман-страницы перла казались слишком невнятно организованными.
(Ответить) (Thread)
[User Picture]From: sarcastic
2004-08-16 10:35 pm
Раздражает следование рекомендации "сначала расскажите людям, о чем вы собираетесь рассказать, потом изложите материал, а потом расскажите, о чем вы только что рассказали". Причем эти преди- и послесловия присутствуют для раздела, потом для главы внутри этого раздела, потом для параграфа, и потом еще для каждого объясняемого примера. И при этом часто не выделяются в тексте никак. Такой подход оправдан при устном изложении материала, а в книге вызывает недоумение - можно же остановиться и перечитать еще раз суть, если не вполне понял.

Часто раздражают неабстрактные примеры. На полстраницы объяснение некой тонкости, а перед этим на страницу описание задачи, для решения которой нам полезна эта тонкость. Задача типа "Нам нужен класс, описывающий самолет. У него будут методы - летать, сидеть, стоять. Метод "летать" будет позволять ему летать итд." Такие примеры, конечно, иногда полезны, но мне всегда кажется, что их слишком много и что они перегружены деталями. Будто читатель - школьник, которому скучен сам предмет и которого надо развлекать отступлениями про машинки и зверюшек.

Оба эти момента кажутся просто погоней автора за большим объемом.
(Ответить) (Thread)
[User Picture]From: flaass
2004-08-17 12:01 am
Зависит еще от целей. Когда мне пришлось впервые в жизни набирать в ЛаТеХе статью, учебником служил "розеттский камень": аналогичная статья в ЛаТеХе и рядом в окончательном виде. Сбоку лежал Лампорт, но в него я начал заглядывать гораздо позже, когда суть уже усвоил.
А TeXBook Кнута читал уже совсем позже, в основном для интереса и наслаждения.

(Ответить) (Thread)
Страница 1 из 2
<<[1] [2] >>