فهرست مطالب
پیشرفت در برنامهنویسی هم مثل سایر مهارتهای دیگر، به یک مسیر واضح و مشخص نیاز دارد. در این مقاله به نقشه راه یادگیری پایتون میپردازیم، تا ببینیم برای کسب مهارت در یکی از محبوبترین زبانهای برنامهنویسی حال حاضر دنیا، چه ایستگاههایی در پیش رو داریم و سریعترین و بهترین نقشه راه یادگیری پایتون کدام است. دقت کنید که این مقاله، از سری مقالات دوره برنامهنویسی ایرانلرن، هم برای افراد صفرکیلومتر و مبتدی و هم برای کسانی که تا حدودی با برنامهنویسی آشنایی دارند مناسب است.
پیش نیاز یادگیری پایتون چیست؟
اینکه در شروع مسیر یادگیری پایتون هستید و تا حدودی احساس سردرگمی میکنید، طبیعیترین اتفاق ممکن است. برای افراد تازهکار، قلمروی برنامهنویسی، بیسر و ته و ترسناکی به نظر میرسد. ورود به یک دنیای جدید و وجود بینهایت موضوع و ترفند و نکتهٔ مختلف برای یادگیری، هر تازهواردی را به دلهره میاندازد. اما اجازه بدهید تا خیالتان را راحت کنیم. در شروع یادگیری پایتون و در واقع در مرحلهٔ آموزش مقدمات پایتون، هیچ خبری از انبوه پیشنیازها و شاخ و برگهای اضافی نیست. در واقع، اگر نقشه راهی غیر از این باشد، نقشهٔ راه استاندارد و هوشمندانهای نخواهد بود. اما ببینیم پیش نیازهای اولیه برای یادگیری پایتون شامل چه مواردی میشود:
- انتخاب منبع مناسب
- دانلود و نصب پایتون
- توانایی کار با کامپیوتر
همین؟! آیا یادگیری یک زبان برنامهنویسی پیشرفته مثل پایتون،
- به هیچ مقدمات عجیب و غریبی نیاز ندارد؟
- نیازی به قوی بودن در ریاضی و آمار و احتمالات نیست؟
- به یک سیستم قوی احتیاج ندارد؟
- نیازی به زمینهٔ تحصیلی در رشته کامپیوتر و برنامهنویسی ندارد؟
خوشبختانه پاسخ تمام موارد بالا منفی است! هرچند برخی از این موارد، مثل داشتن پیشزمینهٔ ریاضیات و کامپیوتر، میتوانند در آینده، به فردی که هدفش فعالیت در حوزهٔ هوش مصنوعی و آنالیز عددی است کمک کنند. اما همانها هم، مسائلی هستند که میتوان در آینده آموخت. یعنی در شروع یادگیری پایتون، ترمزی برای دانشجو نخواهند بود. توصیه میکنیم به مقالهٔ زبان پایتون چیست و چه کاربردهایی دارد سری بزنید.
انتخاب منبع مناسب، تنها پیش نیاز اصلی
ممکن است از آن دسته افراد باشید که یادگیری با ویدیوهای آموزشی را به همه چیز ترجیح میدهند. شاید هم خواندن مقالات آموزشی برایتان راهدستتر باشد. گروه اول میتوانند از بیشمار ویدیوی آموزشی در یوتیوب استفاده کنند و گروه دوم میتوانند علاوه بر مطالعهٔ مقالات در وبسایتهای مختلف، از دفترچه راهنما یا Manual رسمی خود پایتون استفاده کنند. هرچه باشد این دفترچهٔ راهنما، توسط توسعهدهندگان و افراد فعال در پشت صحنهٔ این زبان طراحی شده و همه چیز، مو به مو توضیح داده شده است.
مشکل اینجاست که یادگیری از طریق یوتیوب، یا مقالات یا دفترچه راهنمای پایتون، یا حتی بهترین کتاب آموزش پایتون یک سری چالش و ضعف اساسی دارد که نمیتوان از آنها غافل بود.
- عدم دسترسی به یک استاد راهنما و عدم امکان رفع اشکال
- نبود تمرکز و انسجام در مطالب با توجه به سطح فعلی فرد
- نقشه راه یادگیری پایتون، چندان بهینه نیست
- دشواری در حفظ نظم و دیسیپلین، انجام تکالیف و پیشرفت با سرعت منطقی
بهترین مسیر یادگیری پایتون
تجربه نشان داده که تمام منابع و موارد ذکر شده در بخش قبل، اگر به عنوان مکمل و در موازات یک دورهٔ آموزشی ساختارمند و تعاملی مثل دوره پایتون ایرانلرن قرار بگیرند، بازدهی به مراتب بهتری خواهند داشت. در انتهای این مقاله، یک سری نکات مهم را برای پیشرفت سریعتر در پایتون (و در کل هر زبان برنامهنویسی دیگر) مرور خواهیم کرد. اما ببینیم مستقل از اینکه چه منبع یا دورهای را برای یادگیری پایتون انتخاب کنیم، چه مسیری در پیش رو خواهیم داشت.
- مقدمات سینتکس پایتون، دستورات شرطی و متغیرها
- حلقهها و کار با توابع پایتون (توابع پیشفرض یا Built-in و ساخت توابع دلخواه)
- کار با ساختارهای زبان پایتون (Lists, Tuples, Sets, Dictionaries)
- آشنایی با مفاهیم برنامهنویسی شیگرا (Object, Class, Inheritance)
- مفاهیم پیشرفتهتر پایتون (RegEx, Decorators, Lambda, Modules, Iterators)
- آشنایی با فریمورکها و کتابخانههای پایتون (یادگیری در حین انجام پروژه)
- آشنایی با سیستمهای مدیریت تغییرات در پروژه یا Version Control Systems مثل Git
- تبریک! شما یک پایتونکار خبره هستید و از آنچه فکر میکنید به بازار کار نزدیکترید!
۱) سینتکس مقدماتی، انواع داده، شرطیها و ابزارهای ورودی/خروجی
در وهلهٔ اول، باید تا حدودی از گرامر و سینتکس پایتون و سپس Data Types یا انواع دادههای آن سر در بیاوریم. زیاد در قید و بند سینتکس نباشید و در عوض تا جای ممکن مثال حل کنید. اینکار خود به خود قلق و سینتکس پایتون را در ذهنتان جا میاندازد. پس در قدم اول با این موارد مواجهیم:
- انواع دادهها (integer, float, str, boolean)
- شرطها یا همان گزارههای شرطی (If-else)
- گرفتن ورودی از کاربر و فرستادن مقدار به خروجی با ()input(), print
این قسمت از مسیر، مهمترین قسمت در شروع یادگیری پایتون است. درک و تمرین کافی با موارد بالا، یک جعبه ابزار کامل و یک فنداسیون قوی در برنامهنویسی در اختیارمان میگذارد. فنداسیونی که علاوه بر نقشه راه یادگیری پایتون، در یادگیری هر زبان برنامهنویسی دیگری هم به ما کمک خواهد کرد. در ادامه، عناصر کلیدی و تشکیلدهندهٔ مقدمات پایتون را لیست میکنیم تا دید بهتری به آنها داشته باشید. در ضمن، فعلا نیازی به حفظ کردن هیچ چیزی نیست. چون تمام این موارد را در حین تمرین و انجام مسائل ریز و درشت در دورهٔ پایتون ایرانلرن یاد خواهید گرفت.
انواع دادهها در پایتون
- Numeric data types یا دادههای عددی مثل int, float, complex
- String data types یا دادههای متنی مثل str
- Sequence types یا دادههای ترتیبی مثل list, tuples, range
- Binary types یا دادههای دودویی مثل bytes, bytearray, memoryview
- Mapping data types یا دادههای نگاشتی مثل dict
- Boolean type یا دادههای منطقی مثل bool
- Set data types یا دادههای مجموعهای مثل set, frozenset
شرطها و کار با ورودی و خروجی در پایتون
کار با Conditionals یا دستورات شرطی مثل if و else و همچنین کار با ورودی و خروجی با کمک توابعی مثل ()input یا ()print از کاربر، بخش جداییناپذیری از برنامهنویسی با پایتون است. خصوصا در شروع یادگیری پایتون که قرار است کلی مسائل ساده حل کنید و نتیجه را در خروجی ببینید با دو دستور یا تابع زیر زیاد سر و کار خواهید داشت:
- ()input = با اجرای این تابع، کاربر را ملزم به وارد کردن یک مقدار به عنوان ورودی میکند.
- ()print = این تابع مقادیر مورد نظر را در خروجی چاپ میکند.
۲) کار با حلقهها و توابع پایتون
در وادی برنامهنویسی، منظور از حلقه یا Loop دستوراتی هستند که قابلیت تکرار دارند. یعنی میتوانیم یک یا چند خط دستور دلخواه را درون یک حلقه قرار دهیم و آنرا به تعداد X مرتبه تکرار کنیم. همچنین امکانش را داریم که با هر بار اجرای حلقه، یک شرط به خصوص را بررسی کنیم و در صورت رسیدن به نتیجهٔ دلخواه، تکرار لوپ را متوقف نماییم و به اصطلاح از حلقه خارج شویم. توابع پایتون هم که سنگ بنای کدنویسی امروزی هستند. توابع بلوکهای کد یا مجموعهای از دستوراتند که یک اسم و رسم مشخص پیدا میکنند و امکان استفادهٔ مجدد دارند. خود پایتون تعداد زیادی تابع پیشفرض و بدردبخور دارد و از آن طرف، امکان تعریف توابع جدید فراهم است. اگر درک درستی از توابع داشته باشیم، یکی از مهمترین ارکان برنامهنویسی شیگرا یا OOP را یاد گرفتهایم.
۳) ساختارهای داده در پایتون یا Data Structures
این مرحله تا حدودی با همان بخش مقدمات همپوشانی دارد. به این دلیل که ساختارها هم در نوع خودشان یک Data Type بخصوص محسوب میشوند. با این تفاوت که مقادیری پیچیدهتر و چندلایهتر شدهاند. پایتون یک سری ساختار پیشفرض دارد که List و Set و Dictionary پرکاربردترین آنها هستند. کار اصلی این ساختارها در پایتون، ذخیرهٔ انواع و اقسام دادههای مختلف است. یعنی یک چیزی معادل آرایهها (arrays) در سایر زبانهای برنامهنویسی. اهمیت دیتا استراکچرها در هر مرحلهای از برنامهنویسی، چه مقدماتی و چه فوقپیشرفته، به یک اندازه پررنگ و تسلط بر آنها، بر هر پایتونکار حرفهای واجب است.
۴) برنامهنویسی شیگرا با تمام مخلفات
برنامهنویسی شیگرا یا Object Oriented Programming یا به طور مخفف OOP رمز موفقیت در دنیای برنامهنویسی مدرن است. روش و متدی که در دهههای پیش به اندازهٔ امروز پررنگ نبود. اما به خاطر فواید انکارناپذیرش در برابر شیوهٔ سنتی، یعنی برنامهنویسی رَویهای یا Procedural، جایگاهش را به عنوان روش برتر تثبیت کرد. امروز هیچ پروژهٔ پیچیده و بزرگی نیست که از برنامهنویسی شیگرا استفاده نکند. از پروژههای ساخت بازی تا تولید اپلیکیشنهای روزمره از برنامهنویسی شیگرا بهره میبرند و مفاهیمی مثل آبجکت و کلاس و وراثت، باید ملکهٔ ذهن برنامهنویسان امروزی باشد. در برنامهنویسی شیگرا، سعی بر این است که همه چیز، به عنوان یک ماهیت موجود در دنیای واقعی مدلسازی شود.
۵) مفاهیم پیشرفته پایتون
در این قسمت از نقشه راه یادگیری پایتون وارد قلمروی مباحث پیشرفتهتر شدهایم. اما این پیشرفتگی، ابدا مساوی با سخت بودن و پیچیدگی نیست. چون اگر فنداسیون خوبی چیده باشیم، این مباحث را با قدری تمرین درک خواهیم کرد و به سهولتشان پی خواهیم برد. تعدادی از مهمترین این موضوعات عبارتند از:
- RegEx
- Decorators
- Lambda Functions
- Modules
- Iterators
RegEx
برای جستجوی یک الگوی متنی یا یک جملهٔ خاص در درون یک متن دیگر، از Regular Expression یا ماژول RegEx استفاده میکنیم. بنابراین اگر خواستید برنامهای بنویسدی که با جستجوی متنی سر و کار دارد، به احتمال زیاد گذرتان به RegEx و توابعش خواهد افتاد.
Decorators
دکوراتورها یا Decorators یکی از ویژگیهای جالب پایتون هستند که قدرت شیگرایی این زبان برنامهنویسی جذاب را بیش از پیش به رخ میکشند. ماجرای دکوراتورها اینست که پایتون، خود توابع را هم به صورت یک شیئ یا Object نگاه میکند و این امکان را دارد که برفرض تابع A را به صورت یک آبجکت به تابع B بفرستد. یعنی در پایتون، ارسال تابع به تابع هم مجاز است. از این خصوصیت پایتون به اسم Decorators یاد میشود.
Lambda
توابع لامبدا، گونهٔ خاصی از توابع در پایتون هستند که در یک خط تعریف میشوند و اسم خاصی ندارند. یک تابع لامبدا به اسم تابع بینام یا ناشناس هم شناخته میشود.
Modules
ماژولهای پایتون یک سری کد از پیش نوشتهشده و آمادهاند که در کارهای مختلف استفاده میشوند. مثلا همان مورد RegEx که در بالا معرفی کردیم، نمونهٔ یکی از ماژولهای پایتون است. ماژولها پسوند «py.» دارند و با کمک دستور Import در داخل کد تعبیه میشوند. درست مانند توابع پایتون، میتوانیم علاوه بر استفاده از ماژولهای پیشفرض، ماژول دلخواه خودمان را بنویسیم.
Iterators
فرض کنیم لیستی از انواع دادههای مختلف داریم. این لیست در زبان پایتون، یک آبجکت قابل شمارش یا Iterable است. مثلا در مثال زیر یک لیست داریم که از سه آیتم متنی تشکیل شده:
mylist = ["apple", "banana", "cherry"]
حالا آبجکت دیگری تحت عنوان Iterator داریم که وظیفهاش شمارش و عقب و جلو رفتن در دادهها و ساختارهای اینچنینی است. ساختارهایی مثل list و tuple و dictionary عملا حکم ظرف و نگهدارندهٔ انواع دادههای دیگر را دارند. اگر بخواهیم به راحتی به محتوای داخل آنها دسترسی داشته باشیم، باید از Iteratorها و توابعی که مخصوص اینکار دارند استفاده کنیم.
۶) کتابخانهها و فریمورکهای پایتون
کتابخانهها Libraries و فریمورکهای Frameworks متعدد و کارامد، جزو نقاط قوت پایتون هستند. این ابزارهای کلیدی، به این دلیل که سرعت انجام پروژهها را بیشتر و زحمت کدنویسی را به مراتب کمتر میکنند، جایگاه ویژهای در نقشه راه یادگیری پایتون دارند. خود پایتون کتابخانههای توکار یا Built-in فراوانی دارد. از طرفی در طی سالها و به لطف Open-Source بودن، توسعهدهندگان و برنامهنویسان متعدد، به غنای کتابخانههای این زبان افزودهاند.
در مورد فریمورکها هم قضیه به همین منوال است. کافیست با توجه به پروژهای که در اختیار دارید، به سراغ کتابخانهها یا فریمورکهای اسم و رسمدار و جوابپسداده بروید و بازدهی خودتان را چندبرابر کنید. یادمان نرود که سرعت بالا، شما را در بازار کار برنامهنویسی، به نیرویی کمیاب و گرانقیمت تبدیل میکند.
- تعدادی از کتابخانههای معروف پایتون PyTorch, scikit-learn, TensorFlow, DEAP
- برخی از فریمورکهای معروف پایتون Django, Flask, CherryPy, Pyramid
۷) آشنایی با سیستمهای مدیریت تغییرات در پروژه
عبارت ورژن کنترل Version Control یکی از آن عباراتیست که برنامهنویسان جدی همیشه با آن سر و کار دارند. این سیستمها که برای مدیریت تغییرات و ورژنهای مختلف برنامه به کار میروند با عنوان Version Control Systems یا به طور مخفف VCS شناخته میشوند. معروفترین این سیستمها Git است و هواداران پروپاقرصی دارد و امکان همکاری با سایر برنامهنویسان را برای شما فراهم میکند. با کمک یک VCS میتوانید کوچکترین تغییرات کد را با جزئیات کامل مشاهده کنید و زیر نظر داشته باشید.
همچنین اگر گرهای در کار برنامه افتاد و باگ ناشناختهای بوجود آمد، میتوان به نسخههای قبلی برگشت و مسیر بهتری انتخاب نمود. اگر بنا دارید که در شرکتهای درست و درمان و کمپانیهای متوسط به بزرگ کار کنید، بهتر است که حتما با یکی از ابزارهای ورژن کنترل آشنا باشید. چون به احتمال زیاد در بدنهٔ یک تیم کدنویسی خواهید کرد و یکی از سوالاتی که در جلسهٔ مصاحبه از شما میپرسند، در مورد تجربهٔ کار با VCSها خواهد بود.
مدت زمان یادگیری پایتون چقدر است؟
یادگیری یک زبان برنامهنویسی، درست مثل آموختن یک زبان خارجی است. یعنی هرچقدر هم که در آن غرق بشویم، نمیتوانیم ادعا کنیم که به انتهایش رسیدهایم. پایتون و سایر زبانهای برنامهنویسی مطرح، به مرور دستخوش تغییر و تکامل میشوند و امکانات تازهای پیدا میکنند. پس لازم است که ما هم همواره در حال مطالعه و بروز کردن دانشمان باشیم.
اما از این کلیگوییها که بگذریم، کدنویسی با پایتون، در حدی که کارمان را راه بیندازد و قرار بر انجام پروژههای فوقپیشرفته نباشد، زمان به نسبت کوتاهی میبرد. اما این زمان به شدت به دو مورد بستگی دارد.
- تمرین کافی در مفاهیم بنیادی و داشتن یک نقشه راه مشخص.
- تعیین هدف، پروژه یا شغلی که قرار است در آن مشغول شویم.
یعنی زمان یادگیری پایتون برای انجام پروژههای هوش مصنوعی، قاعدتا با زمان لازم برای طراحی وبسایت متفاوت است. بر اساس نظرسنجی Dataquest که در سال ۲۰۲۰ انجام شد، نقشه راه یادگیری پایتون، برای دانشجویان و علاقمندان به طور میانگین بین شش ماه تا کمتر از یک سال بوده است. به این معنا که در طی چند ماه و با حدود ۱۰ ساعت تمرین هفتگی، به هدف مد نظر و میزان تسلط لازم برای کارهای دلخواه رسیدهاند.
بعد از یادگیری پایتون کجا مشغول میشویم؟
شکی نیست که اگر از همان ابتدا، هدفمان را بدانیم، نقشه راه یادگیری پایتون را به مراتب سریعتر و متمرکزتر طی میکنیم. اما دانستن هدف نهایی در حالیکه در نقطهٔ مبدا ایستادهایم، آنقدرها هم ساده نیست. اما کافیست که در مورد یک چیز مطمئن باشیم. اینکه یادگیری زبان پرکاربرد و منعطفی مثل پایتون، درهای زیادی را به رویمان باز میکند. پس نگران یک انتخاب سفت و سخت در همین ابتدای کار نباشید. با پیشروی در مسیر یادگیری پایتون، دید بهتری پیدا میکنیم و هدف دلخواهمان را با وضوح بیشتری انتخاب خواهیم کرد. دنیا را چه دیدید؟ شاید چند صباحی در یک یا چند مورد از حوزههای زیر کار کردیم و در نهایت، به سمت و سوی دلخواهمان رفتیم.
- هوش مصنوعی و یادگیری ماشین
- اپلیکیشنهای موبایل
- طراحی وبسایت
- پردازش و تحلیل داده
- سختافزار، سنسورها و رباتیک
- علم کامپیوتر و مهندسی نرمافزار
- اتوماسیون و اسکریپتنویسی
- و …
ممنون از این مقاله کاربردی