منابع ترجمه · Think Python · فصل ۱۹

سخن پایانی (فصل ۱۹ Think Python)

۴ دقیقه مطالعه · به‌روزرسانی ۲ آبان ۱۴۰۵

منبع اصلی: Think Python, Chapter 19: Final thoughts — Allen B. Downey

💡 این صفحه مثل یک نوت‌بوک Jupyter است: متغیر و تابعی که در یک سلول تعریف شود، در سلول‌های بعدی همین صفحه در دسترس است. سلول‌ها را به ترتیب اجرا کنید، یا با «⏮ تا اینجا» همهٔ سلول‌های قبلیِ اجرانشده را یک‌جا اجرا کنید.

توضیح: نام کتاب‌ها و نویسندگان به همان شکل انگلیسی آمده‌اند، با توضیح فارسی در پرانتز.


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

این کتاب قرار است یک مقدمه‌ی عمومی بر برنامه‌نویسی باشد، پس روی کاربردهای خاص تمرکز نکرده‌ایم. بسته به علاقه‌تان، حوزه‌های بسیار زیادی هست که می‌توانید مهارت‌های جدیدتان را در آن‌ها به کار ببرید.

اگر به علم داده (Data Science) علاقه دارید، سه کتاب از من هست که ممکن است دوست داشته باشید:

  • Think Stats: Exploratory Data Analysis (تحلیل داده‌ی اکتشافی)، O’Reilly Media، ۲۰۱۴.

  • Think Bayes: Bayesian Statistics in Python (آمار بیزی در پایتون)، O’Reilly Media، ۲۰۲۱.

  • Think DSP: Digital Signal Processing in Python (پردازش سیگنال دیجیتال در پایتون)، O’Reilly Media، ۲۰۱۶.

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

  • Modeling and Simulation in Python: An Introduction for Scientists and Engineers (مدل‌سازی و شبیه‌سازی در پایتون: مقدمه‌ای برای دانشمندان و مهندسان)، No Starch Press، ۲۰۲۳.

  • Think Complexity: Complexity Science and Computational Modeling (علم پیچیدگی و مدل‌سازی محاسباتی)، O’Reilly Media، ۲۰۱۸.

این‌ها از NumPy، SciPy، pandas و دیگر کتابخانه‌های پایتون برای علم داده و محاسبات علمی استفاده می‌کنند.

این کتاب می‌کوشد بین اصول عمومی برنامه‌نویسی و جزئیات پایتون توازنی برقرار کند. در نتیجه، همه‌ی ویژگی‌های زبان پایتون را شامل نمی‌شود. برای اطلاعات بیشتر درباره‌ی پایتون و توصیه‌های خوب درباره‌ی نحوه‌ی استفاده از آن، کتاب Fluent Python: Clear, Concise, and Effective Programming (پایتون روان: برنامه‌نویسی روشن، مختصر و مؤثر)، ویرایش دوم، نوشته‌ی Luciano Ramalho، O’Reilly Media، ۲۰۲۲ را پیشنهاد می‌کنم.

بعد از مقدمه‌ای بر برنامه‌نویسی، گام بعدی معمول یادگیری ساختمان داده‌ها و الگوریتم‌هاست. من درباره‌ی این موضوع کتابی در دست تألیف دارم به نام Data Structures and Information Retrieval in Python (ساختمان داده‌ها و بازیابی اطلاعات در پایتون). نسخه‌ی الکترونیکی رایگان آن در https://greenteapress.com از Green Tea Press در دسترس است.

وقتی روی برنامه‌های پیچیده‌تر کار می‌کنید، با چالش‌های جدیدی روبه‌رو می‌شوید. شاید مرور بخش‌های این کتاب درباره‌ی اشکال‌زدایی برایتان مفید باشد. به‌ویژه، «شش R» اشکال‌زدایی را از فصل ۱۲ به یاد داشته باشید: خواندن (reading)، اجرا کردن (running)، تأمل کردن (ruminating)، توضیح دادن به اردک لاستیکی (rubber-ducking)، عقب‌نشینی (retreating) و استراحت (resting).

این کتاب ابزارهایی برای کمک به اشکال‌زدایی پیشنهاد می‌کند، از جمله توابع print و repr، تابع structshape در فصل ۱۱ – و توابع داخلی isinstance، hasattr و vars در فصل ۱۴.

همچنین ابزارهایی برای آزمودن برنامه‌ها پیشنهاد می‌کند، از جمله دستور assert، ماژول doctest و ماژول unittest. گنجاندن آزمون‌ها در برنامه‌هایتان یکی از بهترین راه‌ها برای پیشگیری و کشف خطاها و صرفه‌جویی در زمان اشکال‌زدایی است.

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

در سراسر این کتاب، راه‌هایی برای استفاده از دستیارهای مجازی برای کمک به یادگیری، برنامه‌نویسی و اشکال‌زدایی پیشنهاد کرده‌ام. امیدوارم این ابزارها برایتان مفید بوده باشند.

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

استفاده‌ی مؤثر از ابزارهای هوش مصنوعی به کمی آزمون و خطا و تأمل نیاز دارد تا جریان کاری‌ای را که برای شما مناسب است پیدا کنید. اگر کپی کردن کد از ChatGPT به Jupyter را مزاحمت می‌دانید، شاید چیزی مثل Copilot را ترجیح دهید. اما کار ذهنی‌ای که برای نوشتن درخواست و تفسیر پاسخ انجام می‌دهید می‌تواند به همان اندازه‌ی کدی که ابزار تولید می‌کند ارزشمند باشد، در همان راستای اشکال‌زدایی با اردک لاستیکی.

با کسب تجربه‌ی برنامه‌نویسی، ممکن است بخواهید محیط‌های توسعه‌ی دیگری را بررسی کنید. فکر می‌کنم نوت‌بوک‌های Jupyter جای خوبی برای شروع‌اند، اما نسبتاً جدیدند و به اندازه‌ی محیط‌های توسعه‌ی یکپارچه‌ی (IDE) متعارف رایج نیستند. برای پایتون، محبوب‌ترین IDEها شامل PyCharm و Spyder هستند – و Thonny، که اغلب برای مبتدی‌ها توصیه می‌شود. IDEهای دیگر، مثل Visual Studio Code و Eclipse، با زبان‌های برنامه‌نویسی دیگر هم کار می‌کنند. یا، به‌عنوان جایگزینی ساده‌تر، می‌توانید برنامه‌های پایتون را با هر ویرایشگر متنی دلخواهتان بنویسید.

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

یکی از بهترین راه‌ها برای بهبود مهارت‌های برنامه‌نویسی یادگیری زبان دیگری است. اگر به آمار و علم داده علاقه دارید، شاید بخواهید R را یاد بگیرید. اما به‌طور خاص یادگیری یک زبان تابعی (functional) مثل Racket یا Elixir را توصیه می‌کنم. برنامه‌نویسی تابعی نوع متفاوتی از تفکر لازم دارد، که شیوه‌ی فکر کردنتان درباره‌ی برنامه‌ها را تغییر می‌دهد.

موفق باشید!