avva: (Default)
[personal profile] avva
Большинство компьютерных учебников не нравятся мне потому, что они написаны слишком медленно и длинно, слишком долго всё разжёвывают для тупых или неопытных.

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

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

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

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

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

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

Date: 2004-08-16 12:35 pm (UTC)
From: [identity profile] http://users.livejournal.com/_krishulya_/
100% согласна :-)
Вот мой учебник по С# - где-то на отметке 68%

Date: 2004-08-16 01:31 pm (UTC)
From: [identity profile] merzavka.livejournal.com
Professional C# Wrox Press вполне пригоден. Впрочем, у меня не было времени читать его с начала до конца, доучиваю в процессе работы. Но как reference-вполне годится.

Date: 2004-08-16 12:37 pm (UTC)
From: [identity profile] monomyth.livejournal.com
А как же man?

+wikipedia

Date: 2004-08-16 12:41 pm (UTC)
From: [identity profile] avva.livejournal.com
Что man? man бывает разный. Wikipedia в последнее время сильно помогает, это верно. Но не всегда и не во всём. В том, что касается разных компьютерных технологий, сами статьи Википедии обычно слишком примитивны. Зато нередко хорошо подобраны ссылки на более продвинутые источники.

Совет =))

Date: 2004-08-16 12:50 pm (UTC)
From: [identity profile] dolton.livejournal.com
первое, хочешь большего -- читай маны и прилагаемую техническую доку, так все идеально подходит по определение идеального, посколько писалосьумными людьми.
второе, все, что не понимаешь -- узнавай у местных гуру или на форумах, форум -- самый лучший способ получить правильный ответ и даже больше, но если дорого время, а оно дорого -- вперед в ирку, желательно буржуйскую, я не хочу сказать, что у нас нет людей, есть конечно и самый лучшие, но там они всегда говорят по теме, а у нас любят пошутить, ну или просто висят трупами, а те малолетки, что сидят на каналах больше читирую книжки для чайников, чем могут реально помочь, а вот буржуи в самый раз в этом вопросе, и даже, если они не скажут все, чего нужно, то уж точно натолкнут на нужную идею.
Ну и последнее, читай литературу из серии (что-то за 24 часа) например C++ за 24 часа. Правда на русском я такое издание видел только один раз в Москве и не купил... Зато имею большую серию этих вещей на буржуйском в ПдФ =)) В сети их можно найти на ряде фтпшников, но лучше всего в осле пошарить... Там раскрывают кучу полезных тем. Будь то программирование, использование систем, администрирование, скрипты, БД или кропта. Это именно литература для быстрого и качественного изучения. Я еще не видел ни одной книги, где так правильно выделялись бы особо важные моменты и при этом на них не тратилось больше 10 минут собственного времени. Используй и радуйся.

dolton 2004

Re: Совет =))

Date: 2004-08-16 12:57 pm (UTC)
From: [identity profile] avva.livejournal.com
Книги "... за 24 часа" очень редко бывают качественными пособиями. На самом деле это очень зависит от автора; в подобных сериях ("за 24 часа", "за неделю", "за 21 день", "для чайников", "для полных идиотов" - их много есть) встречаются иногда очень хорошие книги, но это исключение, а не правило. Вся идея этих серий направлена против этого, и результат обычно соответствующий.

Re: Совет =))

Date: 2004-08-16 01:03 pm (UTC)
From: [identity profile] dolton.livejournal.com
Я не говорю про "21 день" или еще что-то, я говорю именно про эту серию... Это далеко не для чайников, для использования этой книги нужна определенная база знаний, причем не именно по этому вопросу. Книга начинается с основ по данной технологии, но она не расчитана на людей с 0-ым уровнем развития... Например чтоб изучать книги этой серии по програмировани нужно мыслить почти как компилятор. Вообщем просто попробуй. Я попробовал и теперь для меня нет ничего лучше, особенно когда нужно изучить что-то новое.

Date: 2004-08-16 01:07 pm (UTC)
From: [identity profile] xxqs.livejournal.com
добрый вечер

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

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

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

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

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

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

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





