مسیر یادگیری من برای پایتون - آپدیت مهر ۱۴۰۰

۲۳ مهر 1400سلام ، میلاد هستم (:امیدوارم حالتون خوب باشه. امروز میخوام مسیری که برای یادگیری پایتون طی کردم رو باهاتون به اشتراک بزارم.خوب همونظور که میدونید برای یادگیری یه زبان برنامه نویسی جدید باید وقت بذازید ، تلاش کنید و پشتکار داشته باشید . هیچ کس نمیتونه ره صد ساله رو یه شبه بره. در ضمن منابعی که توی این پست قراره معرفی بکنم وحی منزل :) نیستن و منابع خوب دیگه ای هم هست که میتونید با کمی جستجو پیداشون کنید. این منابع در قالب ۶ بخش دسته بندی شدن که باهم بررسی میکنیم.بخش اول - مبانی:برای یادگرفتن پایتون از صفر تا سطح متوسط یکی از بهترین کتاب ها ، کتاب Think Python چاپ انتشارات O'reilly هست که از مباحث خیلی پایه شروع میکنه و تا شی گرایی (البته خیلی مبتدی و خلاصه) ادامه میده. در انتهای هر فصل یک سری تمرینات وجود داره که برای تثبیت یادگیری حتما باید انجام بدید.بخش دوم - ساختمان داده و الگوریتم:بعد از اینکه دستورات نحوی (syntax) زبان رو یاد گرفتید ، مرحله ی بعدی یادگیری مباحث ساختمان داده و الگوریتم هست. برای اینکه مهارت حل مساله تون تقویت بشه باید با الگوریتم های مختلف توی دنیای کامپیوتر و ساختمان داده هایی که زبان برنامه نویسی پایتون در اختیارتون قرار داده آشنا بشید و نحوه ی استفاده از اونها رو یاد بگیرید. در این بخش سه تا کتاب از سه تا انتشارات متفاوت وجود داره که به اختیار خودتون میتونید یکی رو انتخاب کنید و با اون پیش برید. اولی کتاب Data Structures and Algorithms with Python چاپ انتشارات Springer ، دومی کتاب Python Data Structures and Algorithms چاپ انتشارات Packt و سومی هم کتاب Grokking Algorithms چاپ انتشارات Manning هست. یه دوره ی آموزشی ویدئویی خیلی خوب هم وجود داره که محصول شرکت Udemy هست که علاوه بر مباحث ساختمان داده و الگوریتم ، مباحث مربوط به مصاحبه ها رو هم پوشش میده ؛ اگر با ویدئو راحت تر هستید میتونید این دوره رو انتخاب کنید و پیش برید.بخش سوم - حل تمرین:خب برای تثبیت و تقویت آموخته هامون باید بطور مستمر تمرینات برنامه نویسی حل بکنیم. این بخش رو میتونید تعمیم بدید به کل مسیر یادگیری زبان پایتون به این صورت که بعد از یادگیری هر مبحث ، تمریناتی مرتبط با اون انجام بدید. در این بخش یک کتاب و یک وبسایت بهتون معرفی میکنم. کتاب Python Workout چاپ انتشارات Manning که حاوی ۵۰ تمرین برنامه نویسی با موضوعات مختلف هست و وبسایت exercism.org که یک وبسایت عالی برای انجام تمرینات برنامه نویسی هست که زبان های برنامه نویسی زیادی از جمله پایتون رو پشتیبانی میکنه.بخش چهارم - برنامه نویسی فانکشنال و شئ گرا:در این بخش قصد داریم تا وارد مباحث پیشرفته تر زبان پایتون بشیم. همونطور که میدونید زبان پایتون از پارادایم های برنامه نویسی فانکشنال(تابعی) و شئ گرا پشتیبانی میکنه ، پس باید روی این مباحث تا حد خیلی خوبی اشراف داشته باشید. برای یادگیری مبحث فانکشنال کتاب Functional Python Programming چاپ انتشارات Packt یکی از بهترین کتاب هاست که این مبحث رو به خوبی آموزش میده. حالا نوبت میرسه به مبحث شئ گرایی ؛ اگر یادتون باشه در بخش اول با کتاب Think Python این مبحث رو در حد خیلی مبتدی یاد گرفتیم و باهاش آشنا شدیم ، الان وقتشه تا پارو فراتر بزاریم. کتابی که برای یادگیری این مبحث میخوام بهتون معرفی کنم کتاب Pyhton Object Oriented Programming چاپ انتشارات Packt هست که با مباحث مربوط به شئ گرایی شروع میکنه و در آخر هم با بررسی الگوهای طراحی در پایتون ، روش های تست نرم افزار و همزمانی(Concurrency) به کار خودش خاتمه میده.امیدوارم تا اینجا خسته نشده باشید!بخش پنجم - جمع بندی و نکات مهم:این بخش در حکم جمع بندی مباحث گفته شده در بخش چهارم به علاوه ی برخی نکات کلیدی هست. در این بخش قراره دو تا کتاب بهتون معرفی کنم. اولی کتاب Expert Python Programming چاپ انتشارات Packt هست که شامل جمع بندی مباحث گفته شده در بخش چهارم به علاوه ی تدریس مباحثی مانند نحوه ساخت پکیج های پایتونی و انتشار اونها ، نحوه دیپلوی کردن پروژه ها ، بهینه سازی و ... . دومی هم کتاب Effective Python چاپ انتشارات Addison-Wesley که شامل 90 درس(نکته) هست که یادگرفتنشون باعث میشه کدهای پایتونی بهتر (Pythonic)و بهینه تری بنویسید.اگر کسی تا اینجا ادامه داده باشه و کتاب هایی که معرفی کردم رو خوب مطالعه و تمرین کرده باشه ، به جرأت میتونم بگم که یکی از بهترین ها تلقی میشه و میتونه توی همه ی زیر شاخه های زبان پایتون مسیر شغلی خودش رو با قدرت ادامه بده.بخش ششم - کتب اختیاری:کتاب هایی که در این بخش قصد دارم معرفی کنم مطالعه شون کاملا اختیاری هست و در صورت نیاز میتونید اونهارو مطالعه کنید. همونطور که میدونید پایتون یک زبان مفسری هست و سرعتش نسبت به زبان های کامپایلری پایینه (نمیخوام وارد مباحث فنی و مقایسه ای بشم). روش های مختلفی وجود داره که سرعت برنامه های نوشته شده به این زبان رو تا حدی بالا ببریم . برخی از این روش ها عبارتند از:استفاده از تکنیک های برنامه نویسی موازیاستفاده از کامپایلر Cythonاستفاده از پکیج Numbaروش های بالا هر کدوم به طریقی باعث افزایش سرعت میشن ؛ مثلا cython با حذف قابلیت Dynamic Type زبان پایتون، تبدیل و تولید کد به زبان های C و یا C++ و تبدیل اون کدها به بسته های قابل import باعث افزایش سرعت برنامه میشه. یا مثلا پکیج Numba با استفاده از کامپایلر LLVM باعث افزایش سرعت برنامه میشه(اگر علاقه داشتید حتما داکیومنت پروژه رو مطالعه کنید)؛ بسته به شرایط داخل برنامه میتونید از روش های بالا استفاده کنید. کتاب هایی که در بخش های چهارم و پنجم معرفی کردم تا حدودی مباحث مربوط به برنامه نویسی موازی رو آموزش میدادن ؛ کتاب Python Parallel Programming Cookbook چاپ انتشارات Packt شامل بیش از ۷۰ سناریو هست که یادگرفتن و تمرین کردنشون باعث میشه روی این مبحث به تسلط خوبی برسید. متاسفانه کتاب های خیلی زیادی برای آموزش Cython وجود نداره و همین کتاب Cython چاپ انتشارات O'reilly خوبه و کارتون رو راه میندازه.و تمام ....امیدوارم مطالبی که گفتم مفید واقع بشه.در ضمن تمامی منابع رو میتونید از کانال تلگرام من به راحتی دانلود و استفاده کنیدآدرس کانال تلگرامموفق باشید (: