Ծրագրավորման կարիերա. Գլուխ 2. Դպրոց կամ ինքնակրթություն

Պատմության շարունակությունը «Ծրագրավորողի կարիերա».

2001 թվականն էր։ Տարին, երբ թողարկվեց ամենաթեժ օպերացիոն համակարգը՝ Windows XP: Ե՞րբ է հայտնվել rsdn.ru-ն: C#-ի և .NET Framework-ի ծննդյան տարեթիվը: Հազարամյակի առաջին տարին. Եվ նոր սարքավորումների հզորության էքսպոնենցիալ աճի տարի՝ Pentium IV, 256 mb ram:

9-րդ դասարանն ավարտելուց և ծրագրավորման հանդեպ իմ անսպառ եռանդը տեսնելուց հետո ծնողներս որոշեցին ինձ քոլեջ տեղափոխել ծրագրավորման մասնագիտությամբ: Նրանք հավատում էին, որ այսպես ավելի լավ կլինի, և ինձ այնտեղ կսովորեցնեն։ Քոլեջ բառն, ի դեպ, հարիր չէր արդյունաբերական քաղաքի ծայրամասում գտնվող այս հաստատությանը։ Դա սովորական տեխնիկում էր, որը ոչնչով չէր տարբերվում մյուս տեխնիկումներից, որոնք իրենց ճակատին մոդայիկ «քոլեջ» բառով պիտակ չէին կախում։
Դե, Ես չեմ հակասել ծնողներիս և չեմ վիճարկել նրանց որոշումը։ Ամեն դեպքում, ես զբաղվում էի ինքնակրթությամբ, և մտածում էի, որ այս նոր վայրում ինձ լրացուցիչ գիտելիքներ կտան։


Այդ ամառ, նախքան քոլեջ գնալը, ես սկսեցի մանրակրկիտ ուսումնասիրել բոլոր հնարավոր տեխնոլոգիաները, որոնք տպագրվել էին ամսագրում։ «Հաքեր». Կարդացի ու վերընթերցեցի կտոր-կտոր: Ինձ հատկապես դուր եկան իրական հաքերների հետ հարցազրույցներն ու նրանց խորհուրդները։
Թույն հաքերների մեծ մասը Linux-ում էին: Իսկ Mazda-ն (Windows) լամերի համար էր: Ամեն ոք, ով կարդացել է ամսագիրը, հիշում է նրա գրառումների ոճը: Հետևաբար, իմ փխրուն մտքում երկու գաղափարներ կռվում էին իրար մեջ՝ լքել Windows-ը, թե՞ սառը լինել և կառչել զուտ Linux-ին:
Hacker ամսագրի յուրաքանչյուր նոր թողարկում ինձ նոր առիթ էր տալիս ֆորմատավորելու սկավառակը և տեղադրել Linux Red Hat 7 կամ Windows Me: Իհարկե, ես չունեի որևէ ուսուցման վեկտոր, և ես անում էի այն, ինչ կարդում էի ամսագրերում կամ «Հակերի գաղտնիքները» գրականացված սկավառակների վրա: Զուգահեռաբար երկու օպերացիոն համակարգերի տեղադրումը նույնպես ջնջվեց՝ «Windows XP aka parrot»-ի ոգով նոր լցոնումից հետո. սա տնային տնտեսուհիների համար է։ Իսկ եթե ուզում ես լուրջ գործերով զբաղվել, պետք է փակ աչքերով աշխատես Linux կոնսոլից»։ Իհարկե, ես ուզում էի կոտրել համակարգերը, հասկանալ, թե ինչպես է աշխատում ցանցը և լինել այն ժամանակվա ամենակարող Անանունը։

Սկավառակը ֆորմատավորվեց առանց որևէ ափսոսանքի, և դրա վրա տեղադրվեց Unix-ի նման համակարգի բաշխման հավաքածու։ Այո այո. Ես մի անգամ կարդացի հարցազրույց իրական հաքերի հետ, ով միայն օգտագործում է FreeBSD 4.3-ը կոնսոլից: Միաժամանակ նա պատասխանատու էր բանկերի և պետական ​​համակարգերի կոտրման համար։ Կայծակի հարված էր գլխին, և ես 5 անգամ տեղադրեցի BSD OS որպես հիմնական համակարգ։ Խնդիրն այն էր, որ տեղադրումից հետո այնտեղ ոչինչ չկար, բացի մերկ կոնսոլից: Նույնիսկ ձայն: Իսկ KDE2-ը տեղադրելու ու ձայնը միացնելու համար պետք էր շատ պարել դափով, մի քանի կոնֆիգուրս ուղղել։

