حرفه برنامه نویسی فصل 2. مدرسه یا خودآموزی

ادامه داستان "حرفه برنامه نویس".

سال 2001 بود. سالی که در آن جالب ترین سیستم عامل منتشر شد - ویندوز XP. rsdn.ru چه زمانی ظاهر شد؟ سال تولد سی شارپ و دات نت فریم ورک. سال اول هزاره. و یک سال رشد تصاعدی در قدرت سخت افزار جدید: Pentium IV، ۲۵۶ مگابایت رم.

پس از پایان کلاس نهم و دیدن اشتیاق پایان ناپذیر من به برنامه نویسی، والدینم تصمیم گرفتند من را به دانشگاه به رشته برنامه نویسی منتقل کنند. آنها معتقد بودند که اینطور بهتر است و آنجا به من یاد می دهند. اتفاقاً کلمه کالج به این موسسه در حومه یک شهرک صنعتی نمی خورد. این یک مدرسه فنی معمولی بود که هیچ تفاوتی با سایر دانشکده های فنی نداشت که برچسبی با کلمه مد روز "کالج" روی نمای خود آویزان نمی کردند.
خوب. من با پدر و مادرم مخالفت نکردم و به تصمیم آنها اعتراض نکردم. به هر حال من به خودآموزی مشغول بودم و فکر می کردم در این مکان جدید مقداری دانش اضافی به من می دهند.


آن تابستان قبل از رفتن به کالج، شروع کردم به مطالعه کامل تمام فناوری های ممکن که در مجله منتشر شده بود. "هکر". آن را تکه تکه خواندم و دوباره خواندم. من به خصوص مصاحبه با هکرهای واقعی و توصیه های آنها را دوست داشتم.
اکثر هکرهای جالب روی لینوکس بودند. و مزدا (ویندوز) برای لمرز بود. هر کسی که مجله را خوانده باشد سبک پست های آن را به خاطر می آورد. بنابراین، در ذهن شکننده من، دو ایده با هم جنگیدند - ترک ویندوز یا سرد بودن و چسبیدن صرف به لینوکس.
هر شماره جدید مجله Hacker به من دلیل جدیدی برای فرمت کردن دیسک و نصب لینوکس Red Hat 7 یا Windows Me می داد. البته، من هیچ وکتور آموزشی نداشتم و آنچه را که در مجلات یا سی دی‌های غیرقانونی مانند «اسرار هکرها» می‌خواندم، انجام می‌دادم. نصب دو سیستم عامل به طور موازی نیز پس از یک پر کردن جدید در روح "Windows XP aka parrot - این برای زنان خانه دار است" پاک شد. و اگر می خواهید کارهای جدی انجام دهید، باید از کنسول لینوکس با چشمان بسته کار کنید." البته من می‌خواستم سیستم‌ها را هک کنم، بفهمم شبکه چگونه کار می‌کند و در آن زمان ناشناس قدرتمند باشم.

دیسک بدون هیچ پشیمانی فرمت شد و یک کیت توزیع از یک سیستم مشابه یونیکس روی آن نصب شد. بله بله. من یک بار مصاحبه ای با یک هکر واقعی خواندم که فقط از FreeBSD 4.3 از کنسول استفاده می کند. او همزمان مسئول هک بانک ها و سیستم های دولتی بود. این یک صاعقه به سر بود و من 5 بار سیستم عامل BSD را به عنوان سیستم اصلی نصب کردم. مشکل این بود که بعد از نصب، چیزی به جز کنسول برهنه وجود نداشت. حتی صدا. و برای نصب KDE2 و روشن کردن صدا باید با تنبور زیاد برقصید و چندین کانفیگ را اصلاح کرد.

حرفه برنامه نویسی فصل 2. مدرسه یا خودآموزی
توزیع FreeBSD 4.3 هکرترین سیستم عامل است

درباره ادبیات

