Кар'ера праграміста. Кіраўнік 2. Школа або самаадукацыя

Працяг апавядання "Кар'ера праграміста".

На двары стаяў 2001 год. Год у які выйшла найкруцейшая аперацыёнка – Windows XP. Калі з'явіўся www.rsdn.ru. Год нараджэння C# і. NET Framework. Першы год тысячагоддзя. І год экспанентнага росту магутнасцей новага жалеза: Pentium IV, 256 mb ram.

Скончыўшы 9-ы клас і бачачы мой невычэрпны энтузіязм у праграмаванні, бацькі прынялі рашэнне перавесці мяне ў каледж на спецыяльнасць «Праграмаванне». Яны лічылі, што так будзе лепш і там мяне навучаць. Слова каледж да слова, мала падыходзіла да гэтай установы, на ўскраіне прамысловага мястэчка. Гэта быў звычайны тэхнікум, які нічым не вылучаўся сярод іншых тэхнікумаў, якія не павесілі на свой фасад лэйбу з модным словам «каледж».
Што ж. Бацькам я не пярэчыў і рашэнне іх не аспрэчваў. У любым выпадку я займаўся самаадукацыяй, і падумаў, што ў гэтым новым месцы мне дадуць яшчэ нейкія дадатковыя веды.


Тым летам, перад паступленнем у каледж, я грунтоўна заняўся вывучэннем усіх магчымых тэхналогій, якія публікаваліся ў часопісе. «Хакер». Я зачытваў і перачытваў яго да дзірак. Асабліва мне падабаліся інтэрв'ю з рэальнымі хакерамі і іх парады.
Большая частка крутых хакераў сядзела на «Лінусе». А маздай (Windows) быў для ламераў. Хто чытаў часопіс, той памятае стылістыку пастоў у ім. Таму ў маім неакрэплым розуме змагаліся паміж сабой дзве ідэі - пакідаць Windows або быць стромкім і сядзець чыста на Лінуксе.
Кожны новы выпуск часопіса Хакер, кідаў мне новы нагода для фарматавання дыска і ўстаноўкі то Linux Red Hat 7, то Windows Me. Зразумела ніякага вектара навучання ў мяне не было, і тое, што я вычытваў у часопісах або на пірацкіх CD накшталт «Сакрэты Хакераў», то і рабіў. Усталёўка двух АС раўналежна таксама сціралася, пасля новага ўкіду ў духу «Windows XP aka папугай – гэта для хатніх гаспадынь. А калі хочаш займацца сур'ёзнымі рэчамі, то павінен працаваць з кансолі Лінуха з зачыненымі вачамі». Зразумела, я жадаў займацца хакінгам сістэм, разумець як уладкованая сетка і быць усемагутным Анонімусам у той час.

Дыск фарматаваўся без долі шкадавання, і на яго ставіўся дыстрыбутыў Unix-падобнай сістэмы. Так так. Аднойчы я прачытаў інтэрв'ю рэальнага хакера, які выкарыстоўвае толькі FreeBSD 4.3 з кансолі. Пры гэтым за ім лічыліся ўзломы банкаў і дзяржаўных сістэм. Гэта быў удар маланкі ў галаву, і я разоў 5 ставіў BSD АС, як асноўную сістэму. Праблема была ў тым, што пасля ўстаноўкі, акрамя голай кансолі там нічога не было. Нават гуку. І каб паставіць KDE2 і ўключыць гук, трэба было нямала патанчыць з бубнам, і паправіць некалькі канфігаў.

Кар'ера праграміста. Кіраўнік 2. Школа або самаадукацыя
Дыстрыбутыў FreeBSD 4.3 - самая хакерская АС

Аб літаратуры

Як толькі ў мяне з'явіўся камп'ютар, я пачаў купляць кніжкі па праграмаванні. Першай была інструкцыя па «Turbo Pascal 7.0». Гэта і не дзіўна, бо Паскаль я ўжо крыху ведаў з курсаў праграмавання, і можна было працягваць навучанне самастойна. Праблема была ў тым, што Хакеры не пішуць на Паскалю. Тады ў модзе была мова Perl, або, для больш крутых рабят - гэта быў З/З++. Прынамсі так пісалі ў часопісе. І першай прачытанай да канца кнігай была "Мова праграмавання Сі" - Кернігана і Рытчы. Дарэчы, вучыўся я ў асяроддзі Linux
і выкарыстоўваў gcc і ўбудаваны рэдактар ​​KDE для напісання кода.

