استفاده از فریمورک‌ یا کدنویسی از پایه: مسئله این است!

استفاده از فریمورک‌ یا کدنویسی از پایه: مسئله این است!

آیا می‌توانید بدون استفاده از یک فریمورک، همچنان سریع و خوب کدنویسی کنید؟ تجربه نشان داده است که این کار شدنی است اما سؤال اینجا است که آیا واقعاً می‌بایست فریمورک‌ها را از فرایند توسعهٔ نرم‌افزار حذف نمود؟ برای یافتن پاسخ به این سؤال، در این مقاله با سکان آکادمی همراه باشید.

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

فریمورک چیست؟
بسته به موقعیتی که در آن قرار داشته باشیم، معانی مختلفی برای اصطلاح Framework (فریمورک یا چارچوب) می‌توان متصور شد اما در دنیای برنامه‌نویسی و توسعهٔ نرم‌افزار فریمورک‌ها به دولوپرها کمک می‌کنند تا دیگر نیازی به کدنویسی تسک‌های رایج و تکراری نداشته و به‌سادگی از کدهایی که قبلاً‌ نوشته شده، تست شده و کارایی آن‌ها اثبات شده است استفاده نمایند.

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

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

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

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

هزینه: بسیاری از فریمورک‌های معروف رایگان هستند و از همین روی، نرم‌افزارهای توسعه یافته با این دست فریمورک‌ها هم از هزینهٔ تمام‌شدهٔ به‌مراتب کمتری برخوردار خواهند بود.

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

اگرچه فریمورک‌ها دارای نقاط قوت به‌مراتب بیشتری از آن‌چه در بالا بدان اشاره شد هستند، اما در اینجا به موارد فوق‌الذکر اکتفا کرده و به سراغ نقاط ضعفشان می‌رویم:

محدودیت: کرنل هیچ فریمورکی را نمی‌توان دستخوش تغییر ساخت (البته می‌توان سورس‌کد را دستکاری کرد اما اگر این‌کار اصولی صورت‌ نگرفته باشد، پس از آپدیت فریمورک کلیهٔ اصلاحات از بین خواهند رفت). به‌عبارت دیگر، وقتی شما به‌عنوان یک دولوپر فریمورکی را انتخاب می‌کنید، به‌‌قول معروف می‌بایست پیه محدودیت‌هایش را نیز به تن خود بمالید!

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

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

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

جدای از زبان برنامه‌نویسی، زبان فریمورک را نیز باید آموخت: به‌نظر می‌رسد که این مشکلی بسیار جدی باشد؛ اگر شما اقدام به استفاده از فریمورکی همچون لاراول که برای زبان PHP ابداع شده کنید اما خیلی در زبان PHP مهارت نداشته باشید، به‌صورت ناخودآگاه شما زبان فریمورک را به‌جای زبان PHP فرا خواهید گرفت (در اینجا منظور از زبان فریمورک همان کلاس‌ها، فانکشن‌ها و به‌طورکلی ساختار فریمورک است).

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

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