Date: 2004-08-16 01:24 pm (UTC)
From: [identity profile] avva.livejournal.com
Если Вы такие учебники не читаете, то странно считать, что они такими должны быть ;)

Есть ли такой учебник (или учебное пособие, это необязательно должна быть книга, может даже быть длинный FAQ или серия статей или что угодно), который Вы предпочли бы прочесть вместо "обзорной статьи и reference"? Вот я считаю, что есть, несмотря на то, что я обычно тоже учу новые вещи по "обзорной статье и reference". Просто потом постфактум я понимаю, что было бы гораздо лучше, если бы какие-то важные и глубокие вещи мне объяснили сразу, вместо того, чтобы я осознавал их важность постепенно. Обзорная статья не может это дать; reference - тем более, кроме тех довольно редких случаев, когда reference сам оформлен в виде документа, помогающего изучить данный предмет.

Date: 2004-08-16 01:38 pm (UTC)
From: [identity profile] xxqs.livejournal.com
трудно сказать, из свежих примеров вспоминается, пожалуй, CSS. Для вот этого (http://rrfwdemo.tbw.ch) я взял готовый шаблон с bluerobot.com, reference в зубы, и давай последовательными приближениями править что не нравится. Возможно, прочитав правильную книжку страниц в 100-150, я в итоге потратил бы меньше времени. Только книжки под рукой не было, и ехать в книжный магазин не хотелось. Так я где-то за 3-5 дней его освоил.

С удовольствием прочитал бы что-нибудь фундаментальное про организацию проектов. Только времени всегда не хватает...

Date: 2004-08-16 01:17 pm (UTC)
From: (Anonymous)
Книжки по отдельным языкам, - малая часть компьютерных книжек.

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

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

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

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

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

А больше?

Про распределенные системы вообще как-то ни разу удачных книжек не попадалось.

Date: 2004-08-16 01:55 pm (UTC)
From: [identity profile] avva.livejournal.com
По Джаве мне очень понравился Thinking in Java Экеля в своё время (есть бесплатно в PDF).
По Смоллтоку стандартная Smalltalk 80: The Language очень хороша.

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

Надо ещё подумать и вспомнить.

Date: 2004-08-16 03:26 pm (UTC)
From: (Anonymous)
> Интересно, конечно, было бы послушать, кто читал какие хорошие книжки.

"Design and Evolution of C++" - книга не просто "как", а еще и "почему" и какие альтернативы рассматривались.

Date: 2004-08-16 01:17 pm (UTC)
From: [identity profile] shmop.livejournal.com
Учебники нужны для начинающих програмеров,человек с опытом и по Reference Manual разберется.

Date: 2004-08-16 01:19 pm (UTC)
From: [identity profile] avva.livejournal.com
Чепуха полная.

Date: 2004-08-16 01:30 pm (UTC)
From: (Anonymous)
да ну, человек с опытом ваще манюалы не читает, ему внутренних сообщений компилятора достаточно. Ну, в крайнем случае исходников или деассемблированного кода системы.

Date: 2004-08-16 01:19 pm (UTC)
From: [identity profile] yucca.livejournal.com
А O'Reilly как?

Date: 2004-08-16 01:26 pm (UTC)
From: [identity profile] avva.livejournal.com
По-разному, но чаще хорошо, чем плохо. Но всё равно обычно оказывается слишком много воды на мой вкус. Более выгодным с точки зрения затрат времени и избежания скуки оказывается пойти к исходным RFC или другим стандартам.

Date: 2004-08-16 01:58 pm (UTC)
From: [identity profile] maxvt.livejournal.com
Обычно хорошие книги. Например, CSS: The Definitive Guide у меня вообще настольная книга, то есть используется почти ежедневно :)

Date: 2004-08-16 02:07 pm (UTC)
From: [identity profile] avva.livejournal.com
А учить по ней CSS с нуля хорошо? "Воды" не слишком много? Я совсем не знаю CSS, и как раз ищу что-нибудь хорошее.

Date: 2004-08-16 02:30 pm (UTC)
From: [identity profile] etonei.livejournal.com
Я когда-то разбирался вот по этому:
http://webmonkey.wired.com/webmonkey/98/15/index0a.html