Следам за гэтай кнігай, была набыта "Энцыклапедыя UNIX". Важыла яна кілаграма 3 і была надрукавана на старонках фармату А3.
На адным баку кнігі ва ўвесь рост быў намаляваны мульцяшны д'ябал з віламі, а каштавала яна тады ва Украіне 125 грыўняў (гэта прыкладна 25 $ у 2001-ым). Каб купіць кнігу, я папрасіў у пазыку грошай у школьнага сябра, астатняе дадалі бацькі. Затым, я з захапленнем стаў вывучаць каманды Unix, рэдактар ​​vim і emacs, структуру файлавай сістэмы і вантробы канфіг файлаў. Без малога 700 старонак энцыклапедыі былі праглынуты і я стаў на крок бліжэй да мары - стаць кул-Хацкер.

Кар'ера праграміста. Кіраўнік 2. Школа або самаадукацыя
Энцыклапедыя UNIX - Адна з першых прачытаных кніг

Усе грошы, якія давалі мне тыя, хто любіць дзядуля з бабуляй і бацькі я марнаваў на кнігі. Наступнай кнігай была "С++ за 21 дзень". Назва была вельмі прыцягальным, і таму я не глядзеў на іншыя кнігі, больш высокай якасці. Нягледзячы на ​​гэта, усе зыходнікі былі перапісаныя з кнігі прыкладна за гэты тэрмін у 3 тыдні, і ўжо сёе-тое ў З ++ я разумеў. Хаця хутчэй больш не разумеў з таго, што напісана ў гэтых лістынгах. Але прагрэс быў.

Калі б у мяне спыталі, якая кніга больш за ўсё паўплывала на тваю кар'еру, я б не задумваючыся адказаў - "Мастацтва Праграмавання" - Д. Кнут. Гэта была перапрашыўка мозгу. Я не магу дакладна расказаць, як менавіта гэтая кніга трапіла мне ў рукі, але яна зрабіла наймацнейшы ўплыў на маю далейшую кар'еру.

Кар'ера праграміста. Кіраўнік 2. Школа або самаадукацыя
Мастацтва Праграмавання - must read

Кнігі я купляў у асноўным на радыёрынку, які працаваў толькі па нядзелях. Зэканоміўшы на сняданках чарговыя некалькі дзясяткаў грыўняў, я адправіўся за новай кнігай па З++ ці можа Perl. Выбар быў дастаткова вялікі, але настаўніка ў мяне не было, таму вывучалася ўсё запар. Я папытаў прадаўца, парэкамендаваць мне што-небудзь па праграмаванні. І наколькі я памятаю, ён дастаў з паліцы “Мастацтва Праграмавання. Першы Том». Кніга відавочна была ўжо карыстаная. Куткі вокладкі былі сагнутыя, а з задняга боку відаць была вялікая драпіна, як раз у тым месцы дзе пакінуў свой водгук Біл Гейтс: «Калі вы прачытаеце гэтую кнігу, вам абавязкова варта даслаць мне рэзюмэ» было падпісана ім. Пра Гейтса я ведаў з часопісаў, і падумаў, што было б нядрэнна адправіць яму рэзюмэ, хоць яго і ганілі ўсе Хакеры. Кніга каштавала 72 грн. (15$), і я імкліва ірвануў дадому на трамваі вывучаць новы матэрыял.

Наколькі глыбокія і базавыя рэчы я чытаў, зразумела, я не мог разумець у 15 гадоў. Але старанна спрабаваў выканаць кожнае практыкаванне. Аднойчы ў мяне нават атрымалася правільна вырашыць задачу з ацэнкай складанасці 25 ці 30. Гэта была раздзел пра матэматычную індукцыю. Хоць школьную матэматыку я не кахаў і схопліваў дрэнна, але над мацюк. аналізам Кнута - я праседжваў гадзінамі.
Далей, у другім раздзеле ішлі структуры дадзеных. Гэтыя выявы і малюнкі сувязных спісаў, бінарных дрэў, стэкаў і чэргаў да гэтага ў мяне перад вачыма. За 12 гадоў кар'еры ў камерцыйнай распрацоўцы, я выкарыстоўваў большасць моў агульнага прызначэння.
Гэта C/C++, C#, Java, Python, JavaScript, Delphi. І як бы не называлася мова, у яе стандартнай бібліятэцы былі структуры дадзеных і алгарытмы апісаныя Дональдам Кнутом у сваім трохтомніку. Таму вывучыць, што нешта новае - не займае шмат часу.