Ծրագրավորման կարիերա. Գլուխ 2. Դպրոց կամ ինքնակրթություն
FreeBSD 4.3 բաշխումը ամենահաքերային ՕՀ-ն է

Գրականության մասին

Հենց համակարգիչ ձեռք բերեցի, սկսեցի ծրագրավորման վերաբերյալ գրքեր գնել։ Առաջինը ուղեցույց էր «Turbo Pascal 7.0»-ի համար։ Սա զարմանալի չէ, քանի որ ես արդեն գիտեի մի փոքր Պասկալ ծրագրավորման դասընթացներից, և կարող էի ինքնուրույն շարունակել սովորել։ Խնդիրն այն էր, որ հաքերները Պասկալով չեն գրում։ Հետո նորաձևության մեջ էր Perl լեզուն, կամ ավելի զով տղաների համար դա C/C++ էր: Համենայն դեպս ամսագրում այդպես են գրել։ Եվ առաջին գիրքը, որը կարդացի մինչև վերջ, «C Programming Language»-ն էր՝ Քերնիգանի և Ռիչիի կողմից: Ի դեպ, ես սովորել եմ Linux միջավայրում
և օգտագործել gcc և KDE-ի ներկառուցված խմբագրիչը կոդը գրելու համար:

Այս գրքից հետո գնվեց UNIX հանրագիտարանը: Այն կշռում էր 3 կիլոգրամ, տպագրված էր A3 էջերով։
Գրքի առջևի մասում պատկերված էր մուլտֆիլմի սատանան պատառաքաղով, այնուհետև այն արժեր 125 գրիվնա Ուկրաինայում (25 թվականին դա մոտ 2001 դոլար էր): Գիրքը գնելու համար դպրոցական ընկերոջս պարտքով գումար վերցրեցի, մնացածն էլ ծնողներս ավելացրեցին։ Այնուհետև ես խանդավառությամբ սկսեցի ուսումնասիրել Unix հրամանները, vim և emacs խմբագրիչը, ֆայլային համակարգի կառուցվածքը և կոնֆիգուրացիայի ֆայլերի ներսը: Հանրագիտարանի համարյա 700 էջ խժռվեց, և ես մեկ քայլով մոտեցա իմ երազանքին՝ դառնալ Կուլ-Հացկեր։

Ծրագրավորման կարիերա. Գլուխ 2. Դպրոց կամ ինքնակրթություն
UNIX հանրագիտարան - Իմ կարդացած առաջին գրքերից մեկը

Ես գրքերի վրա ծախսեցի այն ամբողջ գումարը, որ տվել էին իմ սիրող տատիկն ու պապիկը, ծնողներս: Հաջորդ գիրքը C++-ն էր 21 օրում: Վերնագիրը շատ գրավիչ էր, և դրա համար էլ ավելի բարձր որակի գրքեր չնայեցի։ Չնայած դրան, բոլոր աղբյուրները գրքից պատճենվել են մոտավորապես այս 3 շաբաթվա ընթացքում, և ես արդեն ինչ-որ բան հասկացա C++-ով։ Չնայած ես, հավանաբար, ավելին չհասկացա, թե ինչ է գրված այս ցուցակներում: Բայց առաջընթաց կար.

Եթե ​​ինձ հարցնեիք, թե որ գիրքն է ամենաշատը ազդել ձեր կարիերայի վրա, ես առանց վարանելու կպատասխանեի՝ «Ծրագրավորման արվեստը» - Դ. Կնուտ: Դա ուղեղի վերափոխում էր: Չեմ կարող հստակ ասել, թե ինչպես է այս գիրքը հայտնվել իմ ձեռքում, բայց այն ամենախոր ազդեցությունն ունեցավ իմ հետագա կարիերայի վրա:

Ծրագրավորման կարիերա. Գլուխ 2. Դպրոց կամ ինքնակրթություն
Ծրագրավորման արվեստը պետք է կարդալ

Գրքեր գնում էի հիմնականում ռադիոշուկայում, որը բաց էր միայն կիրակի օրերին։ Նախաճաշին ևս մի քանի տասնյակ գրիվնա խնայելով՝ ես գնացի նոր գիրք C++-ով կամ գուցե Perl-ով: Ընտրությունը բավականին մեծ էր, բայց ես մենթոր չունեի, ուստի ամեն ինչ ուսումնասիրեցի։ Ես խնդրեցի վաճառողին ինձ ինչ-որ բան խորհուրդ տալ ծրագրավորման մասին: Իսկ «Ծրագրման արվեստը» նա, որքան հիշում եմ, դարակից վերցրեց։ Առաջին հատոր». Գիրքն ակնհայտորեն արդեն օգտագործվել էր։ Շապիկի անկյունները թեքված էին, և հետևի մասում երևում էր մի մեծ քերծվածք, հենց այնտեղ, որտեղ Բիլ Գեյթսը թողել էր իր կարծիքը. Ես գիտեի Գեյթսի մասին ամսագրերից, և կարծում էի, որ լավ կլինի նրան ռեզյումե ուղարկել, թեև բոլոր հաքերները քննադատում էին նրան։ Գիրքը արժե 72 UAH: (15 դոլար), և ես արագ տրամվայով շտապեցի տուն՝ նոր նյութ ուսումնասիրելու:

Որքան խորն ու տարրական բաներ եմ կարդացել, իհարկե, 15 տարեկանում չէի կարողանում հասկանալ։ Բայց ես ջանասիրաբար փորձում էի ավարտին հասցնել յուրաքանչյուր վարժություն: Մի անգամ ես նույնիսկ կարողացա ճիշտ լուծել 25 կամ 30 դժվարության գնահատական ​​ունեցող խնդիր: Դա մաթեմատիկական ինդուկցիայի գլուխ էր: Չնայած ես չէի սիրում դպրոցական մաթեմատիկա և լավ չէի ընկալում այն, ես արդեն անցել էի գորգը: Կնուտի վերլուծությունը - Ես նստեցի ժամերով։
Հաջորդը, երկրորդ գլխում կային տվյալների կառուցվածքներ: Կապակցված ցուցակների, երկուական ծառերի, կույտերի և հերթերի այս պատկերներն ու նկարները դեռ իմ աչքի առաջ են: Առևտրային զարգացման իմ 12 տարվա կարիերայի ընթացքում ես օգտագործել եմ ընդհանուր նշանակության լեզուների մեծ մասը:
Դրանք են՝ C/C++, C#, Java, Python, JavaScript, Delphi: Եվ անկախ նրանից, թե ինչպես էր կոչվում լեզուն, նրա ստանդարտ գրադարանը պարունակում էր տվյալների կառուցվածքներ և ալգորիթմներ, որոնք նկարագրել է Դոնալդ Կնուտը իր եռահատոր գրքում: Հետեւաբար, նոր բան սովորելը շատ ժամանակ չի պահանջում։

Առաջին հատորը խժռվեց բավականին արագ։ Ես վերաշարադրեցի Կնութի գրքում տրված ալգորիթմները C լեզվով: Դա միշտ չէ, որ ստացվում էր, բայց որքան շատ էի պարապում, այնքան ավելի պարզ էր դառնում: Նախանձախնդրության պակաս չկար։ Ավարտելով առաջին հատորը՝ առանց վարանելու վազեցի գնելու երկրորդն ու երրորդը։ Երկրորդը առայժմ մի կողմ դրեցի, բայց երրորդը (Տեսակավորում և որոնում) հիմնովին վերաբերվեցի։
Ես շատ լավ հիշում եմ, թե ինչպես էի լրացնում մի ամբողջ նոթատետր՝ «մեկնաբանելով» տեսակավորման և որոնման ալգորիթմները։ Ճիշտ այնպես, ինչպես տվյալների կառուցվածքների դեպքում, երկուական որոնումը և արագ տեսակավորումը պատկերացվում են իմ ուղեղում կայծակնային արագությամբ՝ հիշելով, թե ինչպես են դրանք սխեմատիկ տեսք ունենում Knuth-ի երրորդ հատորում:
Մտրակը կարդացվում էր ամենուր։ Եվ նույնիսկ երբ ես ծով էի գնում, առանց մոտակայքում ԱՀ-ի, ես դեռ ալգորիթմներ էի գրում նոթատետրում և անցնում թվերի հաջորդականությամբ: Ես դեռ հիշում եմ, թե որքան ցավ է պահանջվել, որպեսզի տիրապետեմ հեփսորտին, բայց դա արժեր:

Հաջորդ գիրքը, որը մեծ ազդեցություն ունեցավ ինձ վրա, «Վիշապի գիրքն» էր։ Այն նաև «Կազմողներ. սկզբունքներ, տեխնոլոգիաներ, գործիքներ» - Ա. Ահո, Ռ. Սեթի: Նրան նախորդել էր Հերբերտ Շիլտդը՝ C++-ի առաջադեմ առաջադրանքներով: Այստեղ են միավորվել կետերը:
Շիլդտի շնորհիվ ես սովորեցի գրել վերլուծողներ և լեզուների թարգմանիչներ: Եվ հետո «Վիշապի գիրքը» ինձ դրդեց գրել իմ սեփական C++ կոմպիլյատորը:

Ծրագրավորման կարիերա. Գլուխ 2. Դպրոց կամ ինքնակրթություն
Գիրք վիշապի

Այդ ժամանակ ինձ տրվել էր մոդեմով հղկվող ինտերնետ կապ, և ես շատ ժամանակ էի անցկացնում ծրագրավորողների համար ամենահայտնի կայքում՝ rsdn.ru-ում: Այնտեղ գերակշռում էր C++-ը, և յուրաքանչյուր մասնագետ կարող էր պատասխանել այն հարցերին, որոնք ես չէի կարողանում լուծել: Դա ինձ ցավ էր պատճառում, և ես հասկացա
որ ես հեռու եմ այս մորուքավոր տղաներից, ուստի պետք է ուսումնասիրեմ «From and To»-ի առավելությունները: Այս մոտիվացիան ինձ առաջնորդեց դեպի իմ առաջին լուրջ նախագիծը՝ 1998 թվականի C++ ստանդարտի իմ սեփական կազմողը: Ավելի մանրամասն պատմություն և աղբյուրներ կարող եք գտնել այս գրառման մեջ habr.com/en/post/322656.

Դպրոց կամ ինքնակրթություն

Բայց վերադառնանք իրականությանը IDE-ից դուրս։ Թեև այդ ժամանակ ես գնալով հեռանում էի իրական կյանքից և խորասուզվում վիրտուալ կյանքի մեջ, այնուամենայնիվ իմ տարիքը և ընդհանուր ընդունված նորմերը ստիպեցին ինձ գնալ քոլեջ: Դա իսկական խոշտանգում էր։ Ես բացարձակապես պատկերացում չունեի, թե ինչ եմ անում այս հաստատությունում և ինչու էի լսում այս տեղեկատվությունը: Իմ գլխում բոլորովին այլ առաջնահերթություններ ունեի։ Սովորեք Visual Studio 6.0-ը, փորձեք WinApi-ի և Delphi 6-ի հետ:
Հրաշալի կայք՝ firststeps.ru-ն, որն ինձ թույլ էր տալիս ուրախանալ իմ ամեն քայլից, թեև ես չէի հասկանում ընդհանուր պատկերը։ Օրինակ, նույն տեխնոլոգիայի MFC կամ ActiveX:
Ինչ վերաբերում է քոլեջին: Դա ժամանակի վատնում էր։ Ընդհանրապես, եթե շոշափենք ուսումնասիրությունների թեմային, ես վատ եմ սովորել։ Մինչեւ 6-րդ դասարան ես գերազանց աշակերտ էի, իսկ հետո ստացա C գնահատականներ, իսկ 8-9-րդ դասարաններում հաճախ էի բաց թողնում դասերը, ինչի համար ծնողներիցս պատրանքային գոտիներ էի ստանում։
Հետեւաբար, երբ ես եկա քոլեջ, նույնպես քիչ ոգեւորություն կար:
- Որտե՞ղ է ծրագրավորումը: Ես ինքս ինձ հարց տվեցի. Բայց առաջին կիսամյակում նա այնտեղ չէր։ Բայց կար համակարգչային գիտություն MS-DOS-ով և Office-ով, ինչպես նաև հանրակրթական առարկաներ։

