*

1. Научитесь программировать.
Это, конечно же, фундаментальный хакерский навык. Если вы не знаете ни одного компьютерного языка, я рекомендовал бы начать с языка Python ещё есть Русскоязычный сайт. Он аккуратно разработан, хорошо документирован и сравнительно доброжелателен к новичкам. Несмотря на то, что он хорош как первый язык, это не просто игрушка. Это очень мощный и гибкий язык, хорошо подходящий для больших проектов.

Java - тоже хорош для изучения программирования. Он сложнее, чем Python, но генерирует более быстрый код. Мне кажется, что он может стать прекрасным вторым языком.

Но знайте, что вы не достигнете хакерского уровня мастерства (или даже просто уровня хорошего программиста), если будете знать лишь один или два языка. Вам необходимо научиться мыслить об алгоритмических проблемах вообще, независимо от языка программирования. Чтобы быть настоящим хакером, вам надо достичь уровня, на котором вы сможете выучить новый язык за несколько дней, соотнося положения руководства с тем, что вам уже известно. Это означает, что вам следует выучить несколько очень разных языков.

Если соберётесь заниматься серьёзным программированием, то вам придется выучить Си, основной язык операционной системы Unix. C++ также родственен Си. Хотя ни то ни другой не являются языками, с которых стоит начинать.

Другие языки первостепенной важности для хакеров - это Perl и LISP. Язык Perl имеет смысл выучить из практических соображений: он очень широко используется для активных web-страниц и системного администрирования, так что даже если вам никогда не придется писать на Perl, вы должны научиться его читать. LISP стоит выучить хотя бы ради тех глубоких познаний, которые вы обретете, когда наконец поймёте его. Эти познания сделают вас прекрасным программистом на всю оставшуюся жизнь, даже если вы никогда особо и не будете использовать сам LISP (Первоначальные навыки программирования на LISP можно достаточно легко получить, создавая и модифицируя расширения текстового редактора Emacs).

Лучше всего, на самом деле, выучить все четыре этих языка (Python, C/C++, Perl, и LISP). Помимо того, что это самые важные хакерские языки, они демонстрируют очень разные подходы к программированию и каждый из них научит вас ценным вещам.

Я не могу дать здесь развернутые инструкции относительно того, как научиться программировать, - это сложное искусство. Но я могу сказать вам, что книги и курсы этому не научат (многие, возможно, большинство лучших хакеров - это самоучки). Что на самом деле может научить программированию, так это (а) чтение исходного кода и (б) написание исходного кода .

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

Отыскать хорошие исходные тексты для изучения раньше было сложно, потому что было очень мало больших программ, доступных в исходных текстах и пригодных для изучения и экспериментов юных хакеров. Теперь ситуация кардинально изменилась: программы в исходных текстах, средства разработки и целые операционные системы (всё это создано хакерами) теперь широко доступны. Что подводит меня прямо к следующему разделу...
2. Достаньте один из вариантов Unix в исходных текстах, научитесь его использовать и с ним работать.
Я полагаю, что вы имеете персональный компьютер или можете получить к нему доступ (сегодня этим ребятам всё достается так легко :-)). Единственный и самый важный шаг, который любой из новичков может предпринять для приобретения хакерских навыков, - это раздобыть копию Linux или одной из версий BSD-Unix, установить ее на своём компьютере, и использовать её.

Да, в мире есть и другие операционные системы помимо Unix. Но их распространяют в скомпилированных машинных кодах - вы не сможете легко изучать эти коды, и тем более не сможете их модифицировать. Учиться хакерству на машинах, работающих под DOS, Windows или MacOS - это все равно что учиться танцевать, будучи полностью загипсованным.

Правда, под MacOS/X это возможно, но в исходных текстах доступна только часть системы, так что вполне возможно, что вы наткнётесь на много стен, и вам придётся выработать в себе неприятную зависимость от пропритарного кода Apple. Хотя, если вы сконцентрируете своё внимание на Unix, лежащей в её основе, вы сможете кое чему научится.