به محض اینکه کامپیوتر گرفتم، شروع به خرید کتاب های برنامه نویسی کردم. اولین راهنمای "توربو پاسکال 7.0" بود. این تعجب آور نیست، زیرا من قبلاً کمی پاسکال را از دوره های برنامه نویسی می دانستم و می توانستم به تنهایی به یادگیری ادامه دهم. مشکل این بود که هکرها به پاسکال نمی نویسند. سپس زبان پرل مد شد، یا برای بچه های باحال تر، C/C++ بود. حداقل این چیزی است که آنها در مجله نوشتند. و اولین کتابی که تا آخر خواندم "زبان برنامه نویسی C" بود - نوشته کرنیگان و ریچی. اتفاقا من در محیط لینوکس درس خواندم
و از gcc و ویرایشگر داخلی KDE برای نوشتن کد استفاده کرد.

به دنبال این کتاب، دایره المعارف یونیکس خریداری شد. وزن آن 3 کیلوگرم بود و در صفحات A3 چاپ شده بود.
در قسمت جلوی کتاب تصویری تمام‌قد از یک شیطان کارتونی با چنگال وجود داشت، و سپس در اوکراین 125 گریونا هزینه داشت (که در سال 25 حدود 2001 دلار است). برای خرید کتاب از یکی از دوستان مدرسه ای ام پول قرض گرفتم و والدینم بقیه را اضافه کردند. سپس، من مشتاقانه شروع به مطالعه دستورات یونیکس، ویرایشگر vim و emacs، ساختار سیستم فایل و داخل فایل های پیکربندی کردم. تقریباً 700 صفحه از دایره المعارف بلعیده شد و من یک قدم به رویای خود نزدیک شدم - تبدیل شدن به یک کول هاتزکر.

حرفه برنامه نویسی فصل 2. مدرسه یا خودآموزی
دایره المعارف یونیکس - یکی از اولین کتاب هایی که خواندم

من تمام پولی را که پدربزرگ و مادربزرگ و پدربزرگ مهربانم به من دادند خرج کتاب کردم. کتاب بعدی C++ در ۲۱ روز بود. عنوان بسیار جذابی بود و به همین دلیل به کتاب های دیگر با کیفیت بالاتر نگاه نکردم. با وجود این، همه منابع در این مدت 21 هفته از کتاب کپی شدند و من قبلاً چیزی را در C++ فهمیدم. اگرچه من احتمالاً بیشتر از آنچه در این لیست ها نوشته شده بود متوجه نشدم. اما پیشرفت داشت.

اگر از من بپرسید که کدام کتاب بیشترین تأثیر را در حرفه شما داشته است، بدون تردید پاسخ خواهم داد - "هنر برنامه نویسی" - D. Knuth. این یک سیم کشی مجدد مغز بود. نمی‌توانم دقیقاً به شما بگویم که چگونه این کتاب به دست من رسید، اما عمیق‌ترین تأثیر را بر آینده شغلی من گذاشت.

حرفه برنامه نویسی فصل 2. مدرسه یا خودآموزی
هنر برنامه نویسی - حتما بخوانید

کتاب‌ها را عمدتاً از بازار رادیو خریدم که فقط یکشنبه‌ها باز بود. پس از صرفه جویی چند ده گریونی دیگر در صبحانه، به سراغ کتاب جدیدی در C++ یا شاید Perl رفتم. انتخاب بسیار بزرگ بود، اما من مربی نداشتم، بنابراین همه چیز را مطالعه کردم. از فروشنده خواستم چیزی در مورد برنامه نویسی به من توصیه کند. و تا آنجا که من به یاد دارم، او "هنر برنامه نویسی" را از قفسه برداشت. جلد اول". این کتاب به وضوح قبلاً استفاده شده بود. گوشه های جلد خم شده بود و خراش بزرگی در پشت نمایان بود، دقیقاً همان جایی که بیل گیتس نظر خود را گذاشته بود: «اگر این کتاب را می خوانید، حتماً باید رزومه خود را با امضای او برای من ارسال کنید. من در مورد گیتس از مجلات می دانستم و فکر می کردم خوب است که رزومه ای برای او بفرستم، حتی اگر همه هکرها از او انتقاد می کردند. قیمت کتاب 72 UAH. (15 دلار)، و من به سرعت با تراموا به خانه رفتم تا مطالب جدید را مطالعه کنم.

