Site Tools


ինչպես_դառնալ_հաքեր

This is an old revision of the document!


աղբիւր՝ http://www.catb.org/~esr/faqs/hacker-howto.html

 ______________________
< Ինչպե՞ս դառնալ հաքեր >
 ----------------------
      \                    / \  //\
       \    |\___/|      /   \//  \\
            /0  0  \__  /    //  | \ \    
           /     /  \/_/    //   |  \  \  
           @_^_@'/   \/_   //    |   \   \ 
           //_^_/     \/_ //     |    \    \
        ( //) |        \///      |     \     \
      ( / /) _|_ /   )  //       |      \     _\
    ( // /) '/,_ _ _/  ( ; -.    |    _ _\.-~        .-~~~^-.
  (( / / )) ,-{        _      `-.|.-~-.           .~         `.
 (( // / ))  '/\      /                 ~-. _ .-~      .-~^-.  \
 (( /// ))      `.   {            }                   /      \  \
  (( / ))     .----~-.\        \-'                 .~         \  `. \^-.
             ///.----..>        \             _ -~             `.  ^-`  ^-_
               ///-._ _ _ _ _ _ _}^ - - - - ~                     ~-- ,.-~
                                                                  /.-~

Ինչու այս փաստաթուղթը

Ջարգոնի ֆայլի խմբագիր լինելու և մի քանի այլ հայտնի փաստաթղթերի հեղինակ լինելու պատճառով հաճախ նամակներ եմ ստանում ոգևորված սկսնակներից, ովքեր հարցնում են՝ «Ինչպե՞ս կարող եմ դառնալ հմուտ հաքեր»։ 1996 թվականին նկատեցի, որ այս կարևոր հարցին նվիրված ոչ մի FAQ կամ վեբ փաստաթուղթ չկար, և այդ պատճառով էլ սկսեցի գրել այս մեկը։ Շատ հաքերներ հիմա դա համարում են վերջնական ուղեցույց, ինչը, ենթադրում եմ, նշանակում է, որ այն հենց այդպես էլ կա։ Այնուամենայնիվ, ես չեմ պնդում, թե այս թեմայով բացառիկ հեղինակություն եմ. եթե ձեզ դուր չի գալիս այն, ինչ կարդում եք այստեղ, կարող եք գրել ձեր սեփական տարբերակը։

Եթե այս փաստաթղթի պահված տարբերակն եք կարդում օֆլայն ռեժիմում, դրա ներկայիս տարբերակը գտնվում է հետևյալ հասցեում՝ http://catb.org/~esr/faqs/hacker-howto.html:

Նշում: Այս փաստաթղթի վերջում կա Հաճախ Տրվող Հարցերի (FAQ) ցանկ։ Խնդրում եմ, նախ դրանք կարդացեք՝ երկու անգամ, մինչև ինձ հարցեր ուղարկել։

Այս փաստաթուղթը թարգմանվել է բազմաթիվ լեզուներով՝ արաբերեն, բելառուսերեն, բուլղարերեն, չինարեն, չեխերեն, դանիերեն, հոլանդերեն, էստոներեն, ֆրանսերեն, գերմաներեն, հունարեն, հունգարերեն, իտալերեն, եբրայերեն, ճապոներեն, լիտվերեն, նորվեգերեն, պարսկերեն, լեհերեն, պորտուգալերեն (բրազիլական), ռումիներեն, իսպաներեն, թուրքերեն և շվեդերեն։ Սակայն հաշվի առեք, որ այս փաստաթուղթը երբեմն թարմացվում է, և թարգմանությունները կարող են որոշ չափով հնացած լինել։

Այս փաստաթուղթը զարդարող «հինգ կետ-ինը քառակուսի» դիագրամը կոչվում է գլայդեր։ Դա պարզ նախշ է, որը հետաքրքիր հատկություններ ունի «Կյանք» կոչվող մաթեմատիկական սիմուլյացիայում, որն արդեն տարիներ շարունակ գրավել է հաքերներին։ Կարծում եմ, որ այն լավ խորհրդանիշ է հաքերների համար՝ աբստրակտ, սկզբում մի քիչ առեղծվածային թվացող, բայց մի դարպաս դեպի ամբողջ մի աշխարհ՝ իր բարդ տրամաբանությամբ։ Գլայդերի խորհրդանիշի մասին ավելին կարող եք կարդալ այստեղ։

Եթե այս փաստաթուղթը համարում եք արժեքավոր, խնդրում եմ աջակցեք ինձ Patreon-ի կամ SubscribeStar-ի միջոցով։ Եվ նաև մտածեք աջակցելու մյուս հաքերներին, ովքեր ստեղծել են այն կոդը, որից դուք օգտվում եք, Loadsharers հարթակի միջոցով։ Շատ փոքր, բայց շարունակական նվիրատվությունները կարող են արագ գումարվել և հնարավորություն տալ այն մարդկանց, ովքեր իրենց աշխատանքի պարգևներն են ձեզ նվիրել, ստեղծել նոր արժեքներ։

Ո՞վ է հաքերը Ջարգոնի ֆայլում կան «հաքեր» տերմինի մի քանի սահմանումներ, որոնք հիմնականում կապված են տեխնիկական հմտությունների, խնդիրներ լուծելու ու սահմաններ հաղթահարելու հետ։ Սակայն, եթե ցանկանում եք իմանալ ինչպես դառնալ հաքեր՝ միայն երկու սահմանումն են կարևոր։

Կա փորձառու ծրագրավորողների և ցանցային «հրաշագործների» համայնք, ընդհանուր մշակույթ, որը սկիզբ է առնում տասնամյակներ առաջ՝ առաջին թայմշեր մինի-համակարգիչներից և ARPAnet-ի ամենավաղ փորձերից։ Այս մշակույթի անդամներն են առաջինն օգտագործել «հաքեր» տերմինը։ Հաքերները կառուցեցին ինտերնետը։ Հաքերները Unix օպերացիոն համակարգը դարձրել են այն, ինչ կա այսօր։ Հաքերներն ապահովում են Համաշխարհային Ցանցի (World Wide Web) աշխատանքը։ Եթե դուք այս մշակույթի մաս եք, եթե ներդրում եք ունեցել դրանում, և մյուսներն այդ մշակույթում ճանաչում են ձեզ որպես հաքեր, ուրեմն դուք հաքեր եք։

Հաքերի մտածելակերպը սահմանափակված չէ միայն ծրագրային ապահովման մշակույթով։ Կան մարդիկ, ովքեր հաքերի մոտեցումը կիրառում են այլ բաների վրա, ինչպես օրինակ՝ էլեկտրոնիկան կամ երաժշտությունը։ Իրականում, դուք դա կարող եք գտնել ցանկացած գիտության կամ արվեստի բարձրագույն մակարդակներում։ Ծրագրային ապահովման հաքերները ճանաչում են այս մտերիմ հոգիներին այլ բնագավառներում և կարող են նրանց էլ անվանել հաքերներ։ Ոմանք նույնիսկ պնդում են, որ հաքերի բնույթը կախված չէ այն միջավայրից, որի վրա հաքերն աշխատում է։ Բայց այս փաստաթղթում մենք կենտրոնանալու ենք ծրագրային ապահովման հաքերների հմտությունների և մտածելակերպի վրա, ինչպես նաև այն մշակույթի ավանդույթների վրա, որտեղից էլ ծագել է «հաքեր» տերմինը։

Կա մարդկանց մեկ այլ խումբ, ովքեր բարձրաձայն իրենց հաքեր են անվանում, բայց իրականում այդպես չեն։ Սա հիմնականում դեռահաս տղաներ են, ովքեր հաճույք են ստանում համակարգիչներ կոտրելուց կամ հեռախոսային համակարգերն ուսումնասիրելուց։ Իրական հաքերներն այս մարդկանց անվանում են «կրակերներ» և ոչ մի կապ չեն ցանկանում ունենալ նրանց հետ։ Իրական հաքերները հիմնականում կարծում են, որ կրակերները ծույլ, անպատասխանատու և այնքան էլ խելացի չեն։ Նրանք պնդում են, որ անվտանգության համակարգ կոտրելն ապացուցում է, որ դու հաքեր չես, ինչպես մեքենաները գողանալն ապացուցում է, որ դու ավտոմոբիլային ինժեներ չես։ Ցավոք, շատ լրագրողներ և գրողներ խաբվել են և օգտագործել «հաքեր» բառը՝ նկարագրելու կրակերներին։ Սա հաքերներին անչափ զայրացնում է։

Հիմնական տարբերությունը սա է՝ - Հաքերները ստեղծում են, - Կրակերները կոտրում են։

Եթե ուզում եք հաքեր դառնալ, շարունակեք կարդալ։ Եթե ուզում եք կրակեր դառնալ, այցելեք alt.2600 խմբի նյուզգրուպը և պատրաստվեք 5-10 տարվա բանտարկության՝ հասկանալով, որ այնքան էլ խելացի չեք, որքան կարծում էիք։ Եվ սա ամենն է, ինչ պատրաստվում եմ ասել կրակերների մասին։

Հաքերի մտածելակերպ

Հաքերները լուծում են խնդիրներ և ստեղծում նոր բաներ՝ միևնույն ժամանակ հավատալով ազատության և կամավոր փոխօգնության։ Եթե ցանկանում եք համարվել հաքեր, անհրաժեշտ է նման վերաբերմունք ցուցաբերել։ Իսկ նման վերաբերմունք ունենալու համար պետք է իսկապես հավատաք դրան։

Եթե հաքերի մտածելակերպը մշակելն ընկալում եք միայն որպես մշակույթում ընդունելի լինելու միջոց, ապա կկորցնեք դրա կարևորությունն ու նպատակը։ Նման մտածելակերպը դառնում է կարևոր ինքներդ ձեզ համար՝ օգնելու սովորել և մոտիվացված մնալ։ Ինչպես բոլոր ստեղծագործական արվեստներում, հմտանալը պահանջում է հետևել վարպետների մտածելակերպին՝ ոչ միայն ինտելեկտուալ, այլև զգացմունքային մակարդակում։

Ինչպես ժամանակակից զեն բանաստեղծությունն է ասում՝ Հետևիր ճանապարհին՝ նայիր վարպետին, հետևիր վարպետին, քայլիր վարպետի հետ, տես վարպետի միջով, դարձիր վարպետ։

Ուրեմն, եթե ցանկանում եք դառնալ հաքեր, կրկնեք հետևյալ սկզբունքները, մինչև իսկապես հավատաքեց դրանց։ 1. Աշխարհը լի է հիանալի խնդիրներով, որոնք սպասում են իրենց լուծմանը։

Հաքեր լինելը մեծ հաճույք է, բայց այն հաճույք է, որը պահանջում է մեծ ջանք։ Այդ ջանքն էլ մոտիվացիա է պահանջում։ Մարզիկները մոտիվացվում են իրենց մարմնի հնարավորությունները զարգացնելուց։ Նույն ձևով, հաքեր լինելու համար պետք է հաճույք ստանաք խնդիրներ լուծելուց, հմտություններ կատարելագործելուց և ձեր ինտելեկտն օգտագործելուց։ Եթե այդպիսի բնավորություն չունեք, պետք է այն զարգացնեք, որպեսզի կարողանաք կայանալ որպես հաքեր։ Հակառակ դեպքում ձեր էներգիան կկորցնեք շեղող գործոնների վրա՝ ինչպիսիք են փողը, սեքսը կամ սոցիալական ճանաչումը։

2. Ոչ մի խնդիր չպետք է լուծվի երկրորդ անգամ։

Ստեղծագործ ուղեղները թանկ ու սահմանափակ ռեսուրս են։ Դրանք չպետք է վատնվեն հին խնդիրներ կրկին լուծելու վրա, երբ նոր և հետաքրքիր խնդիրներ կան։ Հաքերի նման վարվելն ընդգրկում է ոչ միայն խնդիրներ լուծելը, այլև լուծումները տարածելը, որպեսզի մյուս հաքերները կարողանան առաջ շարժվել՝ փոխանակ հին խնդիրներ վերանայելու։

3. Ցանկությունը և միապաղաղ աշխատանքը չարիք են։

Հաքերները չպետք է ձանձրանան կամ ստիպված լինեն միապաղաղ աշխատանք կատարել, քանի որ դա նրանց խանգարում է անել այն, ինչ նրանք լավագույնս կարող են։ Այսպիսով, նման իրավիճակներն իրական չարիք են։ Հաքերի նման վարվելու համար անհրաժեշտ է ձգտել ավտոմատացնել ձանձրալի և միօրինակ գործերը՝ ինչպես ձեր, այնպես էլ մյուսների համար։

4. Ազատությունը լավ բան է։

Հաքերները բնականորեն հակաավտորիտար են։ Նրանք չեն ցանկանում, որ որևէ մեկը կանգնեցնի իրենց խնդիրները լուծելու ճանապարհին։ Հետևաբար, ավտորիտար մոտեցումները պետք է հաղթահարվեն։ Ազատությունն ընդգրկում է նաև տեղեկատվության բաց հասանելիությունը և կամավոր համագործակցությունը։ Հաքերի նման վարվելն ընդգրկում է գրաքննության և գաղտնիության դեմ պայքարը։

5. Մտածելակերպը չի կարող փոխարինել հմտությանը։

Այդպիսի մտածելակերպ ունենալը կարևոր է, բայց այն ինքնին բավարար չէ։ Հաքեր դառնալու համար անհրաժեշտ է խելք, փորձ, նվիրվածություն և ջանք։ Հաքերները պաշտում են ոչ թե մտախելակերպը, այլ հմտությունը։ Հետևաբար, դուք պետք է գնահատեք և զարգացնեք հմտություններ՝ դրանք դիտարկելով որպես հաճելի խաղ, այլ ոչ թե ծանր աշխատանք։ Այս սկզբունքները կհանգեցնեն ոչ միայն հաքերի մշակույթում ճանաչում ձեռք բերելուն, այլև կօգնեն ձեզ կյանքում ստեղծագործական և ինտելեկտուալ աճ ունենալ։

Հիմնական Հաքերային Հմտություններ Հաքերի վերաբերմունքը կարևոր է, բայց հմտություններն ավելի կարևոր են։ Վերաբերմունքը չի կարող փոխարինել կարողունակությունը, և կա մի հիմնական գործիքակազմ, որը դուք պետք է ունենաք, մինչև որ որևէ հաքեր նույնիսկ մտածի ձեզ այդպիսին անվանելու մասին։ Այս գործիքակազմը դանդաղ փոփոխվում է ժամանակի ընթացքում, երբ տեխնոլոգիան ստեղծում է նոր հմտություններ և հնացնում հներին։ Օրինակ, այն նախկինում ներառում էր մեքենայական լեզվով ծրագրավորումը, բայց վերջերս միայն սկսեց ներառել HTML-ը։ Սակայն այժմ ակնհայտ է, որ այն ներառում է հետևյալը․

1. Սովորեք ծրագրավորել Հաքերների հիմնական հմտություններից մեկը ծրագրավորումն է։ Եթե դուք դեռ չգիտեք որևէ ծրագրավորման լեզու, խորհուրդ եմ տալիս սկսել Python-ից: Այն պարզ է, լավ փաստագրված և հարմար սկսնակների համար։ Չնայած դա լավ առաջին լեզու է, այն հզոր է և հարմար է նաև մեծ նախագծերի համար։ Python-ի մասին ավելի մանրամասն գնահատականներ գրել եմ, իսկ լավ ձեռնարկները հասանելի են [Python-ի կայքում](https://www.python.org/), ինչպես նաև Computer Science Circles-ի երրորդ կողմի գերազանց ձեռնարկում։

Առաջ սա խորհուրդ էի տալիս սկսել Java-ից, բայց հիմա կարծում եմ, որ ավելի լավ է սկզբում սովորել C և LISP, հետո անցնել Java-ին։ Եթե լեզուն չափազանց շատ բան է անում ձեր փոխարեն, դա կարող է լավ գործիք լինել արտադրության համար, բայց վատ՝ ուսուցման։ Այս սկզբունքը տարածվում է ոչ միայն ծրագրավորման լեզուների, այլև ֆրեյմվորքերերի վրա, օրինակ՝ RubyOnRails, CakePHP կամ Django: Դրանք կարող են հեշտացնել մակերեսային ըմբռնումը, ինչը կարող է անօգուտ լինել բարդ խնդիր լուծելիս կամ նույնիսկ պարզ սխալների կարգավորման ժամանակ։

* Լավագույն լեզուների ցանկ - Python: Սկսելու և ավելի խորը հմտանալու համար։ - Go: Պարզ է Python-ից անցնելու համար և պատրաստում է ձեզ C-ին անցնելու համար։ - C և C++: Եթե դուք լրջորեն զբաղվում եք ծրագրավորմամբ, պետք է ի վերջո սովորեք C, որը Unix-ի հիմնական լեզուն է։ Այնուամենայնիվ, առաջին լեզու ընտրելը չի համարվում լավ տարբերակ։ - Perl: Հաճախ օգտագործվում է վեբ էջերի համար և համակարգերի ադմինիստրացիայում։ - LISP: Այն սովորելը կտրուկ կփոխի ձեր մտածելակերպը ծրագրավորման մասին։ Այն կարող եք սկսել օգտագործել՝ ստեղծելով Emacs-ի մոդեր կամ GIMP-ի Script-Fu հավելվածներ։

Python, C/C++, Perl և LISP լեզուների իմացությունը կզարգացնի ձեր կարողությունները տարբեր ծրագրավորման մեթոդաբանությունների մեջ։ Նոր լեզու սովորելու համար դուք պետք է ունենաք ընդհանուր ծրագրավորման մտածելակերպ և կարողանաք նոր լեզու սովորել օրերի ընթացքում՝ համեմատելով ձեր արդեն ունեցած գիտելիքները։

* Ինչպես սովորել ծրագրավորել - Կարդացեք կոդ: Ուսումնասիրեք փորձառու ծրագրավորողների գրված կոդերը։ - Գրեք կոդ: Հնարավորինս շատ փորձարկումներ արեք՝ ձեր հմտությունները զարգացնելու համար։ - Ուշադրություն դարձրեք Պիտեր Նորվիգի [Teach Yourself Programming in Ten Years](http://norvig.com/21-days.html) նամակին։ Նրա մոտեցումն արդյունավետ է ծրագրավորման խորքային իմացություն ստանալու համար։

Սովորեք ծրագրավորում այնպես, ինչպես սովորում եք գրել։ Կարդացեք, գրեք, նորից կարդացեք և նորից գրեք, մինչև հասնեք այն մակարդակին, որտեղ ձեր աշխատանքը կսկսի նմանվել վարպետների գործերին։

Նախկինում լավ կոդ գտնելն ու այն ուսումնասիրելը բարդ էր, բայց հիմա՝ բաց կոդով ծրագրերի և գործիքների առկայությամբ, դա ավելի հասանելի է։ Բաց կոդով ծրագրերը հնարավորություն են տալիս կարդալ և փորձարկել իրական նախագծեր, ինչը խիստ օգտակար է հաքեր դառնալու ճանապարհին։

ինչպես_դառնալ_հաքեր.1737196217.txt.gz · Last modified: 2025/01/18 10:30 by 10.0.0.1