فریم ورک چیست؟ — Framework در برنامه نویسی به زبان ساده
در دنیای برنامه نویسی امروز، توسعه دهندگان همواره به دنبال ابزارهایی برای سادهتر کردن فرآیند برنامه نویسی هستند. برخی ابزارها وجود دارند که برای کمک به پروژهها طراحی شدهاند و با استفاده از آنها نیازی نیست که برنامه نویس همه کارها را از صفر آغاز کند. به طور کلی میتوان گفت فریم ورکها برای رسیدن به این هدف طراحی شدهاند. فریم ورکها نرم افزارهایی هستند که توسعه دهندگان برای ساخت اپلیکیشنها از آنها استفاده میکنند. در این مقاله سعی شده است به طور جامع به این سوال پاسخ داده شود که فریم ورک چیست . همچنین انواع آن و تفاوت آن با کتابخانه، ماژول و سایر موارد مشابه مورد بررسی قرار گرفته است.
فریم ورک چیست ؟
فریم ورک یک چارچوب به حساب میآید که معمولاً برنامه نویسها برای توسعه و طراحی نرم افزار از آن استفاده میکنند. استفاده از فریم ورک به ساده شدن توسعه پردازشها کمک میکند. یکی از دلیلهای این سادگی این موضوع است که فریم ورک از نوشتن مکرر کدهای مشابه جلوگیری خواهد کرد. همچنین باعث ایجاد شیوههای خوب و مناسب و سازگاری در کدها میشود. بنابراین میتوان گفت که فریم ورک، مجموعهای از ابزارها و ماژولهای گوناگون است که میتوانند در پروژههای مختلف مورد استفاده قرار بگیرند.
برای مثال، یکی از محبوبترین و پرکاربردترین فریم ورکها «داتنت» است که در ساخت و طراحی وب سایتها کاربرد دارد. در ادامه این مقاله به این موضوع پرداخته شده است که چرا در برنامه نویسی از فریم ورک استفاده میشود.
چرا در برنامه نویسی از فریم ورک استفاده می شود؟
فریم ورکهای نرم افزاری، زندگی را برای توسعه دهندگان به وسیله کنترل همه یا بخشی از برنامه با یک پلتفرم واحد، سادهتر میکنند. به طور کلی میتوان گفت که توسعه نرم افزار فرایند پیچیدهای به حساب میآید. این کار به وظیفههای زیادی از جمله کدنویسی، طراحی و آزمایش نیاز دارد. برای مثال میتوان به بخش برنامه نویسی اشاره کرد که فقط برای کدنویسی آن، برنامه نویسها باید به ساختار نحوی (سینتکس)، اعلانها، «جمعآوری زباله» (Garbage Collection)، عبارتها، استثناها و موارد دیگر توجه کنند.
میتوان گفت با استفاده از این فریم ورکها به جای اینکه همه این وظیفهها به صورت دستی و توسط برنامه نویس یا توسعه دهنده انجام شوند، با روشهای سادهتری با استفاده از فریم ورک انجام میگیرند. در بخش بعدی از مقاله «فریم ورک چیست» به بررسی هدف آن در برنامه نویسی پرداخته شده است.
هدف استفاده از فریم ورک در برنامه نویسی چیست؟
برنامه نویسی مهارتی است که نیازمند ذهنی خلاق برای روبهرو شدن با چالشهای ذهنی است. گاهی ممکن است این مهارت برای برخی از افرادی که برنامه نویس نیستند یا افراد تازهکار سخت به نظر برسد. فریم ورک دارای اهدافی در راستای سادهتر کردن روشهای برنامه نویسی و چالشهای گوناگون به وجود آمده است. یکی از هدفهای مهم فریم ورک، صرفهجویی در زمان است که در ادامه این بخش ابتدا به این موضوع پرداخته شده است.
صرفه جویی در زمان
یکی از مهمترین هدفهای فریم ورک در برنامه نویسی، صرفهجویی در زمان به حساب میآید و اکثر افراد در پاسخ به این سوال که هدف اصلی فریم ورک چیست ، به بحث صرفهجویی در زمان اشاره میکنند. زیرا استفاده از فریم ورک در برنامه نویسی باعث میشود که دیگر نیازی به حل مشکلات تکراری و رایج به صورت دستی وجود نداشته باشد. توسعه نرم افزار دارای وظیفههای رایج بسیاری است که برای رسیدن به هدف و برنامه نهایی باید حل شوند و میتوان برای حل آنها از فریم ورک استفاده کرد. برای مثال در یک برنامه وب، یکی از مسئلههایی که همیشه باید مورد بررسی و حل قرار بگیرد، «مسیریابی» (Routing) است.
فرض میشود که یک اپلیکیشن تجارت الکترونیکی وجود دارد و شخصی در مرورگر خود آدرس زیر را مینویسد:
برنامه باید اقدامات لازم را برای مسیریابی URL یا همان آدرس نوشته شده در مرورگر، بررسی کند. این روند تقریباً برای همه اپلیکیشنهای تحت وب باید انجام شود و اگر فریم ورکی وجود داشته باشد که به وسیله آن، امکان پیادهسازی این وظیفه بهطور خودکار وجود خواهد داشت. کار توسعه وب برای برنامه نویسها سادهتر خواهد شد و در زمان صرفهجویی میشود. در بخش بعدی به بررسی اطمینان حاصل کردن از انتخاب بهترین روش در برنامه نویسی با استفاده از فریم ورک پرداخته شده است.
اطمینان از انتخاب بهترین روش در برنامه نویسی
با این حال، صرفهجویی در زمان تنها هدف فریم ورک در برنامه نویسی و توسعه نرم افزارها و اپلیکیشنها نیست. فریم ورکها میتوانند در حوزههای حیاتی از جمله بخشهای امنیتی تغییرهایی ایجاد کنند. امنیت یکی از بخشهای مهم و دشوار در طراحی نرم افزار به حساب میآید. همچنین، این بخش به دلیل حساس بودن امنیت یک برنامه، باید حتماً به طور دقیق و صحیح انجام شود و اشتباهی در آن رخ ندهد. در این حوزه بهتر است که از راه حلهای شخصی برنامه نویسها استفاده نشود و تنها از راه حلهایی استفاده شود که توسعه دهندههای خبره یا فریم ورکهای مخصوص این کار از آنها استفاده میکنند.
فریم ورکهای امنیتی با ارائه ویژگیهای امنیتی داخلی خود، برنامه نویسی امنیت اپلیکیشن را سادهتر میکنند و امکان رخ دادن اشتباه را در آن به حداقل میرسانند. برای مثال فریم ورک «Laravel» وظیفههایی از جمله احزار هویت، ارائه مجوز، ارزیابی ایمیلها و بسیاری موارد دیگر را انجام میدهد و برنامه نویسی این بخش را برای توسعه دهندگان امنیتی سادهتر میکند. بسیاری از فریم ورکهای مشابه دیگر نیز برای انجام این وظیفهها وجود دارند. در بخش بعدی به این موضوع پرداخته شده است که به چه نوع فریم ورکی، خوب و مناسب میگویند.
ویژگی های یک فریم ورک خوب چیست؟
فریم ورکی به عنوان یک فریم ورک خوب در نظر گرفته میشود که دارای خصوصیتهای زیر باشد:
- فریم ورکی مناسبتر و بهتر است که یادگیری نحوه کار با آن سادهتر باشد. همچنین، فریم ورکی با کیفیتتر است که پیادهسازی نرم افزار با استفاده از آن نسبت به سایر فریم ورکها آسانتر باشد.
- دارای رفتار پیشفرضی باشد که کار مفیدی را انجام میدهد. فریم ورک نباید حاوی کدهایی باشد که کاری را انجام نمیدهند.
- از همه تجربیات و تمرینهای گذشته به خوبی استفاده و آنها را در آینده تکمیل کند.
- فریم ورکها به توسعه دهندگان این امکان را میدهند که مؤلفههای قابل استفاده مجددی بسازند. برای گسترش کدهای فریم ورک میتوان کدهای مورد نیاز را به آن اضافه کرد.
- فریم ورک خوب شامل کدهای پیشفرضی میشود که نمیتوان آنها را تغییر داد ولی قابل گسترش هستند.
ادامه مقاله «فریم ورک چیست» به بررسی چالشهای فریم ورک اختصاص داده شده است.
چالش های فریم ورک چیست ؟
استفاده از فریم ورک در پروژههای برنامه نویسی چالشهایی را به وجود میآورد که در این بخش به طور خلاصه به بررسی برخی از آنها پرداخته شده است:
- فریم ورکها راه حلی برای همه هستند اما محدودیتهایی نیز دارند. به عبارت دیگر، گاهی اوقات نمیتوان همه عملیات یک پروژه را با یک فریم ورک انجام داد و ممکن است فریم ورک انتخاب شده برای برخی از برنامههای خاص مناسب نباشد.
- فریم ورکها برای پروژههای کوچک مناسب نیستند؛ زیرا ممکن است نصب و تنظیم فریم ورک از پیادهسازی آن با استفاده از کدهای نوشته شده به صورت دستی ساده، بیشتر طول بکشد.
- برای یک کاربر جدید که از فریم ورکی استفاده میکند، یک منحنی شیبدار یادگیری وجود دارد. توسعه دهنده قبل از استفاده از فریم ورک در پروژه خود، باید زمانی را برای یادگیری فریم ورک در نظر بگیرد.
- هر ایراد امنیتی که برای فریم ورک رخ میدهد، میتواند روی برنامهای تأثیر بگذارد که با استفاده از آن فریم ورک ساخته شده است.
با وجود تمام این چالشهایی که وجود دارند، نمیتوان از مزیتهای بسیار فریم ورکها چشمپوشی کرد. فریم ورکها به توسعه دهندگان کمک بزرگی در طراحی و ساخت محصولاتشان کردهاند. فریم ورک زیرساختی را فراهم میکند که جزئیات سطح پایین پروژه در آن مشخص شده است و توسعه دهنده زیاد با آنها درگیر نمیشود. در مقابل باعث میشود که توسعه دهنده بیشتر روی جزئیات اصلی پروژه تمرکز کند و کدهای کمتری بنویسد. بنابراین زمانی که کدهای کمتری نوشته میشوند، شانس کمتری برای ایجاد اشکال و خطا در زمان توسعه پروژه به وجود میآید و در هزینهها صرفهجویی خواهد شد.
ممکن است در ابتدا استفاده از فریم ورکها خسته کننده به نظر برسد، اما با آشنایی بیشتر میتوان به این نتیجه رسید که استفاده از فریم ورک در یک پروژه میتواند بسیار ارزشمند باشد. در آینده با پیشرفت بیشتر فریم ورکها، پروژهها سریعتر و آسانتر پیادهسازی خواهند شد و امکان انجام کار بیشتر و سادهتر در زمان کمتر رضایت برنامه نویسان را به همراه خواهد داشت. در بخش بعدی از پاسخ به سوال فریم ورک چیست ، مزایای فریم ورک در برنامه نویسی شرح داده شده است.
مزایای فریم ورک چیست ؟
همانطور که در بخش قبلی بررسی شد، فریم ورک در برنامه نویسی دارای مزایای بسیاری است که در ادامه سعی میشود به طور جامع شرح داده شوند:
- فریم ورک به ایجاد شیوههای برنامه نویسی بهتر و استفاده مناسب از الگوهای طراحی پروژه کمک میکند.
- کدهای نوشته شده با استفاده از فریم ورک از امنیت خوبی برخوردار هستند.
- با استفاده از فریم ورک در طراحی و برنامه نویسی پروژهها میتوان از ایجاد کدهای اضافی و تکراری جلوگیری کرد.
- فریم ورک به توسعه مداوم کدها با اشکالات کمتر کمک میکند.
- استفاده از فریم ورک کار را بر روی فناوریهای پیچیده سادهتر میکند.
- توسعه دهندگان میتوانند فریم ورک نرم افزاری خود را ایجاد کنند یا فریم ورکهای متن باز را بهبود ببخشند. از این رو، بهبود مستمری در عملکرد فریم ورکها به وجود میآید.
- بخشهای زیادی از کدها وجود دارند که عملکرد آنها قبلاً ساخته و آزمایش شده است. این موضوع باعث میشود برنامهها قابل اعتمادتر شوند.
- با استفاده از فریم ورک، آزمایش و اشکالزدایی کدها بسیار سادهتر میشود. حتی توسعه دهندگان میتوانند کدهای شخص دیگری که با فریم ورک ایجاد شده است را به راحتی اشکالزدایی و ویرایش کنند.
- به وسیله فریم ورک زمان مورد نیاز برای توسعه یک برنامه به میزان قابل توجهی کاهش مییابد.
در بخش بعدی از مقاله «فریم ورک چیست» به بررسی روش نصب فریم ورک و این موضوع پرداخته شده است که در یک فریم ورک چه اتفاقی رخ میدهد.
روش نصب یک فریم ورک به چه صورتی است؟
زمانی که یک نرم افزار فریم ورک روی سیستم نصب میشود، اولین چیزی که باید به آن توجه شود نیازمندیهایی است که سیستم برای پیادهسازی فریم ورک به آنها احتیاج دارد. زمانی که فریم ورکی نصب و پیکربندی میشود، یک ساختار دایرکتوری برای خود ایجاد میکند. برای مثال تصویر زیر ساختار شاخهها و پوشههای (دایرکتوری) فریم ورک لاراول را نشان میدهد. از فریم ورک لاراول را نشان میدهد. هر کدام از پوشههای این دایرکتوری میتوانند دارای پوشههای دیگری نیز باشند. دایرکتوریها دارای فایلها، کلاسها، روالهای آزمایشی، قالبها و بسیاری از موارد دیگر هستند.
در بخش بعدی از مقاله «فریم ورک چیست» به روش انتخاب فریم ورک متناسب با برنامه مورد نظر پرداخته میشود.
چگونه یک فریم ورک انتخاب می شود؟
قبل از انتخاب فریم ورک برای شروع برنامه نویسی با آن، باید نیازها و هدفهای پروژه مورد بررسی قرار بگیرند. باید به این نکته توجه داشت که برای انجام پروژهها انواع فریم ورکهای ساده و پیچیده وجود دارند. انتخاب فریم ورکی که به بهترین نحو با سطح دشواری پروژه مورد نظر تطابق داشته باشد، مسئله بسیار مهمی به حساب میآید. بنابراین نیاز است که به موارد زیر برای انتخاب فریم ورک مناسب توجه شود:
- فریم ورک انتخاب شده باید موقعیت خوبی برای برنامه مورد نظر ایجاد کند.
- فریم ورک مورد نظر باید از نظر امنیت، پروژه را کاملاً تأمین کند.
- با استفاده از فریم ورک مناسب مورد نظر همه عناصر یا حتی بخشهای بزرگ برنامه میتوانند در پروژههای دیگری نیز مورد استفاده قرار بگیرند.
- فریم ورک باید دارای کدهای پاک، ساده و قابل فهم برای توسعه دهندگان باشد.
- سندها و راهنماهای فریم ورک مورد نظر باید بررسی شوند و دارای سند و راهنمای خوب، مناسب و بهروزی باشد.
- فریم ورکی بهتر است که توسط جامعه بزرگی از کاربران فعال و مشارکتی پشتیبانی شود.
یادگیری روش انتخاب یک فریم ورک مناسب و خاص با افزایش کیفیت و بهرهوری محصول برابری میکند؛ همانطور که برای ترسیم یک نقاشی خوب به یک بوم نقاشی خوب و مناسب نیاز است. در بخش بعدی از مقاله «فریم ورک چیست»، پس از معرفی مجموعه دورههای آموزش برنامه نویسی، به بررسی تفاوت بین کتابخانه و فریم ورک در برنامه نویسی، پرداخته شده است.
معرفی فیلم های آموزش برنامه نویسی تم آف
دورههای آموزشی وب سایت تم آف بر اساس موضوع به صورت مجموعههای آموزشی گوناگونی دستهبندی شدهاند. یکی از بزرگترین و کاربردیترین مجموعه دورههای آموزشی تم آف، مجموعه آموزش برنامه نویسی است. در مجموعه دورههای آموزش برنامه نویسی تم آف دورههایی هم مختص آموزش فریم ورکهای مختلف وجود دارند که علاقهمندان میتوانند بر حسب نیاز از آنها استفاده کنند.
علاوه بر مجموعه آموزشهای برنامه نویسی، برای اکثر زبانهای برنامه نویسی مطرح نیز مجموعههای آموزش در سایت تم آف گردآوری شدهاند که میتوان به این مجموعهها برای یادگیری هر یک از فریم ورکهای محبوب مربوط به این زبانها مراجعه کرد. در ادامه این بخش، برخی از دورههای این مجموعه به طور خلاصه معرفی شدهاند:
- فیلم آموزش برنامه نویسی پایتون Python – مقدماتی (طول مدت: ۱۹ ساعت و ۵۳ دقیقه، مدرس: پژمان اقبالی شمس آبادی): در این دوره آموزشی تم آف، زبان برنامه نویسی پایتون از پایهایترین مباحث مانند انواع دادههای آن آموزش داده و سعی میشود که همه مباحث مقدماتی مورد نیاز آن ارائه شوند. برای مشاهده فیلم آموزش برنامه نویسی پایتون Python – مقدماتی + کلیک کنید.
- فیلم آموزش برنامه نویسی C++ سی پلاس پلاس (طول مدت: ۲۰ ساعت و ۱۴ دقیقه، مدرس: دکتر فرشید شیرافکن): در این دوره آموزشی، زبان برنامه نویسیC++ در دو بخش و از مفاهیم پایه آموزش داده شده است. برای مشاهده فیلم آموزش برنامه نویسی C++ سی پلاس پلاس + کلیک کنید.
- فیلم آموزش برنامه نویسی جاوا Java (طول مدت: 19 ساعت و 19 دقیقه، مدرس: دکتر سید مصطفی کلامی هریس): این دوره آموزشی به دانشجویان و علاقهمندانی پیشنهاد شده است که قصد یادگیری زبان برنامه نویسی جاوا را به صورت جامع دارند. برای مشاهده فیلم آموزش برنامه نویسی جاوا Java + کلیک کنید.
- فیلم آموزش برنامه نویسی C (طول مدت: ۱۳ ساعت و ۳۰ دقیقه، مدرس: دکتر سید مصطفی کلامی هریس): در این دوره آموزشی، زبان برنامه نویسی C همراه با مفاهیم کاربردی آن و مثالهای عملی آموزش داده میشود. برای مشاهده فیلم آموزش برنامه نویسی C + کلیک کنید.
- فیلم آموزش کاربردی برنامه نویسی سی شارپ #C (طول مدت: ۱۳ ساعت و ۵۸ دقیقه، مدرس: مهندس رشید شجاعی): در این دوره آموزشی، دانشجویان و علاقهمندان به صورت کاربردی با زبان سی شارپ و محیطهای Visual Studio و داتنت آشنا میشوند. برای مشاهده فیلم آموزش کاربردی برنامه نویسی سی شارپ #C + کلیک کنید.
- فیلم آموزش برنامه نویسی تایپ اسکریپت TypeScript (طول مدت: ۸ ساعت و ۴۵ دقیقه، مدرس: پوریا کهریزی): این دوره آموزشی به دانشجویانی پیشنهاد میشود که قصد یادگیری زبان برنامه نویسی تایپ اسکریپت را از پایهایترین مباحث دارند. تایپ اسکریپت دارای شباهتهای بسیاری با زبانهای #C و جاوا اسکریپت است. برای مشاهده فیلم آموزش برنامه نویسی تایپ اسکریپت TypeScript + کلیک کنید.
حال پس از معرفی مجموعه دورههای آموزش برنامه نویسی تم آف و شرح مختصر برخی از دورههای این مجموعه، بخش بعدی مقاله «فریم ورک چیست» به بررسی تفاوت کتابخانه و فریم ورک، اختصاص داده شده است.
تفاوت کتابخانه و فریم ورک چیست ؟
گاهی اوقات اصطلاحهای فریم ورک و کتابخانه در برنامه نویسی به جای یکدیگر استفاده میشوند، با این حال باید به این موضوع توجه شود که این دو اصطلاح کاملاً با یکدیگر تفاوت دارند. برخی از افراد فرض میکنند که فریم ورک مجموعهای از کتابخانهها است، همانطور که کتابخانه مجموعهای از روالهای از پیش کامپایل شده به حساب میآید. با این حال، این فرض درست نیست؛ زیرا همه فریم ورکهای نرم افزاری از کتابخانهها استفاده نمیکنند یا به آنها وابسته نیستند. تفاوت بین کتابخانه و فریم ورک این است که فریم ورک کدها را فراخوانی میکند. در مقابل آن، کدها کتابخانههای نرم افزار را فراخوانی میکنند.
برای مثال، «Curl» کتابخانهای برای زبان PHP است، زمانی که یکی از تابعهای Curl استفاده میشود، کدهای PHP تابعی خاص را در این کتابخانه فراخوانی میکنند. به عبارت دیگر، کدهای برنامه فراخوانی کننده و کدهای کتابخانه فراخوانی شونده هستند.
زمانی که از فریم ورکهای PHP استفاده میشود، مانند فریم ورک Laravel، رابطه فوق، برعکس میشود و فریم ورک کدهای برنامه نوشته شده در خود را فراخوانی میکند. این موضوع از نظر فنی به عنوان «وارونگی کنترل» ( Inversion of Control | IoC) شناخته میشود. به طور کلی میتوان به این موضوع نیز اشاره کرد که فریم ورک به نوعی اسکلت برنامه به حساب میآید. در ادامه این بخش به طور جامعتر به دلیلهای تفاوت فریم ورک و کتابخانه در برنامه نویسی پرداخته میشود.
دلیل های تفاوت کتابخانه و فریم ورک چیست ؟
همانطور که در تصویر زیر نمایش داده شده است، میتوان گفت که فریم ورک اسکلت، چارچوب و زیربنای برنامه و ابزاری به حساب میآید که کل برنامه با استفاده از آن پیادهسازی خواهد شد و در مقابل آن، کتابخانهها ابزارهایی برای حل برخی از مسئلهها هستند. سه موضوع حیاتی وجود دارند که تفاوت بین کتابخانه و فریم ورک را نشان میدهند، در این بخش به صورت مختصر به بررسی این سه موضوع پرداخته شده است. ابتدا موضوع وارونگی کنترل در فریم ورک شرح داده میشود.
وارونگی کنترل چیست؟
اینجا چون تیتر داره میگه وارونگی کنترل چیست باید حتی اگه شده دوباره به صورت تکرای جواب بدیم که وارونگی کنترل چیه و توجیهی نداره که بگیم در بخش قبل شرح داده شد.
- برنامه نویس کتابخانه را برای انجام کار فراخوانی میکند.
- فریم ورک برنامه نویس را برای انجام کار فراخوانی میکند.
با توجه به وارونگی کنترل، فریم ورکها بسیار محبوب هستند و میتوانند وظیفههای بسیاری را برای توسعه دهندگان انجام دهند. فریم ورکها نحوه نوشتن کدها، مکان فایلها و حتی نام فایلهای ذکر شده را به طور خودکار مدیریت میکنند. در بخش بعدی مقاله به عنوان دومین تفاوت بین کتابخانه و فریم ورک، فرآیند «توسعهپذیری» (Extensibility) بررسی شده است.
توسعه پذیری چیست؟
برنامه نویس با توسعهپذیری میتواند ویژگیهای جدیدی را به فریم ورک اضافه کند و رفتار ویژگیهای موجود را برای رسیدن به نیازهای برنامه بدون تغییر کدهای منبع اصلی تغییر دهد. فریم ورکهای خوب با در نظر گرفتن ویژگیهای توسعهپذیری ساخته میشوند. اگر فریم ورکی قابل توسعه نبود و عملکرد نسبتاً محدودی داشت، جذابیت یادگیری آن برای توسعه دهندگان کاهش مییابد. در ادامه، برای درک بهتر مفهوم توسعهپذیری به بررسی یکی از اصول مهم در برنامه نویسی شی گرا (Object Oriented Programming | OOP) به نام «باز بسته» (Open Closed) پرداخته میشود.
این اصل بیان میکند که رفتار کدها باید برای گسترش دادن (Extend) باز باشد؛ یعنی امکان انجام آن به راحتی وجود داشته باشد و برای تغییر دادن بسته در نظر گرفته شود؛ یعنی کدها تا جای ممکن تغییر داده نشوند. یک مثال ساده برای این اصل، ارثبری یا وراثت (Inheritance) در کلاسها است که زیر کلاسها میتوانند بدون تغییر مستقیم در کلاس والد، تغییرهایی در عملکرد و ویژگیهای کلاس خود به وجود بیاورند و خود را گسترش دهند. در نهایت میتوان گفت که کتابخانهها به دلیل دسترسی محدودتر به برنامه از نظر چنین قابلیتهایی مورد بررسی قرار نمیگیرند. بخش بعدی از مقاله «فریم ورک چیست» به کدهای غیر قابلتغییر (Non Modifiable Code) اختصاص دارد.
- مقالههای پیشنهادی:
- ارث بری در پایتون — به زبان ساده
- وراثت در ++C — راهنمای کاربردی
کدهای غیر قابل تغییر
کدهای غیرقابل تغییر مفهومی بسیار ساده دارند. تعریف کوتاه و ساده کدهای غیر قابلتغییر این است که فریم ورکها مجموعهای از کدها را تولید میکنند که در بیشتر مواقع در دسترس برنامه نویسها و توسعه دهندگان نیستند. ولی کدهایی که به وسیله کتابخانهها در برنامه ایجاد میشوند، کاملاً قابل لمس هستند. در ادامه این مقاله، به بررسی تفاوت بین زبان برنامه نویسی و فریم ورک پرداخته شده است.
تفاوت بین زبان برنامه نویسی و فریم ورک چیست ؟
زبانهای برنامه نویسی به کامپیوتر میگویند که چه کاری باید انجام دهند. همه زبانهای برنامه نویسی دارای ساختار نحوی (سینتکس) و قانونهای مخصوص به خود هستند، که هر بار از آنها استفاده میشود، باید حتماً رعایت شوند. برای یک زبان برنامه نویسی و مبتنی بر آن ساخته میشود. برای مثال، Rails که به عنوان Ruby on Rails نیز شناخته میشود، یک فریم ورک توسعه وب است که بر پایه زبان برنامه نویسی Ruby ساخته شده است.
همچنین Django و Flask دو فریم ورک توسعه وب متفاوت هستند که برای زبان برنامه نویسی پایتون نوشته شدهاند، از این رو به عنوان فریم ورکهای پایتون شناخته میشوند. React و Angular نیز دو فریم ورک توسعه وب فرانتاند هستند که برای زبان برنامه نویسی جاوا اسکریپت ساخته شدهاند. در بخش بعدی از مقاله «فریم ورک چیست» به بررسی تفاوت بین فریم ورک و ماژول در برنامه نویسی پرداخته شده است.
تفاوت بین ماژول و فریم ورک چیست ؟
فریم ورک در برنامه نویسی شامل مجموعهای از کتابخانهها است و با مفهوم ماژول تفاوت دارد. فریم ورک بر خلاف ماژول و کتابخانه، فقط قابلیتهای کاربردی برای توسعه پروژه ارائه نمیدهد، بلکه یک معماری برای محیط توسعه و برنامه نویسی ایجاد میکند. به عبارت دیگر از فریم ورکها در برنامه نویسی استفاده نمیشود و میتوان گفت که کدها در فریم ورکها پیادهسازی میشوند و از آنها استفاده میکنند.
همانطور که پیشتر مورد بررسی قرار گرفت، فریم ورک قالب و چارچوب ایجاد یک پروژه است، به همین دلیل ساختار کدنویسی خاصی را به برنامه نویس تحمیل میکند. بنابراین برنامه نویس باید طبق رویکرد برنامهنویسی فریم ورک مورد استفاده خود، طراحی پروژه را انجام دهد. در بخش بعدی از مقاله «فریم ورک چیست» به بررسی انواع گوناگون فریم ورکها در برنامه نویسی پرداخته شده است.
انواع فریم ورک چیست ؟
امروزه به دلیل وجود انواع زبانهای برنامه نویسی گوناگون، فریم ورکهای بسیاری نیز افزایش سهولت در برنامه نویسی با هر زبانی ایجاد شدهاند. هر فریم ورکی برای حل مسئلهای خاص طراحی و ایجاد شده است. فریم ورکها در حوزههای گوناگون کامپیوتری از جمله «توسعه وب» (Web Development)، «علم داده» (Data Science) و سایر موارد استفاده میشوند. در ادامه این بخش برخی از حوزههایی که از فریم ورک استفاده میکنند همراه با مثالهایی از فریم ورکهای آنها ارائه شدهاند. ابتدا در بخش بعدی به بررسی فریم ورکهای تحت وب پرداخته شده است.
چارچوب نرم افزاری توسعه وب
«فریم ورکهای وب اپلیکیشن» (Web Application Framework | WAF) یا فریم ورکهای وب از توسعه اپلیکیشنهای تحت وب با استفاده از خدمات وب، منابع وب و «رابط برنامهنویسی اپلیکیشن» (Application Programming Interface | API) وب پشتیبانی میکنند. انواع گوناگونی از فریم ورکها برای توسعه فرانتاند و بکاند وجود دارند که در ادامه این بخش به بررسی آنها پرداخته شده است. ابتدا فریم ورکهای وب بکاند بررسی میشوند.
- مقاله پیشنهادی: برنامه نویس فرانت اند ، بک اند و فول استک دولوپر — وظایف، مهارت ها و درآمد
فریم ورک های وب بک اند
فریم ورکهای وب بکاند، رایجترین و پرکاربردترین فریم ورکهایی هستند که در برنامه نویسی مورد استفاده قرار میگیرند. این فریم ورکها به توسعه دهندگان در ساخت برنامههای کاربردی و وب سایتهای پویا کمک میکنند. فریم ورکهای تحت وب باعث متحول شدن روشهای توسعه وب شدهاند و با خودکار کردن وظیفههای رایج بهکار گرفته شده در برنامه نویسی وب، از جمله دسترسی به پایگاه داده، مدیریت جلسهها، وظیفههای مرتبط با قالبهای صفحه و سایر موارد، کل فرآیند توسعه نرم افزار سریعتر انجام میشود.
به جای استفاده از زبانهایی مانند HTML، جاوا اسکریپت و CSS، فریم ورکهای بک اند از زبانهای برنامه نویسی برای تعامل با پایگاه داده جهت مدیریت محتوا و سایر عملکردهای تحت وب استفاده میکنند. به عبارت دیگر، وظیفههای پیادهسازی شده با استفاده از فریم ورک، توسط سرور میزبان پشتیبانی میشوند. در ادامه به معرفی چند فریم ورک رایج و محبوب برنامه نویسی بکاند پرداخته شده است.
فریم ورک جنگو چیست؟
«جنگو» (Django) یک فریم ورک «متن باز» (Open Source) توسعه وب با زبان برنامه نویسی پایتون به حساب میآید. جنگو با هدف کمک به برنامه نویسان برای تبدیل ایدهها و مفاهیم انتزاعی به اپلیکیشنهایی کامل و پیشرفته طراحی شده است. از ویژگیهای مهم این فریم ورک تحت وب بکاند میتوان به سرعت بالا، امنیت و مقیاسپذیری آن اشاره کرد.
فریم ورک Rails چیست؟
یکی دیگر از فریم ورکهای متن باز تحت وب، «Ruby on Rails» به حساب میآید که با استفاده از زبان برنامه نویسی ساده روبی نوشته شده است. استفاده از این فریم ورک بسیار آسان است و در وب سایتهایی از جمله Airbnb، گیت هاب و Shopify مورد استفاده قرار گرفته است. ادامه این بخش به بررسی فریم ورکهای وب فرانتاند اختصاص دارد.
فریم ورک های وب فرانت اند
بارگذاری فریم ورکهای بکاند روی سرور انجام میشود و فریم ورکهای فرانت اند در سمت کاربر و مرورگر وب پیادهسازی میشود. این فریم ورکها در طراحی بخشی از وب سایت به توسعه دهندگان کمک میکنند که کاربر آن را میبیند و به طور کلی میتوان گفت بخش دیداری وب سایت توسط فریم ورکهای فرانتاند طراحی میشود. از جمله این وظیفهها میتوان به مدیریت درخواستهای AJAX، تعریف ساختمان فایلها و طراحی مؤلفههای استایل وب سایت اشاره کرد. در ادامه این بخش برخی از فریم ورکهای وب فرانتاند شرح داده شدهاند. ابتدا به بررسی فریم ورک «Angular JS» پرداخته شده است.
فریم ورک Angular JS چیست؟
فریم ورک Angular JS یا همان آنگولار، یک فریم ورک فرانتاند جاوا اسکریپت به حساب میآید. این فریم ورک را شرکت گوگل توسعه داده است و پشتیبانی آن هم توسط گوگل انجام میشود. ویژگیهایی از جمله اتصال دو طرفه و تزریق وابستگی به میزان بالایی باعث کاهش زمان توسعه و صرفهجویی در زمان میشوند. همچنین این ویژگیها باعث محبوبیت بالای فریم ورک Angular JS در جامعه توسعه وب شدهاند.
فریم ورک React چیست؟
فریم ورک React یکی دیگر از فریم ورکهای متن باز فرانتاند جاوا اسکریپت به حساب میآید که توسط تیم توسعه شرکت فیسبوک ایجاد شده است. با استفاده از آن میتوان به سادگی در کدهای وب سایت تغییرات مورد نیاز را اعمال کرد. یکی از ویژگیهای محبوب این فریم ورک استفاده از «Virtual DOM» است که باعث ایجاد وب سایتی یکپارچه با کارایی مناسب همراه با اطمینان از این میشوند که وب سایتهایی با سطح بارگذاریهای بالا، سریع عمل میکنند. Virtual DOM فهرستی درختی از اجزای درون صفحه را نشان میدهد و DOM سرنامی برای عبارت «Document Object Model» به حساب میآید.
فریم ورک Bootstrap چیست؟
فریم ورک Bootstrap مجموعهای از کدهای قابل استفاده مجدد HTML، جاوا اسکریپت و CSS به حساب میآید. داشتن تمام این کدهای از پیش تعریف شده در یک فایل قابل دانلود به توسعه دهندگان و طراحها این امکان را میدهند تا در زمان ایجاد وب سایتهایی صرفهجویی کنند که به طور کامل «واکنشگرا» (Fully Responsive) هستند. در بخش بعدی از مقاله «فریم ورک چیست» به بررسی برخی از فریم ورکهای توسعه موبایل پرداخته شده است.
چارچوب نرم افزاری برنامه نویسی توسعه موبایل
با افزایش چشمگیر پیشرفت طراحی دستگاههای تلفن همراه هوشمند، توسعه فریم ورکهای موبایل نیز به همان اندازه رشد کرده است. مانند برنامههای دسکتاپ مشابه به آن، فریم ورکهای توسعه موبایل ساختاری را برای توسعه دهندگان ارائه میدهند که از فرآیند ساخت اپلیکیشنهای موبایل پشتیبانی میکند. فریم ورکهای برنامه نویسی موبایل به دو نوع زیر تقسیم میشوند:
- فریم ورک برنامههای موبایل «بومی» (Native): این برنامهها به صورت اختصاصی فقط برای سیستم عامل اندروید یا iOS ساخته شدهاند.
- فریم ورکهای «چند پلتفرمی» (Cross-Platform): با استفاده از این نوع فریم ورکها میتوان برنامههایی سازگار با هر نوع سیستم عاملی را ایجاد کرد.
برخی از فریم ورکهای رایج و پرکاربرد موبایل در ادامه این بخش از مقاله «فریم ورک چیست» ارائه شدهاند.
فریم ورک فلاتر چیست؟
فریم ورک فلاتر یا همان «فلاتر» (Flutter) یک فریم ورک چند پلتفرمی است که کدهای بومی را تشکیل میدهد، به عبارتی دیگر میتوان از یک زبان برنامه نویسی و کدهای پایه آن برای ایجاد برنامههای سیستم عاملهای اندروید و اپل استفاده کرد. این پلتفرم توسط شرکت گوگل توسعه یافته است و به صورت رایگان و متن باز ارائه میشود.
فریم ورک React Native چیست؟
فریم ورک ری اکت نیتیو یک فریم ورک چند پلتفرمی به حساب میآید که بخشی از کدهای توسعه یافته شرکت فیسبوک را تشکیل میدهد. این فریم ورک، توسط زبانهای برنامه نویسی جاوا اسکریپت و ReactJS ایجاد شده است. فریم ورک React Native دارای مؤلفههای آمادهای است که باعث صرفهجویی در زمان برای توسعه دهندگان میشوند و نیازی نیست که همه عنصرها از ابتدا ایجاد شوند.
- مقالههای پیشنهادی:
- مقایسه Xamarin ،React Native و Flutter برای توسعه چند پلتفرمی — راهنمای کاربردی
- ساخت اپلیکیشن های iOS با Xamarin و Visual Studio — از صفر تا صد
فریم ورک Xamarin چیست؟
زامارین یک فریم ورک متن باز است که از کدهای #C و داتنت برای ایجاد اپلیکیشنها استفاده میکند. این فریم ورک متعلق به شرکت مایکروسافت است. زامارین یک فریم ورک چند پلتفرمی به حساب میآید که به توسعه دهندگان امکان استفاده از پایگاههای کد را به صورت مجدد میدهد. با استفاده از این فریم ورک، مولفههای «رابط کاربری» (User Interface | UI) در زمان اجرا به عنصرهای خاص پلتفرم تبدیل میشوند و تجربهای بومیتر را برای سیستم عاملهای اندروید، iOS و ویندوز فراهم میکنند. در بخش بعدی از مقاله «فریم ورک چیست» به بررسی فریم ورکهای مدیریت محتوا پرداخته شده است.
سیستم های مدیریت محتوا
سیستم مدیریت محتوا (Content Management System | CMS) نرم افزاری است که کاربران را قادر میسازد با استفاده از آن به ساخت، سازماندهی، تحویل و ویرایش محتواهای گوناگون از جمله نوشتههای مجله، کتابهای الکترونیکی، برنامههای موبایل و موارد آنلاین دیگر بپردازند. «فریم ورک مدیریت محتوا» (Content Management Framework | CMF) که گاهی به آن پلتفرم CMS نیز گفته میشود، ابزاری است که مؤلفههای قابل استفاده مجدد را برای مدیریت محتوای وب، اشتراکگذاری بخشهای گوناگون فریم ورک برنامه وب و CMSها فراهم میکند.
در فریم ورکهای سیستمهای مدیریت محتوا مسئلههایی مهمتر از قیمتگذاری، زبان و سهولت استفاده از کدها وجود دارند و به عنوان برخی از آنها میتوان به سئو، شخصیسازی و امنیت اشاره کرد. در ادامه برخی از سیستمهای مدیریت محتوا همراه با فریم ورکهای آنها معرفی شدهاند. ابتدا به بررسی سیستم مدیریت محتوا وردپرس پرداخته شده است.
سیستم مدیریت محتوا وردپرس چیست؟
وردپرس یک پلتفرم یا همان سیستم مدیریت محتوا رایگان و متن باز به حساب میآید. امروز بیش از ۴۲ درصد وب سایتها با استفاده از وردپرس طراحی شدهاند. وردپرس سیستمی بسیار ساده و کاربرپسند دارد. امکانات این پلتفرم باعث میشود که کاربران غیرمتخصص نیز بتوانند با استفاده از آن وب سایت بسازند و نیازی به متخصصین طراحی سایت نداشته باشند. وردپرس برای برندهای بزرگ همه چیز را از وب سایتهای کوچک گرفته تا فروشگاههای «تجارت الکترونیکی» (eCommerce) بزرگ پشتیبانی میکند.
بسیاری از پلاگینها، تمها و «افزونههای» (Extension) وردپرس ستون فقراتی برای وب سایتهای شخصیسازی شده و انعطافپذیر ایجاد میکنند. همچنین استفاده از وردپرس در صورتی که پلاگینهای آن به صورت مرتب بروزرسانی شوند، کاملاً مطمئن و امن است. به عنوان مثالهایی برای سیستمهایی که از فریم ورکهای اختصاصی سیستم مدیریت محتوا وردپرس استفاده میکنند، میتوان به Sony Music ،Angry Birds ،TechCrunch ،The New Yorker ،BBC America و سایر موارد اشاره کرد.
سیستم مدیریت محتوا دروپال چیست؟
Drupal یک سیستم مدیریت محتوا ماژولار، رایگان و متن باز به حساب میآید که با استفاده از زبان PHP نوشته شده است و توسط جامعه بزرگی پشتیبانی و استفاده میشود. با این حال استفاده از دروپال نسبت به سیستمهای مدیریت محتوا دیگر نیازمند دانش فنی بیشتری است. دروپال به دلیل طبقهبندی انعطافپذیرش برای پروژههایی ایدهآل است که دارای محتوای زیاد یا بسیاری از ویژگیهای اجتماعی و تیمهای وبمستر بزرگ هستند. به عنوان مثالی برای برخی از سیستمهایی که از فریم ورک مهم و کاربردی سیستم مدیریت محتوا دروپال استفاده میکنند، میتوان Arsenal FC ،InStyle ،Mattel ،Tesla ،Warner Bros ،Records را نام برد.
سیستم مدیریت محتوا جوملا چیست؟
Joomla سیستم مدیریت محتوایی رایگان و متن باز است و مانند CMSهای دروپال و وردپرس سفارشیسازی آن با استفاده از انواع قالبها و افزونههای گوناگون به سادگی انجام میشود. جوملا برای استفاده توسط افراد غیرمتخصص، از دروپال سادهتر و از وردپرس کمی سختتر است. این پلتفرم، سومین پلتفرم محبوب مدیریت محتوا به شمار میرود که از نظر سئو بهینهسازی شده است و امنیت خوبی دارد.
برخی از سیستمهایی که فریم ورکهای سیستم مدیریت محتوا جوملا استفاده میکنند، شامل IKEA ،LINUX ،Holiday Inn ،Harvard University و سایر موارد میشوند. در ادامه این بخش از مقاله «فریم ورک چیست» به بررسی فریم ورکهایی پراخته شده است که در مباعث علوم کامپیوتر و علم داده مورد استفاده قرار میگیرند.
- مقالههای پیشنهادی:
- وردپرس یا دروپال، کدامیک بهتر است؟ — مقایسه جامع
- جوملا یا وردپرس، کدام بهتر است؟ — مقایسه جامع
- مقایسه جوملا و وردپرس و دروپال — چه زمان از کدام یک استفاده کنیم؟
چارچوب نرم افزاری علم داده و هوش مصنوعی
«علم داده» (Data Science) حوزه وسیعی به حساب میآید که با استفاده از آمار، روشهای علمی، الگوریتم و سیستمها، اطلاعاتی را از دادههای مورد نیازش استخراج میکند. امروزه علم داده به یک حوزه پرکاربرد تبدیل شده و گستردگی و ایجاد آن تا حد زیادی ناشی از علم «هوش مصنوعی» (Artificial Intelligence) و «یادگیری ماشین» (Machine Learning | ML) است.
از آنجایی که در اکثر حوزههای علم داده و هوش مصنوعی از زبان برنامه نویسی پایتون استفاده میشود، استفاده از فریم ورکهایی که با این زبان برنامه نویسی ایجاد شدهاند روز به روز در حال افزایش است. برای مثال میتوان به فریم ورکهای TensorFlow ،PyTorch Apache Spark و سایر موارد اشاره کرد. در ادامه به بررسی یکی از این فریم ورکهای بسیار کاربردی یعنی تنسورفلو پرداخته شده است.
فریم ورک تنسورفلو چیست؟
تنسورفلو یک پلتفرم یادگیری ماشین متن باز به حساب میآید که توسط شرکت گوگل توسعه پیدا کرده است. پایه و اساس این پلتفرم «شبکههای عصبی» (Neural Network) و «یادگیری عمیق» (Deep Learning) هستند. تنسورفلو ابزارهایی برای ساخت و استقرار برنامههای یادگیری ماشین فراهم میکند.
- مقالههای پیشنهادی:
- یادگیری عمیق (Deep Learning) با پایتون — به زبان ساده
- تشخیص اشیا در تصاویر با پایتون — به زبان ساده
- پیاده سازی مدل های دسته بندی متن در پایتون — راهنمای کاربردی
یادگیری عمیق در سیستمهای گوناگون برای «بازشناسی گفتار» (Speech Recognition)، «تشخیص تصاویر» (Image Recognition)، «تشخیص حرکت» (Gesture Recognition)، «محلیسازی اشیا» (Object Localization)، ترجمه، «تشخیص نوری کاراکترها» (Optical Character Recognition)، «ترکیب صدا» (Voice Synthesis)، «دستهبندی متن» (Text Classification) و سایر موارد، مورد استفاده قرار میگیرد. به عنوان مثال سیستمهای Google Translate ،FaceNet ،Mozilla’s Deep Speech ،Google RankBrain از فریم ورک تنسورفلو در طراحی بخش هوش مصنوعی و یادگیری ماشین خود استفاده میکنند.
جمعبندی
در روشهای برنامه نویسی امروزی، فریم ورک یکی از بخشهای اصلی این مهارت در نظر گرفته میشود؛ زیرا همانطور که در مقاله «فریم ورک چیست» مورد بررسی قرار گرفت، استفاده از فریم ورک کار برنامه نویسی را سادهتر، سریعتر و مطمئنتر میکند. در این مقاله پس از بررسی مفهوم، ویژگیها، اهداف و دلیلهای استفاده از فریم ورک در برنامه نویسی به تفاوت آن با کتابخانه و ماژول نیز پرداخته شد.
همچنین، در آخرین بخش از این مقاله، انواع فریم ورک از جمله فریم ورکهای موبایل، توسعه وب به صورت فرانتاند و بکاند، مدیریت محتوا و هوش مصنوعی و مثالهایی از آنها بررسی شدند. در نهایت، سعی شد در این مقاله فیلمهای آموزشی که بیشترین ارتباط را با موضوع فریم ورک دارند نیز برای علاقهمندان و توسعه دهندگان معرفی شوند.