چقدر مطالب عمیق و اساسی خواندم البته در 15 سالگی نمی توانستم بفهمم. اما من با پشتکار سعی کردم هر تمرینی را کامل کنم. یک بار حتی توانستم یک مسئله را با درجه سختی 25 یا 30 به درستی حل کنم. این فصلی در مورد استقراء ریاضی بود. اگرچه من ریاضیات مدرسه را دوست نداشتم و آن را به خوبی درک نمی کردم، از تشک گذشته بودم. تحلیل کنوت - ساعت ها نشستم.
بعد، در فصل دوم، ساختارهای داده وجود داشت. این تصاویر و تصاویر لیست های پیوندی، درختان باینری، پشته ها و صف ها هنوز جلوی چشمان من هستند. در طول 12 سال کار خود در توسعه تجاری، از بیشتر زبان های عمومی استفاده کرده ام.
اینها C/C++، C#، Java، Python، JavaScript، Delphi هستند. و مهم نیست که این زبان چه نامیده می شود، کتابخانه استاندارد آن شامل ساختارهای داده و الگوریتم هایی است که توسط دونالد کنوت در کتاب سه جلدی خود شرح داده شده است. بنابراین، یادگیری چیزهای جدید زمان زیادی نمی برد.

جلد اول نسبتاً سریع بلعیده شد. الگوریتم‌های ارائه‌شده در کتاب Knuth را به زبان C بازنویسی کردم. همیشه جواب نمی‌داد، اما هر چه بیشتر تمرین می‌کردم، وضوح بیشتری پیدا می‌کردم. غیرت کم نبود. پس از اتمام جلد اول، بدون تردید برای خرید جلد دوم و سوم دویدم. دومی را فعلا کنار گذاشتم، اما سومی (مرتب‌سازی و جستجو) را به طور کامل انجام دادم.
به خوبی به یاد دارم که چگونه یک دفترچه کامل را پر کردم و الگوریتم های مرتب سازی و جستجو را «تفسیر» کردم. درست مانند ساختارهای داده، جستجوی دودویی و مرتب‌سازی سریع در مغز من با سرعت رعد و برق تجسم می‌شوند و به یاد می‌آورم که چگونه در جلد سوم Knuth به صورت شماتیک به نظر می‌رسند.
تازیانه همه جا خوانده می شد. و حتی زمانی که به دریا می رفتم، بدون رایانه شخصی، هنوز الگوریتم ها را در یک دفترچه یادداشت می کردم و دنباله ای از اعداد را از طریق آنها می گذراندم. من هنوز به یاد دارم که برای تسلط بر هپ سورت چقدر درد کشیدم، اما ارزشش را داشت.

کتاب بعدی که تأثیر زیادی روی من گذاشت «کتاب اژدها» بود. همچنین "کامپایلرها: اصول، فناوری‌ها، ابزارها" است - A. Aho, R. Seti. پیش از او هربرت شیلتد، با وظایف پیشرفته در C++. اینجاست که نقطه ها کنار هم قرار گرفتند.
به لطف شیلد، نوشتن تجزیه کننده و مترجم زبان را یاد گرفتم. و سپس Book of the Dragon مرا ترغیب کرد که کامپایلر C++ خودم را بنویسم.

حرفه برنامه نویسی فصل 2. مدرسه یا خودآموزی
کتاب اژدها

در آن زمان، به من یک اتصال اینترنتی مودم داده شده بود، و زمان زیادی را در محبوب ترین سایت برای برنامه نویسان - rsdn.ru گذراندم. ++C در آنجا غالب بود و هر حرفه‌ای می‌توانست به سؤالاتی پاسخ دهد که من قادر به انجام آن‌ها نبودم. آزارم داد و فهمیدم
که من از این بچه های ریشدار دور هستم، بنابراین باید درونیات مزایای "از و به" را مطالعه کنم. این انگیزه من را به اولین پروژه جدی خود هدایت کرد - کامپایلر خودم از استاندارد C++ 1998. تاریخچه و منابع دقیق تر را می توانید در این پست بیابید habr.com/fa/post/322656.

مدرسه یا خودآموزی