Բացի այդ, ես ինտրովերտ բնավորություն ունեի և շատ համեստ էի։ Այս նոր խայտաբղետ անձնակազմն ակնհայտորեն վստահություն չէր ներշնչում։ Եվ դա փոխադարձ էր։ Ուստի զանազան ծաղրանքները չուշացան։ Ես երկար համբերեցի, մինչև չդիմացա և բռունցքով հարվածեցի օրինախախտներից մեկի դեմքին հենց դասարանում։ Այո, նա թռավ դեպի իր գրասեղանը։ Հորս շնորհիվ նա մանկուց սովորեցրել է ինձ կռվել, և եթե ես իսկապես ցանկանայի, կարող էի ֆիզիկական ուժ կիրառել։ Բայց դա շատ հազվադեպ էր պատահում, ավելի հաճախ ես դիմանում էի ծաղրի՝ սպասելով առավելագույն եռման կետին։
Ի դեպ, օրինախախտը, կատարվածից խիստ ապշած, բայց դեռ զգալով իր գերազանցությունը, ինձ պատասխան մենամարտի մարտահրավեր նետեց։ Արդեն ուսումնական հաստատության հետնամասում գտնվող թափուր տարածքում։
Սա երեխաների բռունցքը չէր, ինչպես դա եղել է դպրոցում։ Մի ազնվական մախաչ կար՝ ջարդված քթերով, շատ արյունով։ Տղան նույնպես երկչոտ տղա չէր և հմտորեն կեռիկներ ու ապերքաթներ էր մատուցում: Բոլորը ողջ մնացին, և այդ ժամանակվանից ոչ ոք այլևս ինձ չի հալածել։
այս «ծրագրավորողների քոլեջում»: Այնտեղ գնալու ցանկությունը շուտով ամբողջովին կորցրեցի։ Այդ պատճառով ես դադարեցի գնալ այնտեղ, և ծնողներիս կողմից ոչ մի սպառնալիք ինձ վրա որևէ ազդեցություն չթողեց։ Ինչ-որ հրաշքով քոլեջում մնալը հաշվվեց դպրոցի 10-րդ դասարան, և ես իրավունք ունեի գնալ 11-րդ։

Ամեն ինչ լավ կլիներ, բայց 11-րդ դասարանը քոլեջից շատ ավելի լավ չէր: Ես վերադարձա իմ հայրենի դպրոց, հանդիպեցի ինձ ծանոթ տղաների, որոնց հետ սովորել էի առաջին դասարանից և հույս ունեի, որ իմ հայրենի քաղաքում ամեն ինչ լավ կլինի: Միայն մի նրբերանգ կար՝ տղաներն ավելի շատ հեռուստասերիալների ավազակների տեսք ունեին, քան այն տղաներին, որոնց հետ տարրական դասարաններում ընկերություն էի անում։ Բոլորը հավաքվել էին մարզասրահ՝ մկանային զանգված ձեռք բերելու համար: Ես բամբուկ էի հիշեցնում։ Նեղ ու շատ նիհար։ Իհարկե, այդպիսի կռվարար դասընկերը կարող էր ինձ կապել մեկ ձախ ձեռքով:
Սա այն է, ինչ սկսել է տեղի ունենալ ժամանակի ընթացքում։ Այստեղ իմ մարտական ​​հմտություններն այլեւս ոչ մի ազդեցություն չունեին։ Իմ և իմ երբեմնի հայրենի դասարանի մնացած տղաների համար քաշային կարգերը շատ տարբեր էին։ Նաև իմ մտածողության առանձնահատկություններն իրենց զգացնել տվեցին։

