مسیری که من طی کردم برای یادگیری پایتون

مقدمه

یکی از اولین سوالاتی که هر کس برای یادگرفتن هر موضوعی در ذهنش دارد این است که دقیقا لازم است چه چیز یاد بگیرم تا بتوانم این کار را بکنم؟ سوالات دیگری مانند اینکه چگونه این چیز را یاد بگیرم؟ از کدام منابع استفاده کنم؟ کدام منابع را کنار بگذارم؟ فارسی بخوانم یا انگلیسی؟

من تلاش مي‌کنم در یک مجموعه پست که برچسب «یادگیری» به آن‌ها می‌زنم، بنویسم که چگونه هر کدام از مهارت‌هایم را چگونه یاد گرفتم.

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

اگر دوست ندارید سیر تاریخی یاد گرفتن من را بدانید و فقط به دنبال یک خلاصه هستید، پیشنهاد می‌کنم قسمت تاریخچه را نادیده‌ بگیرید و به بخش جمع‌بندی بروید.

تاریخچه

من در دوران لیسانس تصمیم گرفتم که زبان پایتون را یاد بگیرم. در دبیرستان به زبان ++C چند برنامه خیلی کوچک نوشته بودم و با مفاهیم پایه‌ای مانند متغیرها، ساختار‌های شرطی، حلقه‌ها، تابع و کلاس و ... آشنا بودم. اما چون سال‌ها از آن استفاده نکرده بودم، تقریبا تمامی این مهارت را فراموش کرده بودم. ترم یک دانشگاه یک درس برنامه‌نویسی مقدماتی، به زبان سی پلاس پلاس، برای ما ارائه شد ولی متاسفانه من خیلی برای این درس وقت نگذاشتم و نتوانستم با استاد آن درس ارتباط برقرار کنم و به جز مطالب سطحی چیز بیشتری از این درس یاد نگرفتم. بنابراین تصمیم گرفتم که با استفاده از ابزار‌های آنلاین مهارت برنامه‌نویسی‌ام را پرورش دهم. با چند سرچ به پلتفرم‌های Edx و Coursera برخوردم که آن موقع فیلتر نبود. ابتدا با توجه به اینکه در کنار برنامه‌نویسی مایل بودم آمار نیز یاد بگیرم، دوره‌ی زبان برنامه‌نویسی R را شروع کردم، اما نتوانستم با این زبان و آموزش‌های کورس R programming ارتباط برقرار کنم.

در مرحله‌ی بعدی به سراغ پایتون رفتم. در جاهای مختلفی خوانده بودم که این زبان بسیار به زبان انگلیسی نزدیک است و افراد به آسانی می‌توانند آن را فرا بگیرند و استفاده کنند. خوشبختانه دوره‌ای که در کورسرا پیدا کردم، Python for everybody، خیلی با سلیقه‌ی من برای یادگیری (یاد گرفتن همراه با حل مسئله و انجام دادن) هم‌خوانی داشت. پنج دوره این مجموعه را گذراندم و اعتماد به نفس لازم را کسب کردم که بگویم من می‌توانم به این زبان کد بنویسم.

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

با این حال، در این مدت همواره به این فکر بودم که چگونه با به کار بردن پایتون جلوی از دست رفتن سرمایه‌گذاری زمانی خودم را بگیرم. ابتدا در اینترنت سایت Project Euler را پیدا کردم. چند مسئله‌ی اول این سایت را حل کردم. با این حال، نتوانستم آن طور که باید و شاید با این سایت ارتباط بگیرم، چرا که این سایت به نظر من بیشتر جامعه هدفش برنامه‌نویسان و علاقمندان به علوم کامپیوتر است و من که از حوزه‌ی زیستی می‌خواهم برنامه‌نویسی را یاد بگیرم خیلی با این سایت ارتباط نگرفتم. به طور اتفاقی و توسط یکی از دانشجویان رشته‌ی دکتری پیوسته‌ی بیوتکنولوژی، آقای علی یزدی‌زاده، با سایت Rosalind آشنا شدم. این سایت مشابه سایت پروژه‌ی ایولر است با این تفاوت که جامعه‌ی هدف آن دانشجویان زیست‌شناسی و بیوانفورماتیک است. اکنون برای تفریح و چالش هر از چندی به این سایت مراجعه می‌کنم و یکی از مسئله‌هایی را که برایم جالب است انتخاب می‌کنم تا حل کنم.

همانطور که گفتم میان یادگیری اولیه من و استفاده از پایتون دو سال فاصله افتاد. در این میان، به یک تیم استارتاپی به نام ژنودیپ پیوستم. در این شرکت لازم بود که بتوانم با پایتون کار کنم لذا به توصیه یکی از همکاران با استفاده از سایت W3schools به مرور و یادگیری پایتون پرداختم. اخیراً نیز با جست و جو در  Youtube و stackoverflow سؤالات و چیز‌هایی که بلد نیستم را تلاش می‌کنم یاد بگیرم. همچنین، به توصیه‌ی جادی با کتاب Think python که یک کتاب آزاد است، آشنا شدم. قصد ندارم این کتاب را جلد به جلد بخوانم اما با بررسی سریع آن به نظرم آمد بعضی جاهای این کتاب می‌تواند برای من مفید باشد. به نظرم این کتاب برای کسی که با کتاب خواندن می‌خواهد چیزی را یاد بگیرد، خیلی مناسب است.

جمع‌بندی

توصیه من برای کسی که می‌خواهد پایتون یاد بگیرد شامل مراحل زیر است.

    1. اول تلاش کنید که یک دانش کلی با استفاده از یکی از منابع زیر از سینتکس پایتون برای خود بسازید. در این مرحله تلاش نکنید که همه چیز را عیناً یاد بگیرید صرفاً متوجه شوید که چه چیز‌هایی وجود دارد و چگونه می‌شود آن‌ها را نوشت و از آن‌ها استفاده کرد.

            1. W3schools

            2. Think python

            3. Python for everybody

    2. در مرحله‌ی بعدی تلاش کنید آن دانش اولیه را با استفاده از نوشتن برنامه‌های کوچک و تمرین‌های ساده عمیق‌تر کنید. در این رابطه می‌توانید از منابع زیر استفاده کنید.

            1. Euler project

            2. Rosalind

    3. سعی کنید یک پروژه‌ی بزرگ‌تر را شروع کنید و برای خودتون از پایتون استفاده کنید. قرار نیست از اول تا آخر پروژه را بدانید. کافی‌است کار را شروع کنید و بعد هر مشکلی داشتید با جستجو کردن و ویدئو دیدن، سعی کنید بیشتر بدانید.

نظرات