اما اجازه دهید به واقعیت خارج از IDE برگردیم. اگرچه، در آن زمان، من به طور فزاینده ای از زندگی واقعی دور می شدم و خودم را در زندگی مجازی غرق می کردم، هنوز هم سن و هنجارهای پذیرفته شده من مجبورم کرد به دانشگاه بروم. شکنجه واقعی بود من مطلقاً نمی دانستم که در این مؤسسه چه کار می کردم و چرا به این اطلاعات گوش می دادم. در ذهنم اولویت های کاملا متفاوتی داشتم. آموزش ویژوال استودیو 6.0، تلاش با WinApi و دلفی 6.
یک سایت فوق العاده، firststeps.ru، که به من اجازه داد از هر قدمی که برمی داشتم خوشحال باشم، اگرچه تصویر کلی را درک نکردم. به عنوان مثال، در همان فناوری MFC یا ActiveX.
در مورد دانشگاه چطور؟ این اتلاف وقت بود. در کل اگر به مبحث مطالعات بپردازیم، من ضعیف مطالعه کردم. تا کلاس ششم دانش آموز ممتاز بودم و بعد از آن نمرات C گرفتم و تا کلاس هشتم تا نهم اغلب کلاس را ترک می کردم که برای آن از پدر و مادرم کمربندهای توهم دریافت می کردم.
بنابراین، وقتی به دانشگاه آمدم، شور و شوق کمی وجود داشت.
- برنامه نویسی کجاست؟ یه سوال از خودم پرسیدم اما او در نیمه اول سال آنجا نبود. اما علوم کامپیوتر با MS-DOS و Office و همچنین موضوعات آموزش عمومی وجود داشت.

علاوه بر این، من شخصیتی درونگرا داشتم و بسیار متواضع بودم. این خدمه جدید رنگارنگ به وضوح اعتماد به نفس را برانگیخت. و متقابل بود. بنابراین، انواع تمسخر دیری نپایید. مدت زیادی تحمل کردم تا اینکه طاقت نیاوردم و درست سر کلاس با مشت به صورت یکی از متخلفان زدم. بله، پس به سمت میزش پرواز کرد. با تشکر از پدرم - او از کودکی به من جنگیدن را آموخت و اگر واقعاً می خواستم می توانستم از نیروی بدنی استفاده کنم. اما این خیلی به ندرت اتفاق می افتاد؛ بیشتر اوقات من در انتظار حداکثر نقطه جوش، تمسخر را تحمل می کردم.
به هر حال، متخلف که به شدت از اتفاقی که در حال رخ دادن بود غافلگیر شده بود، اما همچنان برتری خود را احساس می کرد، مرا به مبارزه ای تلافی جویانه دعوت کرد. در حال حاضر در قسمت خالی پشت مؤسسه آموزشی.
این همان طور که در مدرسه بود، مشت تکان دادن بچه ها نبود. یک مخاچ نجیب با بینی شکسته و خون فراوان بود. آن مرد همچنین یک مرد ترسو نبود و به طرز ماهرانه‌ای قلاب‌ها و آپرکات‌ها را تحویل می‌داد. همه زنده ماندند و از آن زمان دیگر هیچ کس مرا مورد آزار و اذیت قرار نداده است.
در این "کالج برنامه نویسان". خیلی زود تمایل به رفتن به آنجا را کاملا از دست دادم. بنابراین از رفتن به آنجا منصرف شدم و هیچ تهدیدی از جانب پدر و مادرم روی من تأثیری نداشت. با معجزه ای، اقامت من در دانشگاه برای کلاس دهم مدرسه به حساب آمد و من حق داشتم تا یازدهم بروم.