Кроме того, Unix - это операционная система Интернета. Хотя вы можете научиться использовать Интернет и не зная Unix, вы не сможете быть Интернет-хакером, не понимая Unix. По этой самой причине сегодняшняя хакерская культура является весьма сильно Unix-сконцентрированной. (Это не всегда было так, и некоторым из прежних хакеров такое положение дел не очень нравиться, но симбиоз между Unix и Интернетом стал настолько прочен, что даже сил Microsoft не хватает, чтобы серьезно на это влиять.)

Так что установите себе Unix - мне самому нравится Linux, но есть и другие варианты (тем более, что вы можете работать как под Linux, так и под DOS/Windows на одной и той же машине). Выучите эту ОС. Работайте с ней. Экспериментируйте с ней. Общайтесь через неё с Интернетом. Читайте исходные тексты. Модифицируйте их. Вы получите такой богатый программистский инструментарий (включая Python, C, Lisp и Perl), о котором любая из ОС фирмы Microsoft и не мечтала. Вы получите массу удовольствия, и усвоите гораздо больше знаний, чем предполагали в процессе обучения, и поймёте это, когда взгянете на вась этот процесс уже будучи мастером-хакером.

Для дополнительной информации об изучении Unix см. The Loginataka.

Чтобы заполучить в свои Linux, см. Where can I get Linux ("Где мне взять Linux").
3. Научитесь использовать World Wide Web и писать на HTML.
Большинство из тех вещей, что созданы хакерской культурой, делают свое дело невидимо, помогая работать фабрикам, учреждениям и университетам без сколь-нибудь заметного влияния на жизнь не-хакеров. Web - это одно большое исключение, гигантская блестящая хакерская игрушка, которая даже по признанию политиков изменяет мир. Лишь по одной этой причине (а также и множеству других приятных причин) вам следует научиться работать с Web.

Это не означает, что достаточно просто научиться управляться с обозревателем (это любой умеет), это значит, что вы должны научиться писать на HTML, языке разметки документов Web. Если вы еще не умеете программировать, то писание на HTML обучит ваше мышление некоторым полезным привычкам, которые пригодятся при освоении языков программирования. Так что делайте свою домашнюю страничку. Попробуйте XHTML, который более аккуратно проработан чем классический HTML. (Есть много инструкций для начинающих в Web; вот одна из них.)

Но простое обладание домашней страничкой даже и близко не подведёт вас к тому, чтобы стать хакером. В Web полным-полно домашних страничек. Большинство из них - это бессмысленный, бесполезный хлам. Крайне броско и привлекательно оформленный хлам, не спорю, но всё равно хлам (подробнее об этом см. страничку "Ад HTML" -The HTML Hell Page).

Чтобы быть стоящей, ваша страничка должна иметь "контент" - содержание. Она должна быть интересной и / или полезной для других хакеров. А это подводит нас к следующему разделу...

4. Если вы не знаете Английский, изучите его.
Будучи американцем и англоязычным автором, я раньше старался избегать подобных предложений, чтобы они не воспринимались как культурный империализм. Но некоторые люди, говорящие на других языках, настояли на том, чтобы я упомянул, что английский - это действующий язык хакерской культуры и Интернета, и что вам придётся изучить его, чтобы принимать участие в хакерском сообществе.

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

Линус Торвальдс, будучи финном, комментирует свой код на английском (никогда не было замечено за ним обратное). Его знание английского языка было одним из важнейших факторов в его способности привлечь разработчиков со всего мира для работы над ядром Linux. Этим примером стоит воспользоваться.

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

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

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

Есть пять основных типов вещей, которые вы можете делать, чтобы вас уважали хакеры:

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