Першы том быў праглынуты дастаткова хутка. Прыведзеныя ў кнізе Пугі алгарытмы, я перапісваў на мову С. Не заўсёды атрымлівалася, але чым больш я практыкаваўся, тым большая яснасць прыходзіла. Стараннасці было не займаць. Скончыўшы з першым томам, я не задумваючыся пабег купляць другі і трэці. Другі я пакуль адклаў у бок, а вось за трэці (Сартаванне і Пошук), узяўся грунтоўна.
Я выдатна памятаю, як спісваў цэлы сшытак, "інтэрпрэтуючы" алгарытмы сартавання і пошуку. Таксама як і са структурамі дадзеных, бінарны пошук і хуткая сартаванне візуалізуюцца ў маім мозгу вокамгненна, успамінаючы як яны выглядаюць схематычна ў трэцім томе Кнута.
Пуга чыталася ўсюды. І нават адправіўшыся на мора, не маючы побач ПК, я ўсё роўна прапісваў алгарытмы ў сшытку і праганяў паслядоўнасці лікаў праз іх. Да гэтага часу памятаю, колькіх пакут мне каштавала асвоіць пірамідальную сартаванне, але яно таго каштавала.

Наступнай кнігай, якая аказаўся на мяне моцным уплывам была “Кніга Дракона”. Яна ж "Кампілятары: Прынцыпы, тэхналогіі, інструменты" - А.Ахо, Р.Сеткі. Ёй папярэднічаў Герберт Шылтд, з прасунутымі задачамі на З++. Менавіта ў гэтым месцы кропкі сышлі разам.
Дзякуючы Шылту, я навучыўся пісаць парсеры і інтэрпрэтатары моў. А следам, Кніга Дракона, наштурхнула мяне на напісанне ўласнага кампілятара З++.

Кар'ера праграміста. Кіраўнік 2. Школа або самаадукацыя
Кніга Дракона

Да таго часу, мне правялі мадэмны скрыгочучы інтэрнэт, і я шмат часу праводзіў на самым папулярным сайце для праграмістаў – rsdn.ru. Там панаваў З++ і кожны профі, мог адказаць на пытанні, якія я быў не ў сілах здужаць. Гэта мяне кранала, і я разумеў,
што мне далёка да гэтых барадатых дзядзькоў, таму трэба вывучыць вантробы плюсаў «Ад і Да». Такая матывацыя, прывяла мяне да першага сур'ёзнага праекту – уласнаму кампілятару З++ стандарту 1998 года. Больш падрабязную гісторыю і зыходнікі вы можаце знайсці ў гэтым пасце habr.com/be/post/322656.

Школа ці самаадукацыя

Але вернемся да рэальнасці за межамі IDE. Хоць, да таго часу, я ўсё больш аддаляўся ад рэальнага жыцця і апускаўся ў віртуальную, усё ж узрост і агульнапрынятыя нормы змушалі хадзіць мяне ў каледж. Гэта было сапраўдным катаваннем. Я зусім не разумеў, што раблю ў гэтай установе і навошта слухаю гэтую інфармацыю. У маёй галаве былі зусім іншыя прыярытэты. Вывучэнне Visual Studio 6.0, спробы з WinApi і Delphi 6.
Выдатны сайт firststeps.ru, які дазваляў радавацца кожнаму выкананаму кроку, хаця агульнай карціны я не разумеў. Напрыклад у той жа тэхналогіі MFC ці ActiveX.
А што ў каледжы? Гэта было марнае марнаванне часу. Наогул, калі закранаць тэму вучобы - вучыўся я дрэнна. Да 6 класа быў круглым выдатнікам, а потым паляцелі тройкі, і ўжо да 8-9 класа, я часта прагульваў урокі, за што атрымліваў не ілюзорных рамянёў ад бацькоў.
Таму, прыйшоўшы ў каледж, энтузіязму было таксама мала.
- Дзе ж праграмаванне? Задаваў я сам сабе пытанне. А яго ў першае паўгоддзе - не было. Затое была інфарматыка з MS-DOS і Офіс, а таксама агульнаадукацыйныя прадметы.

У дадатак да ўсяго, у мяне быў замкнёны характар, і я быў вельмі сціплы. Гэты новы разнамасны калектыў відавочна не выклікаў даверу. І гэта было ўзаемна. Таму рознага кшталту здзекі не прымусілі сябе доўга чакаць. Я доўга цярпеў, пакуль не вытрымаў і не даваў па твары аднаму з крыўдзіцеляў на ўроку. Ды так што ён паляцеў за парты. Дзякуй бацьку - біцца ён мяне навучыў з дзяцінства, і пры вострым жаданні я мог прымяніць фізічную сілу. Але адбывалася гэта вельмі рэдка, я часцей цярпеў здзекі, чакаючы максімальнай кропкі кіпення.
Дарэчы, крыўднік, моцна асалапеўшы ад таго, што адбываецца, але па-ранейшаму адчуваючы сваю перавагу, выклікаў мяне на бой у адказ. Ужо на пустцы за навучальнай установай.
Гэта былі не дзіцячыя маханні кулачкамі, як было ў школе. Тут быў шляхетны махач, з разбітымі насамі і кучай крыві. Хлопец аказаўся таксама не з нясмелага дзясятка і ўмела адвешваў хукі і аперкоты. Усе засталіся жывыя, і з таго часу да мяне больш ніхто не задзіраўся.
у гэтым “каледжы для праграмістаў”. У мяне ж жаданне туды хадзіць і зусім знікла ў хуткім часе. Таму я перастаў хадзіць у яго і ніякія пагрозы бацькоў на мяне не дзейнічалі. Нейкім цудам мне залічылі знаходжанне ў каледжы за 10-ы клас школы, і я меў права перайсці ў 11-ы.

