Існує багато визначень для терміну “хакер”, більшість яких пов’язані з технічною компетентністю та задоволенням, яке отримується від вирішення проблем та подолання перешкод. Але тільки два є дійсно важливих для тих, хто хочете дізнатися, як стати хакером.
Існує спільнота, деяка спільна культура, яка складається з досвідчених програмістів та мережених чаклунів, історія якої простежується аж до перших мікрокомп’ютерів з розподіленням часу і найперших дослідів з мережею ARPAnet. Саме вони і дали народження терміну “хакер”. Хакери створили Інтернет. Хакери зробили першу операційну систему Unix тим, чим вона є сьогодні. Хакери підтримують Usenet. Хакери забезпечують роботу World Wide Web. Якщо ви є частиною цієї культури, якщо ви зробили в неї свій внесок, і інші представники цієї культури знають, ким ви є і називають вас хакером, то ви – хакер.
Хакерська погляд на світ не обмежується лише культурою хакерів-програмістів. Є люди, які застосовують хакерський підхід і до інших речей, наприклад електроніки або музики. Насправді, ви можете зустрітися з ним на вищих рівнях науки та мистецтва. Софтверні хакери визнають таких близьких за духом людей і теж можуть називати їх “хакерами”, деякі навіть проголошують, що хакерська сутність насправді не залежить від середовища, в якому працює хакер. Але в подальшому ми сконцентруємося на навичках і підходах софтверних хакерів, а також на традиціях тієї загальної культури, що породила термін “хакер”.
Також є й інша група людей, яка називає себе хакерами, але не є такими. Це ті люди (переважно молоді люди чоловічої статі), які здійснюють втручання у комп’ютерні та телефонні системи. Справжні хакери називають таких людей “кракерами” і не хочуть мати з ними нічого спільного. Справжні хакери в більшості своїй вважають кракерів лінивими, безвідповідальни ми і не дуже розумними людьми. Те, що людина здатна зламати систему безпеки, не робить його хакером, точно так само як уміння викрадати машини не робить вас автомобільним майстром. До нещастя, багато журналістів і письменників введені в оману і використовують слово “хакер” для опису кракерів, і це сильно дратує справжніх хакерів.
Головна різниця в наступному: хакери створюють речі, а кракери їх ламають.
Якщо ви хочете стати хакером, то продовжуйте читання. Якщо ж ви хочете стати кракером, то вам необхідно читати журнал “Хакер” і приготуватись відсидіти від п’яти до десяти років у в’язниці, коли виявите, що не настільки майстерні, як гадали. Це все, що я маю намір сказати про кракерів.
Хакери вирішують проблеми і створюють речі, вони вірять у свободу і у добровільну взаємодопомогу. Для того, щоб вас сприймали як хакера, ви повинні вести себе так, як якщо б це була ваша власна життєва позиція. А для того, щоб вести себе так, ніби це ваша позиція, ви повинні дійсно вірити в це.
Але якщо ви збираєтеся культивувати в собі поведінку хакера лише для отримання визнання в культурі, то ви упустили суть. Стати людиною, яка вірить в подібні речі – важливо для вас, тому що це допоможе вам вчитися і зберегти мотивацію. Як і в будь-якій творчості, найефективніший спосіб стати майстром – це наслідувати світогляд майстрів, не тільки інтелектуально, але також і емоційно.
Так що якщо ви хочете стати хакером, то повторюйте наступні речі, поки не повірите в них:
1. Світ повний привабливих проблем, що чекають свого вирішення.
Бути хакером – це величезне задоволення, але це задоволення, яке вимагає маси зусиль. Для подібних зусиль повинна бути мотивація. Атлети-чемпіони черпають мотивацію з свого роду фізичного задоволення, що отримується від доведення власного тіла до досконалості, від подолання власних фізичних меж. Аналогічно, щоб бути хакером ви повинні отримувати максимум задоволення від вирішення проблем, від відточування своїх навиків, від тренування свого інтелекту.
Якщо ж ви не з тих, хто відчуває подібні речі природним чином, то вам знадобиться стати саме таким, щоб зробитися хакером. В іншому випадку ви виявите, що вся ваша хакерська енергія пішла на такі подразники, як секс, гроші і суспільне визнання.
(Ви також повинні розвинути щось подібне до віри у ваші власні здібності до навчання. Віри в те, що навіть якщо ви можливо і не знаєте всього, що необхідне для вирішення проблеми, але якщо ви освоїли лише шматочок і на цьому навчилися, то вже знаєте достатньо, щоб вирішити і наступний шматок – і так далі, поки все не буде зроблено.)
2. Жодна проблема не повинна бути вирішена двічі.
Творчі мізки – це цінний і обмежений ресурс. Не слід розтрачувати їх на повторний винахід колеса в той час, як величезне число чудових проблем очікують свого вирішення.
Щоб поводитися як хакер, ви повинні вірити, що час інших хакерів також дорогоцінний, причому настільки, що майже моральним боргом для вас є поділитися інформацією, вирішити проблеми, а потім просто роздати рішення, щоб інші хакери могли вирішувати нові проблеми замість того, щоб безупинно повертатися до старих.
(Ви не обов’язково повинні вірити, що зобов’язані роздати всі плоди своєї творчості, хоча ті хакери, хто так робить, – найбільш шановані серед інших хакерів. З цінностями хакеров цілком узгоджується продаж плодів творчості, достатній для забезпечення вас їжею, дахом і комп’ютерами. Узгоджується це і з використанням ваших хакерських навиків для підтримки сім’ї і навіть для того, щоб розбагатіти, поки займаючись цим ви не втрачаєте вашої відданості мистецтву і братам – хакерам)
3. Нудьга і рутина – це зло.
Хакери (і взагалі творчі люди) ніколи не повинні займатися нудними речами або грузнути в рутині монотонної роботи, тому що коли це відбувається, то це означає, що вони не роблять того, що можуть робити лише вони – вирішувати нові проблеми. Подібне марнотратство шкодить кожному. Тому нудьга і рутина – це не просто неприємні речі, це зло.
Щоб поводитися як хакер, ви повинні вірити в цей факт настільки, щоб бажати автоматизації всіх нудних дрібниць настільки, наскільки можливо, і не тільки для себе, але і для всіх інших (особливо, для інших хакерів).
(Є одне явне виключення. Іноді хакери займаються речами, які можуть показатися монотонними або нудними сторонньому спостерігачеві, як вправа для прочищення мізків або ж для вироблення навику, або для придбання особливого роду досвіду, який неможливо отримати іншим шляхом. Але все це робиться за власним бажанням, ніхто тих, хто вміє думати ніколи не повинен виконувати нудну роботу.)
4. Свобода – це благо.
Хакери по самій своїй природі анти-авторитарні. Будь-хто, хто може віддавати вам накази, може перешкодити вам знаходити вирішення будь-якої проблеми, що вас зачарувала. І, враховуючи образ мислення авторитарних людей, знайдуться які-небудь приголомшливо ідіотські причини, щоб це зробити. Отже з авторитарним підходом слід боротися усюди, де ви його зустрінете, щоб він не душив вас і інших хакерів.
(Це не те ж саме, що битися з будь-якою владою. Дітям потрібно керівництво, злочинність необхідно стримувати. Хакер може погоджуватися на ухвалення якогось роду керівництва, щоб отримати щось більш потрібне йому, ніж час, який він витратить на виконання наказів. Але це обмежена і розумна операція; та ж зрада самого себе, яка зазвичай потрібна керівництву, не повинна прийматися.)
Авторитаризм залежить від цензури і секретності. Його адепти не вірять в добровільну співпрацю та обмін інформацією, їм подобається тільки така “співпраця”, якою керують вони. Тому, щоб вести себе як хакер, ви повинні виробити в собі інстинктивне неприйняття цензури, секретності, а також застосування сили або брехні для примусу людей, здатних самостійно приймати рішення. І необхідно жити, керуючись цією вірою.
5. Поведінка не замінить компетентність.
Для того, щоб бути хакером, ви повинні розвинути в собі деякі з перерахованих підходів. Але захопившись поведінкою ви станете хакером не більшою мірою, чим спортсменом-рекордсменом або рок-зіркою. Для того, щоб стати хакером, потрібні інтелект, практика, самовідданість і тяжка праця.
Тому вам доведеться навчитися з недовірою ставиться до поведінки, але при цьому поважати компетентність будь-якого роду. Хакери не дозволять позерам витрачати даремно їх час, але поклоняються компетентності, особливо – хакерській компетентності, хоча компетентність хороша в чому завгодно. Особливо цінується володіння рідкісними, але дуже необхідними навичками. Найкраще бути компетентним у тих навичках що вимагають проникливого розуму, вправності і концентрації.
Якщо ви обожнюєте компетентність, ви отримуєте насолоду, розвиваючи її в собі. Тяжка праця і відданість справі стануть для вас захоплюючою грою, а не рутиною. І це життєво необхідно для того, щоб стати хакером.
Хакерський погляд на життя звичайно важливий, але майстерність набагато більш важливиша. Поведінка не замінить компетентності, і існує певний набір базових навичок, якими вам необхідно володіти, перш ніж будь-який з хакерів насмілиться назвати хакером і вас.
Цей базовий набір з часом потихеньку змінюється у міру того, як технологія породжує нові навики і робить непотрібними застарілі. Наприклад, зазвичай згадувалося програмування на машинній мові, але, аж до недавнього часу, в набір не включали мову HTML. Проте, в сьогоднішній комплект безумовно входять наступні компоненти:
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 і не мріяла. Ви отримаєте масу задоволення, і засвоїте набагато більше знань, ніж припускали в процесі навчання, і зрозумієте це, коли поглянете на Вась цей процес вже будучи майстром-хакером.
3. Навчитеся використовувати World Wide Web і писати на HTML.
Більшість з тих речей, що створені хакерської культурою, роблять свою справу невидимо, допомагаючи працювати фабрикам, установам і університетам без якого-небудь помітного впливу на життя не-хакерів. Web – це одне велике виключення, гігантська блискуча хакерська іграшка, яка навіть по визнанню політиків змінює світ. Лише по одній цій причині (а також і безлічі інших приємних причин) вам слід навчитися працювати з Web.
Це не означає, що досить просто навчитися управлятися з браузером (це будь-хто уміє), це означає, що ви повинні навчитися писати на HTML, мові розмітки документів Web. Якщо ви ще не вмієте програмувати, то писання на HTML навчить ваше мислення деяким корисним звичкам, які стануть у нагоді при освоєнні мов програмування. Так що робіть свою домашню сторінку. Спробуйте XHTML, який більш акуратно опрацьовано ніж класичний HTML.
Але просте володіння домашньою сторінкою навіть і близько не підведе вас до того, щоб стати хакером. У Web повним-повнісінько домашніх сторіночок. Більшість з них – це безглуздий, даремний непотріб. Украй помітно і привабливо оформлений непотріб, не сперечаюся, але все одно непотріб.
Ваша сторіночка повинна мати “контент” – зміст. Вона повинна бути цікавою і/або корисною для інших хакерів.
4. Якщо ви не знаєте Англійської, вивчіть її.
Це – справжнісінька правда. Багато хакерів, для яких англійська є другою мовою, використовують її в технічних дискусіях, навіть якщо всі учасники дискусії мають іншу, загальну рідну мову. Мені також стало відомо, що англійська мова має багатший технічний словник, ніж будь-яка інша мова, і тому найбільше підходить як засіб спілкування хакерів. З цих же причин, переклади технічної літератури, написаної англійською мовою, часто незадовільні (якщо взагалі робляться).
Лінус Торвальдс, будучи фіном, коментує свій код на англійському (ніколи не було помічено за ним інше). Його знання англійської мови було одним з найважливіших факторів у його здатності залучити розробників зі всього світу для роботи над ядром Linux. Цим прикладом варто скористатися.
Як і більшість культур без грошової економіки, Хакерландія будується на репутації. Ви намагаєтеся вирішити цікаві проблеми, але наскільки вони цікаві, і наскільки насправді хороші ваші рішення, – це щось таке, про що зазвичай можуть судити тільки (у технічному сенсі) люди, що знаходяться на рівні, що перевершують ваш.
Таким чином, коли ви граєте в хакерські ігри, ви вчитеся вести рахунок головним чином по тому, що думають про вашу майстерність інші (саме тому ви не будете хакером до тих пір, поки вас не стануть так називати інші хакери). Даний факт затінюють як образ хакера-одинака, так і певні табу хакерської культури (що нині істотно ослабіли, але все ще могутні), що не допускають, щоб чиєсь зовнішнє визнання взагалі мого б бути мотивацією для хакера.
Зокрема, Хакерландія – це те, що антропологи іменують “культурою подарунків”. Ви заробляєте статус і репутацію не тим, що керуєте іншими людьми, і не тим що прекрасні, і не тим що маєте речі, які є предметом жадання інших. Але швидше тим, що роздаєте речі. Зокрема, обдаровуючи своїм часом, своєю майстерністю і результатами своєї творчості.
Є п’ять основних типів речей, які ви можете робити, щоб вас поважали хакери:
1. Пишіть програми з відкритими вихідними текстами.
Перше (найголовніше і саме традиційне) – це писати програми, які інші хакери вважають забавними або корисними, і роздавати початкові коди програм для використання всією хакерської культурою.
Ми звикли називати ці програми “вільним програмним забезпеченням” (free software), але це збило з пантелику дуже багатьох людей, що точно не розуміли, що малося на увазі під словом “вільне”. Вся справа в тому, що в англійській мові слово “free” використовується як для слова “свобода” так і слова “безкоштовно”. Тому дуже часто для такого програмного забезпечення за краще використовувати термін “з відкритим початковим текстом” або “open-source software”. Ми знаємо різницю між свободою і безкоштовним шматком сиру.
Найбільш шанобливі напівбоги Хакерландіі – це люди, які написали великі і потужні програми, що відповідають найширшим потребам, і які роздали їх всім, так що кожен тепер їх використовує.
2. Допомагайте тестувати і відлагоджувати програми у відкритих вихідних текстах.
Шанобливі також ті, хто тестує і відлагоджує програми у відкритих вихідних текстах. У цьому недосконалому світі ми неминуче витрачаємо найбільшу частину часу розробки програми на фазу відладки. Саме тому будь-який автор програм з відкритими вихідними текстами скаже вам, що хороші бета-тестери (що знають, як виразно описати симптоми, добре локалізуючі проблеми, що зазнають проблеми в тестовому випуску і що застосовують декілька простих діагностичних підпрограм) цінуються на вагу золота. Всього одина така людина може перетворити фазу відладки із затягнутого жаху, що виснажує в малопомітну затримку.
Якщо ви новачок, то спробуйте знайти розроблювану програму, яка вам цікава, і станьте хорошим бета-тестером. Існує цілком природний шлях просування від допомоги в тестуванні програм до допомоги в їх відладці і далі, до допомоги в їх модифікації. Ви багато чому навчитеся у такий спосіб і породите добру карму у відносинах з людьми, які допоможуть вам згодом.
3. Публікуйте корисну інформацію.
Ще одна хороша річ – відбирати і накопичувати корисну і цікаву інформацію на Web-сторінках або документах типу ЧАВО (FAQ або “часто ставляться, і відповіді”), і робити їх загальнодоступни ми.
Ведучі основних технічних ЧАВО майже такі ж поважані, як і автори програм з відкритим вихідним кодом.
4. Допомагайте підтримувати роботу інфраструктури.
Хакерська культура (і інженерний розвиток Інтернету) заснована на добровольцях. Є маса необхідної, але не особливо ефектної роботи, яку потрібно робити, щоб підтримувати процес: адміністрування списків розсилки, модерування груп, управління великими архівами програмного забезпечення, розробка RFC і інших технічних стандартів.
Люди, що добре роблять такого роду речі, глибоко шановані, оскільки кожен знає, що подібна робота вимагає купу часу і не так забавна як ігри з кодами. Ця робота свідчить про самовідданість.
5. Служіть самої хакерської культурі.
Нарешті, ви можете служити і поширювати саму культуру (наприклад, складаючи скрупульозну інструкцію “як стати хакером”
). Але не варто цим займатися до тих пір, поки ви не поваритеся в цій культурі достатній час і не станете добре відомі завдяки одній з перших чотирьох речей.
У хакерської культурі немає явних лідерів, але тут є “культурні герої”, “племінні старійшини”, історики і оратори. Коли ви досить довго поживете в цих траншеях, то зможете перерости в одного з таких людей. Але остерігайтеся: хакери насторожено ставляться до крикливим старійшин, так що видиме досягнення такого роду слави таїть в собі небезпеку. Замість того, щоб прагнути до цього, вам краще як би не піклуватися про це і тоді слава сама впаде на вас, а вже потім можна бути скромним і милостивим в своєму статусі.
Всупереч поширеному міфу, вам не обов’язково бути “ботаніками”, щоб бути хакером. Це, проте, допомагає, і багато хакери дійсно є “ботаніками”. Статус ізгоя суспільства допомагає вам залишатися зосередженими на дійсно важливих речах, таких як роздуми і хакерство.
Саме з цієї причини багато хакерів носять ярлик “ботанік” і навіть використовують як знак доблесті грубіший термін “маніяк” (гик, geek) – це їх спосіб декларації своєї незалежності від загальноприйняти х в суспільстві оцінок.
Якщо ви здатні достатньою мірою зосередитися на хакерства, досягати тут помітних результатів і при цьому мати особисте життя – що ж, чудово. Сьогодні це набагато легше, ніж в 1970-х. Культурний мейнстрім став тепер набагато доброзичливіший до техно-ботаніків. Навіть росте кількість людей, що виявляють, що хакери часто можуть бути цілком якісними коханцями і подружжям. Якщо ж вас вабить до хакерству з тієї причини, що у вас немає особистого життя, що ж, і це непогано. У всякому випадку, у вас не буде проблем з концентрацією. А особисте життя – хто знає, може воно прийде до вас пізніше.
Ще раз, щоб бути хакером, ви повинні знайти світогляд хакера. Є кілька речей, які можуть допомогти в ті моменти, коли ви не перебуваєте поруч з комп’ютером. Вони не замінюють хакерство (його ніщо не замінить), але багато хакерів ними займаються і, по їх відчуттях, це на якомусь фундаментальному рівні об’єднує їх з суттю хакерства.
Чим більше з цих речей ви вже робите, тим більше вірогідність того, що ви є природним хакерський матеріал. Чому перераховані саме ці речі – не цілком ясно, але вони пов’язані із змішуванням навиків лівої і правої півкуль мозку, а це представляється важливим (для хакерів необхідно уміти як вибудовувати стрункі логічні обгрунтування, так і час від часу оцінювати проблему поза зв’язку з очевидною логікою) .
І, нарешті, кілька речей, які робити не слід.
Єдина репутація, яку ви собі створите, займаючись будь-якою з цих речей – це ви станете посміховиськом. У хакерів довга пам’ять, і вам можуть знадобитися роки, щоб про це забули.
Проблема з користувацькими іменами або кличками заслуговує на особливу увагу. Приховувати свою особистість за кличкою – безглузда й дурна поведінка, характерна для крекерів, софтверних піратів і інших нижчих форм життя. Хакери не займаються цим: вони пишаються тим, що вони роблять, і вважають за краще бути асоційованими зі своїми реальними іменами. Так що, якщо у вас є кличка, викиньте її. У хакерської культурі вона буде робити вас лузером.