(когда надо было что-то сделать БЫСТРО :) )

Вообще, CSS, на мой взгляд, не лучший пример для обсуждения учебников - ничего особо глубокого и тонкого там нет, его действительно можно по reference учить.
Хотя, может что и изменилось - я этим последний раз занимался года четыре назад...

Date: 2004-08-19 12:43 pm (UTC)
From: [identity profile] maxvt.livejournal.com
Я учил CSS по ней почти с нуля (но с трехлетним опытом дизайна уже), училось хорошо. "Вода" есть кое-где, но не переходит в категорию "книги для чайников".

Проблема с СSS в том, что там постоянно выявляются новые баги и появляются новые способы их обхода, да и то, что "по спецификации" должно бы работать, иногда отказывается при определенных условиях. Конечно, никакая буиажная книга за этим не уследит...

Date: 2004-08-16 01:38 pm (UTC)
From: [identity profile] cema.livejournal.com
Как раз по поводу Perl хотел сказать, что Programming Perl книжка классическая и хорошая для обучения (хотя и начинает с нуля).

Насчёт XML не знаю, не знаю. По одному стандарту не очень-то, надо бы и примеры посмотреть. Впрочем, без примеров всегда стрёмно.

Date: 2004-08-16 01:52 pm (UTC)
From: [identity profile] tlkh.livejournal.com
Конечно хорошо, чтобы учебник не разжевывал очевидные вещи и останавливался бы на сложных.
Проблема, к сожалению, одна - для одних очевидно одно, а сложно другое, и наоборот. Даже если накопленный багаж похож.

Разве не бывает так, что какая-то вроде бы очевидная вещь в руководстве ну никак не хочет пониматься?

Date: 2004-08-16 02:00 pm (UTC)
From: [identity profile] avva.livejournal.com
Бывает, но настолько чаще (в десятки или сотни раз) наоборот, что жаль потерянного зря на "воду" времени, а также скучно ведь.

Date: 2004-08-17 01:01 am (UTC)
From: [identity profile] tlkh.livejournal.com
Я стараюсь покупать учебники с небольшим запасом воды. На всякий случай.

Date: 2004-08-16 04:28 pm (UTC)
From: [personal profile] alll
есть проблема - для разных людей требуются разные точки на Вашей шкале, чтобы соответствовать "идеальному учебнику". А писать учебник под небольшую группу людей - накладно.

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

В идеале - "сетка", по одной координате - сложность, по остальным - области знания. Только трудоемко это. Разве что wikipedia эволюционирует - помимо широты приобретя глубину.

Date: 2004-08-16 06:20 pm (UTC)
From: [identity profile] ifyr.livejournal.com
Я предпочитаю учить язык или технологию следующим образом:

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

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

Собственно, идеальный учебник в моем понимании состоит из этих трех частей (пропорция примерно 10/40/50).

Date: 2004-08-16 07:00 pm (UTC)
From: [identity profile] avva.livejournal.com
Да, в общих чертах согласен насчёт пропорции.

Date: 2004-08-16 09:47 pm (UTC)
From: [identity profile] msh.livejournal.com
Мне очень нравятся учебники Bruce Eckel "Thinking in .."

Date: 2004-08-17 02:02 am (UTC)
From: [identity profile] avva.livejournal.com
Посмотрите на страницу отзывов в самом начале учебника Thinking in Java, первый отзыв ;)

Date: 2004-08-16 10:12 pm (UTC)
From: [identity profile] belkoff.livejournal.com
Все гораздо проще:) Книги категории "чрезмерной разжованности" написанны ламерами, по природе своей склонных к писательству, но ничорта не понимающих в программировании и компьютерах.... а книги убивающие своим креативом в плане ознакомления с техническими сторонами процессов написаны крутыми программерами слабо представляющих себе таинство литературного творчества. Сочетание же первого и второго дарует истерзанным читателям радость познания слова печатного:)))
From: [identity profile] fantaseour.livejournal.com
Случай относительно редкий. В идеале нужно 3 книжки:
1. Поверхностное введение-обзор
2. Продвинутый подробный-скучноватый мануал
3. Справочник.

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

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