Усё б добра, але 11-ы клас, аказаўся не многім лепшым каледжа. Я вярнуўся ў родную школу, сустрэў знаёмых хлопцаў, з якімі вучыўся з першага класа і спадзяваўся, што ўсё будзе нармальна ў родным месцы. Толькі быў адзін нюанс: Рабяты, больш нагадвалі бандытаў з серыялаў, чым тых хлопчыкаў, з якімі я сябраваў у малодшых класах. Усе павальна пайшлі ў качалку, наганяць мышачную масу. Я ж нагадваў бамбук. Доўгавязы і вельмі худы. Зразумела такі бугай-аднакласнік мог скруціць мяне адной левай.
Так і пачало адбывацца з часам. Тут мае байцоўскія навыкі ўжо не мелі дзеянні. Ужо моцна розныя вагавыя катэгорыі былі ў мяне і астатніх дзецюкоў майго калісьці роднага класа. Таксама асаблівасці майго мыслення, давалі аб сабе ведаць.

Не расцякаючыся думкай па дрэве, са школы я таксама сышоў. Дзе я адчуваў сябе камфортна – дык гэта перад маніторам кампутара, з зачыненымі дзвярыма ў мой пакой. Гэта мела сэнс, і інтуітыўна я адчуваў, што раблю правільныя рэчы. А гэтая школа - бескарысны занятак, ды яшчэ і здзекі гэтыя трываць, якія з кожным днём набывалі ўсё больш выдасканалены характар ​​... Усё, хопіць з мяне.
Пасля чарговага канфлікту ў класе, са мной у галоўнай ролі, я сышоў са школы і больш туды не хадзіў.
Недзе 3 месяцы я сядзеў дома, марнуючы вольны час на вывучэнне З++/WinAPI/MFC і rsdn.ru.
У рэшце рэшт, не вытрымала дырэктар школы і патэлефанавала дадому.
- «Дзяніс, ты думаеш вучыцца? Ці будзеш сыходзіць? Вырашай. У падвешаным стане ніхто цябе не пакіне. - заявіла дырэктар
- «Буду сыходзіць» - упэўнена адказаў я

І зноў, тая ж гісторыя. Заставалася давучыцца паўгода, да заканчэння школы. Не пакідаць жа мяне без скарыначкі. Бацькі махнулі на мяне рукой і пакаралі самому ісці дамаўляцца з дырэктарам. Я прыйшоў да дырэктара школы. Яна крыкнула, каб я здымаў шапку, калі ўваходжу. Затым строга спытала - "Што з табой рабіць?". Прызнацца я і сам не ведаў, што рабіць. Мяне цалкам задавальняла цяперашняе становішча рэчаў. Нарэшце яна ўзяла слова:
- «Значыць зробім так. Я дамоўлюся з дырэктарам нашай вячэрняй школы і будзеш хадзіць туды.
- «Угу»

А вячэрняя школа - гэта быў сапраўдны рай, для такіх фрыстайлераў як я. Хочаш хадзі - хочаш не хадзі. У класе налічвалася 45 чалавек, з іх на занятках з'яўлялася ад сілы 6-7. Не ўпэўнены, што ўсе і спісы былі жывыя, а таксама былі на волі. Бо толькі пры мне, аднакласнікі зганялі чужы матацыкл. Але факт заставаўся фактам. Я мог безлімітна прапампоўваць скілы праграмавання, а ў школу хадзіць, калі ўжо вельмі моцна трэба. У выніку я яе скончыў, здаўшы выпускныя іспыты. Шмат на іх не патрабавалі, і ў нас нават быў выпускны. Выпускны, сам па сабе - асобная байка. Памятаю, што мясцовыя бандыты-аднакласнікі забралі ў мяне гадзіннік. А ледзь пачуўшы сваё прозвішча, пры ўручэнні атэстатаў - я рыссю кінуўся за дакументам і куляй вылецеў са школы, каб не наткнуцца яшчэ на якія-небудзь непрыемнасці.

Наперадзе было лета. З Дональдам Пугай пад пахай на пляжы, морам, сонцам і лёсавызначальным рашэннем напісаць свой вялікі праект (кампілятар).
Працяг будзе…

Крыніца: habr.com

Дадаць каментар