
Книги, меняющие нашу жизнь
Книги, о которых пойдет речь в этой статье – не просто книги. Это то, что относится к классике computer science. Но это совсем не значит, что они представляют собой лишь историческую ценность. Напротив, это бессмертные произведения. Они переиздаются и будут переиздаваться еще много лет. Так зачем же я решил о них рассказать? А затем, что сейчас в мире не существует компьютерного специалиста (профессионала), а тем более хакера (настоящего хакера, а не сетевого подонка), который не читал бы этих книг (ну или основную их часть).
Как сейчас большинство молодых мечтателей о хакерской карьере получают свои знания? Читают на так называемых «хакерских» сайтах инструкции и статьи, типа «Как стать хакером за 2 часа», а также слушают советы своих, может быть, чуть старших, коллег. Конечно, повторяя сказанное и написанное без всякого понимания сути, можно наделать немало опасных для окружающих дел. Но цена такому «хакеру» невелика, т.к. без посторонней поддержки (без чужого эксплойта, утилиты, найденной дыры и пр.) он окажется совершенно беспомощным. Книги, о которых ты сейчас узнаешь, дают прочный фундамент знаний и позволяют не зависеть от кого бы то ни было. Они учат самостоятельно думать, творить, изобретать и создавать что-то новое.
Конечно, количество книг, о которых я хотел бы рассказать, значительно превышает рамки одной статьи, поэтому отобраны лишь самые «сливки». Причем, все они недавно были переизданы на русском языке.
Также я старался располагать книги в том порядке, в каком их лучше всего изучать. Однако не могу утверждать, что такое расположение является единственно верным. Кроме того, не исключено, что часть книг ты уже прочитал (по крайней мере, я хотел бы на это надеяться).
Не стоит думать, что чтение этих книг сразу сделает из тебя «гуру хака». Они совершенно не избавляют тебя от чтения документаций, RFC, мануалов и прочих книг (чем больше их будет, тем лучше), а также от собственных экспериментов и исследований. Что ж, наберись терпения - и поехали!
Эндрю Таненбаум «Современные операционные системы»
Я не зря поставил книгу Эндрю Таненбаума на первое место, не только потому, что он всемирно известный и титулованный преподаватель (профессор), а потому, что он, как никто другой умеет вдохновлять на великие подвиги. Ведь именно Эндрю Таненбауму весь мир должен быть благодарен за появление на свет Linux! Да, именно на основе учебной операционной системы MINIX, созданной Эндрю Таненбаумом, и его же книги Operating Systems: Design and Implementation («Проектирование и реализация операционных систем») Линус Торвальдс смог написать свою операционку. И не будь книги Таненбаума, сейчас, возможно, мир не узнал бы об этом простом молодом человеке из Финляндии. Вот что пишет сам Линус в своей книге «JUST FOR FUN. Рассказ нечаянного революционера» (кстати, советую прочитать, если ты еще этого не сделал):
«У каждого есть книга, которая перевернула его жизнь. Священная Библия. «Капитал». «Вторники с Мори». «Все, что мне нужно, я узнал в детском саду». У каждого своя. Меня лично вдохновила на подвиги «Проектирование и реализация операционных систем» Эндрю С. Таненбаума». И там же: «...летом я делал две вещи: бездельничал и читал «Проектирование и реализацию операционных систем». Эти 719 страниц в мягком красном переплете, можно сказать, поселились у меня в постели».
Заметь, Линус точно помнит число страниц книги, хотя прошло уже больше 10 лет! И хотя между Линусом и Таненбаумом произошел небольшой конфликт в самом начале истории Linux, в Just for Fun видно, что Линус несмотря ни на что с почтением и уважением относится к своему «учителю».
Российское издательство «Питер» не так давно выпустило замечательную серию книг с недвусмысленным названием «Классика computer science» (рекомендую!), в которой вышли почти все книги Эндрю Таненбаума (он автор пяти книг). Но, к сожалению, именно «Проектирование и реализацию операционных систем» российское издательство по непонятной причине не стало издавать. Я дважды отсылал им запрос, где интересовался, будет ли издана эта книга на русском языке, но ответа так и не получил. Не исключено, что когда ты будешь читать эту статью, книга все-таки появится в продаже на русском языке. Но, как я уже сказал, издательство «Питер» издало все остальные книги Эндрю Таненбаума, и самая яркая из них, конечно же, «Современные операционные системы». Книга очень легко читается, охватывает широкий круг тем - от процессов и потоков до графических интерфейсов пользователя, мультимедиа и управления энергопотреблением переносных компьютеров, и в то же время достаточно глубокая. Каждая глава снабжена занимательными задачами и упражнениями. По словам самого автора, эта книга является своего рода теоретическим введением, когда как «Проектирование и реализация операционных систем» предназначена для практических занятий (интервью с Эндрю Таненбаумом можно посмотреть на русском здесь: www.fcenter.ru/articles.shtml?interview/7706). Так что эти две книги должны прекрасно дополнять друг друга.
Было бы несправедливо не упомянуть остальные книги Таненбаума: «Компьютерные сети», «Распределенные системы. Принципы и парадигмы», «Архитектура компьютера». Если есть возможность, прочитай их все. И может быть, твое имя со временем станет не менее знаменитым, чем сейчас имя Торвальдса.
Б.Кернинган, Д.Ричи "Язык программирования C"
Поверь мне, если и изучать Си, то именно по этой книге, от самих создателей знаменитого языка. Первое издание книги вышло в конце 70-х годов XX века и сразу же стало мировым бестселлером. Именно благодаря книге Кернигана и Ричи мир узнал и полюбил этот язык. Второе издание соответствует стандарту ANSI C. Повествование ведется в расчете на операционную систему UNIX, для которой этот язык родной, поэтому знание *nix, хотя бы на уровне пользователя, не повредит. На русском языке эта книга переиздавалась три раза, третье русское издание соответствует второму английскому. Несмотря на то, что в Сети легко можно найти как первое, так и второе издание Кернигана и Ричи, я все-таки советую приобрести бумажный вариант. Во-первых, первое издание в Сети часто выдается за второе (а я в настоящий момент не рекомендую читать первое издание), во-вторых, в электронных изданиях нередко отсутствуют второстепенные, но от этого не менее важные абзацы и даже целые главы. Сам я в свое время изучал Си по электронному изданию, о чем впоследствии пожалел.
У.Р.Стивенс «UNIX разработка сетевых приложений»
Можно долго говорить о том, какая это замечательная книга и насколько знаменит ее автор, но проще обратиться к Phrack 55-04. Там, в рубрике Prophile, редактор журнала (тогда route) с упоением описывает, как он с 1992 года читал и перечитывал почти все издания книг Стивенса. В 55 номере Phrack должно было появиться интервью с автором, но, к сожалению, интервью взять не успели, т.к. Ричард Стивенс ушел из жизни (1999 год). По непонятной причине до сих пор книги этого прекрасного автора на русском языке не издавались, да и к моменту написания статьи были переведены всего две его книги: «UNIX разработка сетевых приложений» и «UNIX взаимодействие процессов», за бортом остались такие вещи как:
- Advanced Programming in the Unix Environment
- TCP/IP Illustrated, vol. 1 (Перевод первой части есть, только он ходит под названием «TCP/IP крупным планом»)
- TCP/IP Illustrated, vol. 2
- TCP/IP Illustrated, vol. 3
Огорчает еще тот факт, что компьютерный мир не стоит на месте, и каждый год происходят какие-нибудь изменения. А т.к. развитием книг после смерти Стивенса заниматься некому, то они начинают постепенно устаревать.
Ларри Уолл, Том Кристиансен, Джон Орвант «Программирование на Perl»
Ларри Уолл - создатель языка Perl и координатор по его дальнейшему усовершенствованию. Соответственно, книга, написанная им в соавторстве с двумя другими замечательными авторами, является самой настоящей библией языка Perl, или, как написано на обложке самой книги, «Отчасти библия, отчасти энциклопедия, отчасти альманах, - это лучшая книга о Perl». Достаточно сказать, что объем последнего, третьего издания книги на русском языке составил 1150 страниц! За этой книгой навсегда закрепилось неофициальное название Camel book – благодаря животному на обложке, помещенному туда американским издательством O’REILLY.
Кэмел бук отлично подходит как для начинающих в качестве учебника, так и для продвинутых кодеров в качестве справочника по Perl.
Бьерн Страуструп "Язык программирования C++"
Эта книга, так же, как и предыдущая, написана самим автором языка. А кто, как не создатель, может лучше рассказать о своем языке?! Правда, развитием C++ занято настолько много людей, что сам Страуструп признается, что постоянно открывает для себя что-то новое в своем же языке :). Не зря С++ по праву считается одним из самых сложных языков программирования современности! Так что, несмотря на большой объем, книга Страуструпа является лишь введением в C++. Поэтому, чтобы вникнуть язык глубже, необходимо прочитать множество дополнительных книг, например: «Эффективное использование С++» (Скотт Мейерс), «Современное проектирование на С++» (Андрей Александреску), «Дизайн и эволюция языка С++» (Бьерн Страуструп) и т.д.
Что касается «Языка программирования C++», то самым последним его изданием (на момент написания статьи) является так называемое «специальное издание». Для русского издания Страуструп даже написал введение. В Сети можно найти 3-е и 2-е издания этой книги. Я категорически не советую их читать – это уже устаревшая информация. Не забывай, что С++ развивается очень динамично.
Хочу заметить, что, на мой взгляд (и не только на мой), книга Страуструпа сложна в понимании. Не зная основ программирования и языка Си, понять ее совершенно невозможно. Поэтому пытаться выучить этот язык одним из первых я бы не советовал. Однако лучшего введения в C++ не существует.
Джеффри Рихтер «Создание эффективных Win32-приложений»
Джеффри Рихтер — уникальный человек, известный преподаватель и научный консультант в области программирования для Windows. Его услугами пользуется сама компания Microsoft!
Для чтения книги Рихтера тебе понадобится знание С++ (Microsoft Visual C++). После изучения книги ты однозначно станешь специалистом в области разработки приложений для Windows. Из книги ты подробно узнаешь о внутреннем устройстве Windows 98 и 2000 (с учетом 64-разрядной версии) и изучишь Win API. Лучшей книги по программированию под Windows, пожалуй, не существует. Но она явно не для начинающих.
В дополнение к книге Рихтера для более детального изучения устройства Windows я советую прочитать Inside Windows 2000 («Внутреннее устройство Windows 2000») Соломона и Руссиновича.
Дональд Кнут «Искусство программирования»
Дональд Кнут один из самых знаменитых классиков в области программирования. Чтобы долго не говорить о важности этой книги, приведу лишь слова Билла Гейтса: «Если вы считаете себя действительно хорошим программистом..., прочитайте «Искусство программирования» [Кнута]... Если вы сможете прочесть весь этот труд, то вам определенно следует отправить мне резюме».
«Искусство программирования» на данный момент состоит из 3 томов, но уже в течение многих лет ведется работа над 4 и 5 томами. Над первым изданием книги, которое вышло в 1972 году, автор потел (лучшего слова здесь не подберешь) 10 лет! Первое издание было напечатано и в СССР, и сразу стало настольной книгой большинства отечественных программистов (многие из которых впоследствии «утекли» за границу). Отрывки из первого издания сейчас можно найти на www.lib.ru. Для выпуска третьего издания Дональд Кнут специально разработал знаменитые системы набора METAFONT и TеX. Чувствуется, что автор основательно подошел к написанию и изданию книги, он даже готов заплатить $2,56 тому, кто первым найдет опечатку или ошибку в его книге (имеется в виду оригинальное издание). Но должен сказать, что эта книга очень тяжелая в чтении, и, пожалуй, самая сложная из всех книг, представленных в этом обзоре. Написанная в серьезном академическом стиле, она требует хорошей математической подготовки, причем как по элементарной математике, так и по высшей. Все примеры приведены на ассемблере (так что знание его не помешает), причем на ассемблере, который специально был разработан автором для гипотетической (выдуманной) машины MIX. Если школьник сумеет понять эту книгу, то его можно считать гением.
Кроме того, книга рассчитана на подготовленного читателя, т.е. на того, кто имеет хотя бы небольшой опыт программирования. Автор так и пишет: «Читатель должен иметь опыт написания и отладки по меньшей мере четырех программ хотя бы для одного компьютера» :).
Альфред Ахо, Рави Сети и Джеффри Ульман "Компиляторы: Принципы, технологии, инструменты"
Помнишь, в фильме «Хакеры» Эммануэль Гольдштейн в баре доставал из своего рюкзака книги и выкладывал их на стол: «Желтая, Зеленая, Оранжевая...», была названа и эта книга - «Книга Дракона» (Dragon Book)! И неспроста. Книга (как и ее авторы) является одной из самых авторитетных в своей области. Российским читателям авторы «Дракона» известны еще с эпохи СССР! Оригинал «Книги Дракона» впервые вышел в 1988 году. Последнее издание отражает все современные достижения в области создания компиляторов языков программирования. Но «Книга Дракона» не единственная в своем роде. Не менее знаменитой является и книга Пратта и Зелковица «Языки программирования: разработка и реализация». Она также недавно была выпущена издательством «Питер» в уже упоминавшейся серии «Классика computer science». Сложно сказать, какая из двух книг лучше, поэтому, при возможности, прочитай их обе.
Итог
Конечно, это далеко не все книги, о которых мне хотелось бы рассказать в этом обзоре, но и этот неполный список обеспечит тебе не один месяц (год?) увлекательного чтения. По приблизительной оценке, то, что я назвал, тянет на несколько кило рублей. Дорого? Это намного меньше, чем полгода обучения в любом даже самом захудалом вузе. Но сможет ли вуз дать то, что могут дать эти книги? Очень сомнительно, даже если вуз для тебя не просто возможность получить диплом в рассрочку.
Переведенная книга: зло или добро?
Среди отечественных компьютерных спецов бытует мнение, что переведенные книги это зло, и лучше читать их в оригинале. С этим трудно спорить, если ты отлично владеешь английским. Но и у «русифицированных» изданий есть неоспоримые преимущества. Самое главное из них - это, конечно же, цена. Переведенная книга всегда продается дешевле оригинала! Например, «Современные операционные системы» Таненбаума издательство «Питер» оценило в 525 рублей, тогда как оригинал на www.amazon.com продается за $96 (почему так происходит, тебе лучше поинтересоваться в самих издательствах)! Кроме того, если перевод делал грамотный переводчик, то он всегда вставит свои ценные замечания в текст книги и исправит ошибки, допущенные автором (ну и, естественно, добавит свои :)). К сожалению, в последнее время над переводами книг работают непрофессионалы, либо у них не хватает времени на тщательную вычитку текста. Частенько русские издания просто кишат опечатками и глюками.
Где купить книги в интернете?
Сейчас появилось множество различных интернет-магазинов, торгующих литературой с большим разбросом цен. Причем, как на сам товар, так и на стоимость доставки (это особенно актуально для тех, кто живет в регионах). Быстро получить информацию о наличии нужных книг в большинстве интернет-шопов и сравнить их цены (с учетом и без учета доставки) можно на сайте books.dore.ru. Достаточно ввести в поле ввода название нужной книги.
INFO
Практически все перечисленные книги можно найти в интернете в электронном виде.
INFO
Москвичам повезло. Вся компьютерная литература продается в следующих магазинах: «Молодая Гвардия» на Полянке, «Библио-Глобус» на Лубянке, «Педкнига» на Охотном ряду.
|