این روزها افراد زیادی به دنبال پیدا کردن مسیری برای شروع یادگیری برنامهنویسی وب هستند. کتابها، مقالهها، ویدئوهای آموزشی و سایتهای زیادی برای آموزش مفاهیم به افراد علاقهمند وجود دارد و هر کدام بنا بر تجربه و مهارتشان روشی را معرفی میکنند.
با وجودی که برخی افراد و روشها مدعی آموزش بسیار سریع و کاربردی مفاهیم هستند، اما از نظر من با توجه به گستردگی و پیچیدگی مباحث وب، منطقاً هیچ راه سریع و یک روزهای برای یادگیری عمیق همه مفاهیم وجود ندارد.
با افراد تازهکار زیادی مواجه شدهام که به دنبال یادگیری بهترین زبان برنامهنویسی برای استفاده در زمینههای مختلف بودهاند که به پیشنهاد بسیاری از متخصصین در اغلب موارد «پایتون» به عنوان یکی از اولین گزینهها برای شروع یادگیری مطرح میشود.
پایتون ویژگیهای منحصر بفردی از جمله کتابخانههای خوب و قوی، سینتکس نزدیک به زبان انسان، اجرا بر روی دستگاهها و پلتفرمهای مختلف، نمونهکدهای فراوان، خوانایی و… دارد و گاهی چند خط کد پایتونی، معادل چند ده خط کد در سایر زبانهاست و این مساله باعث میشود که پایتون ابزار مناسبی برای پیادهسازی و اجرای پروژهها و ایدههای شخصی افراد باشد.
اما آیا واقعا «پایتون» برای شروع برنامهنویسی وب مناسب است؟ جواب کوتاه و صریح من در یک کلمه: نه! به این ۶ دلیل.
۱- همیشه سادگی در نوشتن کد کافی نیست، باید بتوان راحت آن را اجرا کرد!
همه دوست دارند هرچه سریعتر اولین وبسایتشان را بسازند و نتیجه کارشان را با لذت به دیگران ارائه کنند. «پایتون» در زمان توسعه و ساخت برنامه، شما را به تحقق این رویا نزدیک میکند اما زمان اجرا بر روی سرور است که تازه دردسر شما آغاز میشود.
واقعیت این است که اجرای یک اپلیکیشن پایتونی بر روی سرور، دردسرهای خاص خودش را دارد و به راحتی آپلود کردن فایلها و سپس اجرا شدن کدها توسط وبسرور نیست و نیاز به ملزومات بیشتری برای اجرای برنامه وجود دارد.
شاید بهتر باشد که در شروع یادگیری، به جای دست به گریبان شدن با انواع اقسام مشکلات فنی، بر روی ساخت برنامه تمرکز کنیم و زمانمان را صرف توسعه قابلیتهای اصلی برنامه و همچنین یادگیری چیزهای جدید کنیم تا اینکه با این مشکلات سر و کله بزنیم. ابزار و زبان انتخاب شده نباید ما را که در ابتدای راه هستیم، گرفتار موارد حاشیهای و اجرا کند!
۲- استقرار آن تنها بر روی هاست ویژه ممکن است
اول از همه یک وبسایت پایتونی برای اجرا نیاز به هاست ویژهای دارد که باید ابزارها و سرویسهایی نظیر Gunicorn ، uWSGI ، Supervisor بر روی آن نصب شده باشد. علاوه بر آن وبسرور نیز نیاز به اعمال تنظیمات خاصی دارد تا درخواستهای کاربران را دریافت و جهت پردازش به سایت پایتونی شما تحویل دهد.
البته روشهایی مانند CGI وجود دارد که بواسطه آنها میتوانیم کدهای خودمان را به راحتی اجرا کنیم اما به دلیل مشکلاتی نظیر اتلاف منابع، استفاده از آن برای استقرار نسخه نهایی روی سرور اصلی به هیچ وجه توصیه نمیشود.
بنابراین برای آنلاین کردن سایت نیاز به خرید هاست ویژه پایتون دارید و یا باید سرور VPS خودتان را نصب و راهاندازی کنید که برای یک توسعهدهنده تازهکار، کار سادهای نیست.
۳- هزینه استقرار در کنار هزینه توسعه اهمیت دارد
در ماههای اولیه آموزش چیزهای جدید زیادی یاد میگیریم و ممکن است چندین برنامه کوچک و بزرگ را برای آزمودن مواردی که جدیدا یاد گرفتیم بنویسیم.
برنامههای پایتونی برای اجرا نیاز به هاست ویژه دارد که هزینههای آن بیشتر است و نمیتوانیم از هاستهای اشتراکی کم هزینه و ارزان معمول برای استقرار آنها استفاده کنیم. از طرفی ممکن است هاست مورد نظر محدودیتهایی از قبیل تعداد برنامههای پایتونی در حال اجرا و دردسرهای شبیه این نیز داشته باشد.
۴- به راحتی نمیتوانی سیستم خودت را بسازی
اگر میخواهی در استفاده از یک ابزار به درجه استاد تمام برسی، باید یک بار ابزاری را مشابه با آن بسازی تا با اکثر چالشها، محدودیتها و نقاط قوتش آشنا شوی. مسلماً ابزار آزمایشی ما در رقابت با ابزارهای حرفهای موجود حرفی برای گفتن ندارد اما درک و تجربه ما را بسیار بهتر خواهد کرد. برنامههای اسپاگتی اولیه پر از اشکالات و خطاهای مختلف هستند اما در کنار همه بدیها و معایبش در شرایط معمولی کار میکنند و قدرت تجربه کردن و آزمون و خطا را به ما میدهد.
در پایتون ساختن یک برنامه وب از پایه و بدون هیچ ابزار و فریمورکی نسبت به زبانهای دیگر سختتر است و نیاز به دانش فنی و مهارت بیشتری دارد. در زبانهای برنامهنویسی که برای وب ساخته شدهاند تمامی ساختارها و مفاهیم مورد نیاز وب کاملا پیادهسازی شده و آماده استفاده هستند اما به این دلیل که پایتون مختص وب نیست، برای توسعه اپلیکیشنهای اولیه نیازمند انجام کار بیشتر و طی مراحل آمادهسازی از قبیل نصب یا پیادهسازی ماژولهایی جهت انجام امور پایه هستیم.
به عنوان مثال توابع لازم جهت نگهداری و بازیابی اطلاعات کاربر در Session به طور پیشفرض در زبانهای مخصوص وب نظیر PHP وجود دارد و بدون هیچ دردسری آماده استفاده است اما در پایتون حداقل نیازمند یافتن و نصب ماژولهایی جهت ایجاد این قابلیت هستیم.
۵- ابزارهای پایتونی برای شروع پیچیده هستند
با توجه به مورد قبلی منطقی است که سراغ فریمورکها و ابزارهای موجود برویم اما از قدیم گفتهاند که «سنگ بزرگ نشانه نزدن است»، لااقل در این مورد نشانهی درست نزدن! ما در شروع کار باید بتوانیم روی مفاهیم اصلی و ضروری تمرکز کنیم. مواجه شدن با ابزارهایی که خودش دارای پیچیدگی هست و نیاز به یادگیری دارد میتواند ما را دچار دردسرهای مضاعف کند.
البته معتقدم مسیر توسعه اصولی در دنیای وب، از میان فریمورکها و ابزارهای کارآمد موجود میگذرد اما
برای کسی که تازه وارد دنیای برنامهنویسی وب شده است و درک کاملی از ابزارها و فرآیندها ندارد، مشکلات زیادی را به همراه خواهد آورد.
۶- اپلیکیشنهای پایتون مدل اجرایی متفاوتی دارند
در مدل اولیه وب CGI، به ازای هر درخواست مطرح شده از سوی کاربر یک بار برنامه سایت اجرا میشود و پس از تولید خروجی نهایی، این برنامه خاتمه پیدا میکند. این مدل بسیار ساده و قابل فهم است و نوشتن برنامه در این مدل کار بسیار سادهای است. البته این مدل به دلیل مشکلی که در اتلاف منابع سرور دارد با مدل پیشرفتهتر FastCGI جایگزین شده اما اصول و مفاهیم اصلی در نوشتن برنامه تحت وب تغییری نکرده و برنامههای سازگار با CGI در مدل FastCGI بدون مشکل اجرا میشوند.
در مدل پایتونی داستان اجرا کاملا متفاوت است و برنامه سایت تنها یک بار و در شروع کار اجرا میشود و از آن پس به تمام درخواستهای کاربران که از سمت وبسرور در اختیارش قرار گرفته است پاسخ خواهد داد. در این شرایط اگر در کدنویسی برنامه سایت، خطای ساختاری یا منطقی وجود داشته باشد احتمال مواجهه با خطا برای مراجعین بعدی دور از ذهن نیست.
در نتیجه طراحی این مدل اپلیکیشنها تجربه و دقت بیشتری لازم دارد و همینطور مدیریت خطای بسیار بهتری را میطلبد تا با مواجه شدن با اولین خطا، نرمافزار متوقف نشود.
«پایتون» برای افراد تازه کار و شروع برنامهنویسی وب مناسب نیست و نه تنها توسعه پروژه را تسهیل نمیکند بلکه با قرار دادن مشکلات و موانعی بر سر راه توسعهدهنده، آن را از ادامه مسیر مایوس خواهد کرد.
در عوض «پایتون» برای افراد با تجربه که درک خوبی از مفاهیم پایه وب دارند و به دنبال ایجاد برنامههایی خوانا و خوشساخت هستند، گزینه بسیار مناسب و ایدهآل به شمار میرود. پایتون کتابخانهها و فریمورکهای بسیار قدرتمندی برای وب دارد که استفاده از آنها در کنار قابلیتهای منحصربهفردش سرعت اجرای پروژههای شما را چندین برابر میکند. از طرفی با داشتن دانش کافی و استفاده از یک معماری درست و بهکارگیری تجربیات گذشته میتوانیم سیستمهای بزرگ و قدرتمندی را به وسیله زبان پایتون پیادهسازی کنیم.
آیا شما هم با دلایل بالا موافق هستید؟ با توجه به اینکه دلایل بالا حاصل تجربیات شخصی من است، مشتاق شنیدن نظرات و تجربیات شما در این باره هستم.