Չթողնելով, որ մտքերս թափառեն, ես նույնպես թողեցի դպրոցը։ Այնտեղ, որտեղ ես ինձ հարմարավետ էի զգում, համակարգչի մոնիտորի դիմաց էր՝ փակված սենյակիս դուռը: Դա իմաստալից էր, և ինտուիտիվ կերպով ես զգացի, որ ճիշտ եմ անում: Եվ այս դպրոցը անօգուտ գործունեություն է, և նույնիսկ դիմանալ այս ծաղրանքներին, որոնք ամեն օր ավելի ու ավելի էին բարդանում... Ահա և վերջ, ինձ բավական է:
Դասարանում հերթական կոնֆլիկտից հետո, երբ ես գլխավոր դերում էի, ես թողեցի դպրոցը և այլևս չգնացի այնտեղ:
Մոտ 3 ամիս նստեցի տանը, ազատ ժամանակս անցկացրեցի C++/WinAPI/MFC և rsdn.ru սովորելով։
Ի վերջո, դպրոցի տնօրենը չդիմացավ և տուն կանչեց։
- «Դենի՛ս, մտածո՞ւմ ես սովորել։ Կամ կհեռանա՞ք։ Որոշեք. Ոչ ոք ձեզ անորոշ վիճակում չի թողնի»: - ասաց տնօրենը
-Ես կհեռանամ,-վստահ պատասխանեցի ես:

Եվ նորից նույն պատմությունը. Ինձ մնում էր կես տարի, որպեսզի ավարտեի ուսումս մինչև դպրոցն ավարտելը։ Ինձ առանց կեղևի մի թողեք։ Ծնողներս հրաժարվեցին ինձանից և ասացին, որ ինքս գնամ տնօրենի հետ բանակցելու: Եկա դպրոցի տնօրենի մոտ։ Նա բղավեց ինձ վրա, որ գլխարկս հանեմ, երբ ներս մտա։ Հետո նա խստորեն հարցրեց. «Ի՞նչ պետք է անեմ քեզ հետ»: Անկեղծ ասած, ես ինքս չգիտեի ինչ անել. Ես բավականին գոհ էի իրերի ներկա վիճակից։ Վերջապես նա խոսեց.
- Ուրեմն եկեք սա անենք. Ես կպայմանավորվեմ մեր երեկոյան դպրոցի տնօրենի հետ, և դուք կգնաք այնտեղ»։
- «Այո»

Իսկ երեկոյան դպրոցը իսկական դրախտ էր ինձ նման ազատ ոճի խաղացողների համար։ Գնա, եթե ուզում ես, կամ մի՛ գնա։ Դասարանում կար 45 հոգի, որից միայն 6-7-ն էին դասերին ներկայացել։ Ես վստահ չեմ, որ ցուցակում բոլորը ողջ էին և նաև ազատ: Որովհետև միայն իմ ներկայությամբ են դասընկերները գողացել ուրիշի մոտոցիկլետը։ Բայց փաստը մնաց փաստ։ Ես կարող էի անսահմանափակ կերպով բարելավել իմ ծրագրավորման հմտությունները և գնալ դպրոց, երբ իսկապես դրա կարիքն ունեի: Ես ավարտեցի այն և հանձնեցի ավարտական ​​քննություններս: Նրանք շատ բան չպահանջեցին, և մենք նույնիսկ ավարտական ​​արարողություն ունեցանք: Ավարտելն ինքնին առանձին առակ է։ Հիշում եմ, որ տեղացի ավազակներն ու դասընկերները վերցրել էին ժամացույցս։ Ու հենց որ լսեցի ազգանունս, վկայականներ հանձնելու ժամանակ, տրոտի վրա շտապեցի փաստաթուղթը վերցնելու ու փամփուշտի պես դուրս թռա դպրոցից, որ այլեւս անախորժությունների չբախվեմ։

Առջևում ամառ էր։ Դոնալդ Կնուտի թևի տակ ծովափին, ծովը, արևը և սեփական մեծ նախագիծը (կազմող) գրելու ճակատագրական որոշումը։
Շարունակելի…

Source: www.habr.com

Добавить комментарий