По перлу мне очень нравились книжки O'Reilly, в то время как ман-страницы перла казались слишком невнятно организованными.

Date: 2004-08-16 10:35 pm (UTC)
From: [identity profile] sarcastic.livejournal.com
Раздражает следование рекомендации "сначала расскажите людям, о чем вы собираетесь рассказать, потом изложите материал, а потом расскажите, о чем вы только что рассказали". Причем эти преди- и послесловия присутствуют для раздела, потом для главы внутри этого раздела, потом для параграфа, и потом еще для каждого объясняемого примера. И при этом часто не выделяются в тексте никак. Такой подход оправдан при устном изложении материала, а в книге вызывает недоумение - можно же остановиться и перечитать еще раз суть, если не вполне понял.

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

Оба эти момента кажутся просто погоней автора за большим объемом.

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

Date: 2004-08-17 01:49 am (UTC)
From: [identity profile] sobranna.livejournal.com
Мне не попадалось еще хорошего учебника по котрому можно было бы выучить что-то "с нуля". А вот если уже сделано "человеческое" введение, то все остальное можно разобрать по учебнику 50% и выше. Возможно у меня еще все впереди 8))))

Date: 2004-08-17 03:08 am (UTC)
nine_k: A stream of colors expanding from brain (Default)
From: [personal profile] nine_k
1) в целом согласен, особенно насчёт скорости.

2) иногда полезно прочитать книжку по технологии, в которой 80-90% материала тебе знакомо, не толко затем, чтобы узнать недостающие 10-20% тонкостей, но и для того, чтобы увидеть взаимосвязи знакомого, которые раньше не были очевидны.

Date: 2004-08-17 04:03 am (UTC)
From: [identity profile] photon.livejournal.com
Я-бы не стал Reference Manual и учебники на одно измерение ставить, но это философия.

Есть книги, которые читаются как художественная литература (если читателю предмет интересен, конечно). Таких единицы и они как правило не являются полноценным учебником, а скорее концентрируются на достаточно продвинутой теме. Как пример могу порекомендовать "Modern C++ Design" Alexandrescu - эта книга открыла для меня целый пласт языка с которым я считал себя знакомым достаточно хорошо.

Еще мне нравится подход "[More] Effective C++" Meyers: набор автономных небольших статей для людей знакомых с материей в целом. Когда интересует конкретный вопрос - читаешь соответсвующую статью и получаешь достаточно глубокое понимание достаточно узкой темы.

Линейно мыслите,

Date: 2004-08-17 11:42 am (UTC)
From: [identity profile] strepetaa.livejournal.com
уважаемый Avva. Хорошая компьютерная книга вообще не лежит на той шкале, которую Вы описали. Она всегда в стороне. Сдвинута по другой координате.

Date: 2004-08-17 11:56 am (UTC)
From: [identity profile] avva.livejournal.com
Это, простите, пустые слова.

Date: 2004-08-17 02:13 pm (UTC)
From: [identity profile] strepetaa.livejournal.com
Вы имеете в виду, что они не подкреплены примерами? Разумеется, у меня есть и примеры, во множестве. Я связан с компьютерными книгами по роду деятельности и много думал на эти темы. Интересно было подискутировать, почему и написал свой коммент - для затравки. Но после Вашей реакции дискутировать как-то расхотелось.

Date: 2004-08-17 02:32 pm (UTC)
From: [identity profile] avva.livejournal.com
Простите, но какая же это затравка, если Вы, по сути дела, говорите
просто: "всё не так, и вы ничего не понимаете", не подтверждая это
никакими аргументами? И это притом, что я специально в записи
подчеркнул, что понимаю, что моя шкала значительно упрощает реальность,
которая более сложна. Казалось бы, отсюда следует, что повторить, что
она упрощает - значит ничего нового не сказать, а чтобы сказать что-то
новое, нужно привести какие-то аргументы, убеждающие, что она
слишком упрощает, и что "не в этом суть".

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

February 2026

S M T W T F S
1 2 3 4 5 67
8 9 10111213 14
15 16 17 18192021
2223 2425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 25th, 2026 12:33 am
Powered by Dreamwidth Studios