Мы привыкли называть эти программы "свободным программным обеспечением" (free software), но это привело в замешательство очень многих людей, точно не понимавших, что подразумевалось под словом "свободное". Всё дело в том, что в английском языке слово "free" используется как для слова "свобода" так и слова "бесплатно". Поэтому очень часто для такого программного обеспечения предпочитают использовать термин "с открытым исходным текстом" или "open-source software". Впрочем, в России в ходу оба термина. Мы знаем разницу между свободой и бесплатным куском сыра.

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

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

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

3. Публикуйте полезную информацию.
Еще одна хорошая вещь - отбирать и накапливать полезную и интересную информацию на Web-страницах или документах типа ЧаВО (FAQ или "часто задаваемые вопросы и ответы"), и делать их общедоступными.

Ведущие основных технических ЧаВО почти столь же уважаемы, как и авторы программ с открытым исходным кодом.

4. Помогайте поддерживать работу инфраструктуры.
Хакерская культура (и инженерное развитие Интернет, к слову сказать) основана на добровольцах. Имеется масса необходимой, но не особо эффектной работы, которую нужно делать, чтобы поддерживать процесс: администрирование списков рассылки, модерирование новостных групп, управление большими архивами программного обеспечения, разработка RFC и других технических стандартов.

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

5. Служите самой хакерской культуре.
Наконец, вы можете служить и распространять саму культуру (например, составляя скрупулезное руководство "как стать хакером" :-)). Но не стоит этим заниматься до тех пор, пока вы не поваритесь в этой культуре достаточное время и не станете хорошо известны благодаря одной из первых четырёх вещей.

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

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

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

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

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

Читайте научную фантастику. Ходите на встречи любителей фантастики (это хороший способ познакомиться с хакерами и "прото-хакерами").
Изучайте Дзэн-буддизм и/или восточные искусства боя. (Их ментальная дисциплина имеет важные черты, сходные с хакерской).
Вырабатывайте в себе аналитический музыкальный слух. Учитесь понимать специфические виды музыки. Учитесь неплохо играть на каком-нибудь музыкальном инструменте или грамотно петь.
Вырабатывайте своё понимание каламбуров и игр в слова.
Учитесь хорошо писать на своем родном языке. (Это удивительно, но многие хакеры, включая всех известных мне лучших хакеров, являются качественными писателями.)
Чем больше из этих вещей вы уже делаете, тем больше вероятность того, что вы представляете собой природный хакерский материал. Почему перечислены именно эти вещи - не вполне ясно, но они связаны со смешиванием навыков левого и правого полушарий мозга, а это представляется важным (для хакеров необходимо уметь как выстраивать стройные логические обоснования, так и время от времени оценивать проблему вне связи с очевидной логикой).

И, наконец, несколько вещей, которые делать не следует.
Не используйте глупые и напыщенные пользовательские имена или клички.
Не вовлекайтесь в свары и перебранки в Usenet (или где-либо еще).
Не называйте себя "киберпанком" и не тратьте свое время на тех, кто это делает.
Не отправляйте письма или электронную почту, переполненные ошибками правописания.
Единственная репутация, которую вы себе создадите, занимаясь любой из этих вещей - это вы станете посмешищем. У хакеров долгая память, и вам могут понадобиться годы, чтобы об этом забыли.

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

Другие ресурсы
Питер Сибак ведет превосходную страницу "Хакер-ЧаВО" - Hacker FAQ для менеджеров, не представляющих себе как иметь дела с хакерами.

Мною написана также "Краткая история Хакерландии" - A Brief History Of Hackerdom.

Я написал статью "Собор и Базар" - The Cathedral and the Bazaar, в которой разъясняется, как работают проект Linux и культура открытых исходных кодов. Еще более непосредственно эта же тема рассмотрена в статье-продолжении "Раздел Ноосферы" - Homesteading the Noosphere.

Рик Моен написал великолепный документ о том, как создать группу пользователей Linux.