همه چیز خوب خواهد بود، اما معلوم شد که کلاس یازدهم خیلی بهتر از دانشگاه نیست. به مدرسه خانه ام برگشتم، با پسرانی آشنا شدم که از کلاس اول با آنها درس خوانده بودم، و امیدوار بودم که همه چیز در زادگاهم خوب باشد. فقط یک نکته ظریف وجود داشت: بچه ها بیشتر شبیه راهزنان سریال های تلویزیونی بودند تا پسرهایی که من در دوران دبستان با آنها دوست بودم. همه برای به دست آوردن توده عضلانی به باشگاه هجوم آوردند. من شبیه بامبو بودم لاغر و بسیار لاغر. البته، چنین همکلاسی قلدری می تواند من را با یک دست چپ ببندد.
این چیزی است که با گذشت زمان شروع به اتفاق افتادن کرد. در اینجا دیگر مهارت های جنگی من تأثیری نداشت. رده های وزنی برای من و بقیه پسران کلاس زمانی مادری ام بسیار متفاوت بود. همچنین، ویژگی های تفکر من خود را احساس کرد.

بدون اینکه بگذارم افکارم سرگردان شود، من هم مدرسه را ترک کردم. جایی که احساس راحتی می کردم جلوی یک مانیتور کامپیوتر بود که در اتاقم بسته بود. منطقی بود و به طور شهودی احساس می کردم کار درستی را انجام می دهم. و این مدرسه یک فعالیت بیهوده است، و حتی برای تحمل این طعنه ها، که هر روز پیچیده تر می شد... همین، بس که داشتم.
بعد از درگیری دیگر در کلاس، با حضور من در نقش اصلی، مدرسه را ترک کردم و دیگر به آنجا نرفتم.
حدود 3 ماه در خانه نشستم و اوقات فراغت خود را صرف یادگیری C++/WinAPI/MFC و rsdn.ru کردم.
در نهایت مدیر مدرسه طاقت نیاورد و به خانه زنگ زد.
- "دنیس، به درس خواندن فکر می کنی؟ یا ترک می کنی؟ تصميم گرفتن. هیچ کس شما را در بلاتکلیفی رها نخواهد کرد.» - گفت کارگردان
با اطمینان پاسخ دادم: "من می روم."

و باز هم همان داستان نیم سالی مانده بود تا تحصیلاتم را تمام کنم تا از مدرسه فارغ التحصیل شوم. منو بدون پوسته رها نکن پدر و مادرم از من دست کشیدند و به من گفتند که خودم بروم با کارگردان مذاکره کنم. آمدم پیش مدیر مدرسه. وقتی وارد شدم سرم داد زد که کلاهم را بردارم. سپس با جدیت پرسید: "با تو چه کنم؟" راستش من خودم نمیدونستم چیکار کنم من از وضعیت فعلی همه چیز راضی بودم. بالاخره حرفش را گرفت:
- «پس بیا این کار را بکنیم. من با مدیر مدرسه عصرمان توافق می کنم و شما به آنجا خواهید رفت.»
- "آره"

و مدرسه عصرانه برای آزادکارانی مثل من بهشت ​​واقعی بود. اگر خواستی برو یا نرو 45 نفر در کلاس بودند که از این تعداد فقط 6-7 نفر در کلاس حاضر شدند. من مطمئن نیستم که همه افراد در لیست زنده و همچنین آزاد باشند. زیرا فقط در حضور من همکلاسی ها موتورسیکلت شخص دیگری را دزدیدند. اما این واقعیت یک واقعیت باقی ماند. می توانستم مهارت های برنامه نویسی خود را به طور نامحدود ارتقا دهم و در زمانی که واقعاً به آن نیاز داشتم به مدرسه بروم. در نهایت آن را تمام کردم و امتحانات نهایی ام را قبول شدم. آنها زیاد تقاضا نکردند و ما حتی یک جشن فارغ التحصیلی داشتیم. فارغ التحصیلی به خودی خود یک افسانه جداگانه است. یادم می آید که راهزنان و همکلاسی های محلی ساعت مرا گرفتند. و به محض شنیدن نام خانوادگی خود در حین ارائه گواهینامه ها برای گرفتن مدرک با یورتمه هجوم بردم و مانند گلوله از مدرسه بیرون رفتم تا دیگر به دردسر نیفتم.

تابستان در پیش بود. با دونالد کنوت زیر بغلش در ساحل، دریا، خورشید و تصمیم سرنوشت ساز برای نوشتن پروژه بزرگ خود (کامپایلر).
ادامه ...

منبع: www.habr.com

اضافه کردن نظر