رضا کشاورز
رضا کشاورز
خواندن ۷ دقیقه·۴ سال پیش

چطوری خدای پایتون بشم؟ خوان دوم

خب وقتی اینجایی، یعنی با پایتون آشنایی و یه مقدار هم دست به کد شدی قبلن. اگر نه، این مطلب منتظرته: چطوری خدای پایتون بشم؟ خوان اول.


حل مسئله

برنامه‌ نویسی در واقع مهارت حل مسئله است. حل مسئله یه فراینده که با فکر کردن به مسئله شروع می‌شه، بعد به طراحی راه حل هم می‌رسه، و در نهایت این راه حل محاسبه می‌شه و نتیجه به دست می‌آد. ولی یه مشکلی هست: شما ممکنه بتونی خیلی زود بفهمی که راه حل چیه. اما آیا این به تنهایی کافیه؟ نه. وقتی که دست به کد می‌شی، می‌بینی که توی فارسی خوب جواب رو می‌دونی، ولی نمی‌دونی به پایتون چطوری ترجمه‌ش کنی. راه حل چیه؟ تمرین و تمرین و تمرین. اونقدر که دیگه به‌جای فارسی، از همون اول به پایتون فکر بتونی بکنی.


یکم عمیق‌تر: حل تمرین چرا مهمه؟

وقتی که با یه زبون آشنا می‌شی و یه تیکه کد به اون زبون می‌بینی، ممکنه به خودت بگی که «به به، همه‌ش رو بلدم دیگه، برنامه‌نویس شدم، تمام» ولی خب این خیلی با حقیقت فاصله داره. شما الان در مرحله‌ی «آشنایی» هستی. یعنی مغزت می‌تونه با دیدن یه کد، اون رو درک کنه، اما لزومن توان تولید همون رو نداره، هنوز :) با حل تمرین، ما برنامه نویسی رو از آشنایی سطحی، تبدیل می‌کنیم به یک مهارت.

علاوه بر این، مغز ما، توان پردازش محدودی داره در هر لحظه. یعنی شما نمی‌تونی در آن واحد به همه چی فکر کنی. نتیجه‌ش اینه که خیلی زود خسته می‌شی. ولی یه استثنا هست: با تمرین و تکرار یک کار، برای مغز اون کار راحت‌تر می‌شه. مثالش هم همون ماجرای معروف رانندگی: اوایل مدام باید به همه‌چیز دقت می‌کردی (برای من واقعن نفس گیر بود اون اوایل) ولی بعد از یک مدت، کار به جایی رسید که انگاری بدون فکر انجامش می‌دی. (در حقیقت اتفاقی که افتاده اینه که در اثر تکرار، مغزت راحت‌تر می‌تونه تصمیم گیری کن در هر موقعیت و خیلی توان پردازشی کمتری لازم داره، وگرنه کار که همون کاره). برای برنامه نویسی هم همینه. تا وقتی که به تسلط نرسیدی، موقع حل مسئله (یا کار کردن روی یه پروژه) این تسلط نداشتن روی سینتکس، باعث می‌شه حجم زیادی از انرژیت صرف این کار بشه. ولی با تمرین؟ بعد از یه مدت می‌تونی تمام تمرکزت رو روی خود مسئله صرف کنی.


آموزش‌ها کافی نیستن

یه نکته‌ی دیگه اینه که آموزش‌ها هیچوقت کامل نیست. مولف همیشه محدودیت داره. نمی‌خواد متنش/ویدیوش طولانی بشه، وقت نداره همه‌چیز رو بهت بگه، یه سری چیزا شاید برای مبتندی گیج کننده باشن و... . خب چاره چیه؟ درگیر شدن با مسائل مختلف. چرا؟ جلوتر بهش می‌رسیم.


کجا برم برای تمرین خب؟

این چند تا سایت خیلی خفنن و می‌تونن به پیشرفتت واقعن سرعت بدن:

اولی: codewars.com
این سایت بهت کلی تمرین می‌ده که هشت سطح دارن. هشت آسون ترینه و یک سخت‌ترین. اینجوریه که همون اول بهت یه سوال نشون می‌ده حل کنی: این آسون ترین سواله. با حل کردنش امتیاز می‌گیری و سوال بعد سخت‌تره یه ذره. همینطوری هرچقدر که بیشتر پیشرفت کنی، سوال‌های جوندار‌تری نشونت می‌ده.
در ضمن، محدود به پایتون نیست. خیلی از سوالات رو می‌تونی با هرزبانی که خواستی حل کنی.

دومی: hackerrank.com
این هم مشابه بالاییه، ولی علاوه بر اون، یه سری مجموعه سوال هدفمند هم داره. این سوالا که هرکدوم برای یه حوزه‌ی خاصه، کمکت می‌کنه برنامه‌نویسیت رو در یک زمینه‌ی خاص بهتر کنی. مثلن ممکن روی طراحی بهتر الگوریتم بخوای وقت بذاری، یا برنامه نویسی مرتبط با آمار یا...؟ برو خودت ببین.

سومی: pythonchallenge.com
این رو من خیلی دوست دارم. می‌ری توش و اولین سوال رو می‌بینی و همین. آدرس سوال بعدی، درواقع جواب سوال فعلیه. تا حل نکنی از بعدی خبری نیست. رو مخه، نه؟ و خب تازه، نیازی به کد هم نیست. فقط جواب نهایی مهمه.
سایتی هست که شما سراغ دارید و من ننوشتم؟ ممنون می‌شم توی نظرات بگید که هم من و هم دوستان دیگه استفاده کنن.


برای بهتر نتیجه گرفتن پیشنهاد می‌کنم اینا رو هم بخونی:

زود نرو سراغ جواب

برای اینکه بیشترین سود رو از این سایت‌ها ببری، مهم اینه که حتمن روی سوال فکر کنی. یعنی چی؟ یعنی بعد از خوندن سوال، یه راست نپری قسمت جواب. نه! به هیچ وجه. این هیچ سودی نداره. باید باهاش درگیر بشی. حتمن حتمن حتمن حتمن دست به کد شو. روی خاک نمی‌شه شناگر شد. روی کاغذ و هوا هم نمی‌شه برنامه نویس شد. دست به کد شو زور بزن تا به جواب برسی. احتمالن دفعه‌ی اول و دوم به جواب نمی‌رسی، ولی این خوبه. با هر اشتباه، یه نکته‌ی مهم یاد می‌گیری احتمالن.


زیادم گیر نده

حالا اگر مشغول شدی و یهو دیدی سه ساعت گذشته و هنوز به جواب نرسیدی چی؟ نه دیگه. وقتشه بیخیال بشی بری...نه! الان قسمت دوم کار شروع می‌شه. یادته گفتم آموزش‌ها کامل نیستن؟ اینجا این ناقص بودنا خودشون رو نشون می‌دن. احتمالن برای حل این سوال نیاز به چیزی داری که توی مرجع آموزشیت نبوده (یا بوده و فراموش کردی،‌اشکال نداره). حالا وقت اینه که دست به جستجو بزنی. توی سوال یا توی راه حلی که به ذهن خودت رسیده، دنبال کلمات کلیدی بگرد. ببین آیا به تابع خاصی نیاز داری؟ نوع خاصی از شرط رو باید استفاده کنی؟ یا چی؟ برو توی یه موتور جستجو و بگرد ببین به کجا می رسی. حجم زیادی از یادگیری اینجا رخ می‌ده.


این قسمت برای کنجکاو‌هاییه که همه‌ش سوال می‌پرسن :) اگر دوست داشتی می‌تونی ازش رد شی و بری سراغ مطلب بعدی.

یکم عمیق‌تر: حل تمرین چرا مهمه؟

وقتی که با یه زبون آشنا می‌شی و یه تیکه کد به اون زبون می‌بینی، ممکنه به خودت بگی که «به به، همه‌ش رو بلدم دیگه، برنامه‌نویس شدم، تمام» ولی خب این خیلی با حقیقت فاصله داره. شما الان در مرحله‌ی «آشنایی» هستی. یعنی مغزت می‌تونه با دیدن یه کد، اون رو درک کنه، اما لزومن توان تولید همون رو نداره، هنوز :) با حل تمرین، ما برنامه نویسی رو از آشنایی سطحی، تبدیل می‌کنیم به یک مهارت.

علاوه بر این، مغز ما، توان پردازش محدودی داره در هر لحظه. یعنی شما نمی‌تونی در آن واحد به همه چی فکر کنی. نتیجه‌ش اینه که خیلی زود خسته می‌شی. ولی یه استثنا هست: با تمرین و تکرار یک کار، برای مغز اون کار راحت‌تر می‌شه. مثالش هم همون ماجرای معروف رانندگی: اوایل مدام باید به همه‌چیز دقت می‌کردی (برای من واقعن نفس گیر بود اون اوایل) ولی بعد از یک مدت، کار به جایی رسید که انگاری بدون فکر انجامش می‌دی. (در حقیقت اتفاقی که افتاده اینه که در اثر تکرار، مغزت راحت‌تر می‌تونه تصمیم گیری کن در هر موقعیت و خیلی توان پردازشی کمتری لازم داره، وگرنه کار که همون کاره). برای برنامه نویسی هم همینه. تا وقتی که به تسلط نرسیدی، موقع حل مسئله (یا کار کردن روی یه پروژه) این تسلط نداشتن روی سینتکس، باعث می‌شه حجم زیادی از انرژیت صرف این کار بشه. ولی با تمرین؟ بعد از یه مدت می‌تونی تمام تمرکزت رو روی خود مسئله صرف کنی.

بعد از انجام اینا، بیا برای خوان سوم، ولی قبلش:

اگر براتون مفید بود مطلب، با حمایت کردن ازش من رو دلگرم کنید برای تهیه کردن محتوا‌های بعدی. برای این کار می‌تونید از لایک کردن و کامنت کردن نظر و پیشنهاداتون شروع کنید و بعدش هم من رو توی توییتر دنبال کنید. شناسه‌ی من در توییتر: https://twitter.com/re_ke_mo


آماده ای؟ چطور خدای برنامه نویسی بشم - خوان سوم

برای دیدن لیست کل خوان‌ها، می‌تونی بری اینجا: هفت خوان پایتون



پایتونبرنامه نویسیعلم دادههفت خوان پایتونpython
رضا کشاورزم. یک تحلیلگر داده که مغزش همیشه درحال تحلیل جهان پیرامونشه. از تحلیل داده و هوش مصنوعی می نویسم اینجا.
شاید از این پست‌ها خوشتان بیاید