Также мы с ним создали другой документ, "Как задавать умные вопросы" (How To Ask Smart Questions). Он поможет вам искать помощь таким образом, чтобы вы её действительно получили.

Если вам нужны познания в том, как персональные компьютеры, Unix и Интернет работают, почитайте Фундаментальные основы Unix и Интернет (The Unix and Internet Fundamentals HOWTO).

Когда вы выпускаете программы или пишете исправления к программам (патчи), постарайтесь следовать указанием в Как выпускать программы (Software Release Practice HOWTO).

Если вам понравилась поэма Дзэн, вам может понравится Rootless Root: The Unix Koans of Master Foo.

Часто задаваемые вопросы
В: Вы научите меня хакерству?
С момента первой публикации этой страницы я получал от людей по нескольку запросов в неделю с просьбой "научить всему хакерскому". К сожалению, я не располагаю ни временем, ни энергией этим заниматься. Мои собственные хакерские проекты занимают 110% моего времени.

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

Сначала научитесь нескольким вещам сами. Покажите, что стараетесь, что способны к самостоятельному обучению. И уже потом отправляйтесь к знакомым хакерам с вопросами.

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

В: Тогда как мне начать?
Cамый лучший способ - найти вашу местную группу пользователей Linux и сходить на их встречи (ссылки на несколько списков групп пользователей можно найти на странице LDP General Linux Information Page; наверняка поблизости от вас будет одна из таких. Члены LUG наверняка дадут вам Linux, если вы попросите, и точно помогут установить его и начать пользоваться.
В: В каком возрасте можно начинать? Не слишком ли поздно мне учиться?
Любой возраст, в котором у вас есть желание начать, хорош. Большинство начинают интерисоваться в промежутке между 15 и 20 годами, но я знаю исключения в обоих направлениях.
В: Сколько может занять обучение хакерству?
Это зависит от того, насколько вы талантливы, и насколько настойчиво вы этим занимаетесь. Большинство могут получить достаточные умения в промежуток от полутора до двух лет, если будут настойчивыми. Но не думайте, что на этом всё заканчивается: если вы настоящий хакер, вы будете учиться и улучшать свои умения всю оставшуюся жизнь.
В: Подходят ли Visual Basic или C# для того, чтобы учиться программированию?
Если вы задаёте этот вопрос, это наверняка значит, что вы думаете о том, чтобы заниматься хакерством под Windows. Это является само по себе плохой идеей. Когда я сравнил попытки хакать под Winndows с попыткой танцевать в гипсе, я не прикалывался. Не пытайтесь идти этой дорогой. Она ужасна, и никогда не перестанет быть такой.

Есть особые проблемы с Visual Basic и C#; и в первую очередь они связаны с тем, что они не переносимы между ОС. Несмотря на то, что есть прототипы свободных реализаций этих языков, соответствующие стандарты ECMA не покрывают чего либо, кроме маленького набора их программных интерфейсов. Под Windows их поддержка библиотеками пропритарна, и принадлежит только одному поставщику (Microsoft). Если вы не будете особо заботиться о том, какими возможностями пользуетесь, более мощными чем те, которые любой новичок может реализовать - вы кончите тем, что будете заблокированы только в те платформы, которые Microsoft захочет поддерживать. Если вы начнёте с Unix, вы получите намного лучший выбор языков и библиотек.

Visual Basic особо ужасен. Как и другие Бейсики, он плохо разработан и научит вас плохому стилю программирования. И не просите меня объяснить их в деталях - эти объяснения займут целую книгу. Лучше изучите хорошо разработанный язык.

Одним из этих плохих стилей является зависимость от библиотек, виджетов, средств разработки одного поставщика. В общем, любой язык, который не поддерживатся полноценно как минимум в Linux или одном из BSD Unix-ов, и/или как минимум тремя различными поставщиками операционных систем, не подходит для обучения хакерству.
...........................