اصطلاح «ماژول» (Module) در برنامه نویسی بسیار پرکاربرد است و هنگام نوشتن برنامهها با زبانهای برنامه نویسی گوناگون، معمولاً این اصطلاح شنیده میشود. اما ممکن است تا کنون تعریف دقیقی از چیستی ماژول در ذهن وجود نداشته باشد. ماژول یکی از مولفههای نرم افزار یا بخشی از برنامه به حساب میآید که شامل یک یا چندین رویکرد برای برنامه نویسی است و شناخت دقیق آن برای هر فرد فعال در حوزه برنامه نویسی ضرورت دارد. همچنین، یک یا چند ماژول مستقل و توسعه یافته، یک برنامه را تشکیل میدهند. در این مقاله علاوه بر پرداختن به پاسخ این سوال که ماژول در برنامه نویسی چیست، به برخی از سایر سوالات مهم پیرامون این مفهوم نیز پاسخ داده داده شده است. همچنین موضوعهایی مثل انواع ماژول، کاربردها، مزایا و معایب آن و موارد دیگر نیز در این نوشتار پوشش داده شدهاند.
ماژول در برنامه نویسی چیست ؟
ماژول یک واحد مجزا نسبت به نرم افزار و سخت افزار به حساب میآید که بخشی از برنامه است. یک برنامه در سطح سازمانی امکان دارد چندین ماژول مختلف داشته باشد و هر ماژول عملیات منحصر به فرد و مجزایی را انجام دهد. ماژولها وظیفه برنامه نویسان را ساده میکنند و به برنامه نویس این امکان را میدهند تا فقط روی یک بخش از برنامه و عملیات آن تمرکز داشته باشند. آنها میتوانند دارای متدها و توابع مرتبط با یکدیگر باشند.
ماژولها معمولاً به وسیله «رابطها» (اینترفیس | Interface) در برنامههای نرم افزاری مورد استفاده قرار میگیرند. برای مثال، «سیستمها» (System)، «اپلیکیشنها» (Application) و «محصولات» (Product) یعنی همان «SAP»ها در پردازش دادهها (Data Processing) یا یک «نرم افزار برنامهریزی منابع انسانی» (Enterprise Resource Planning | ERP) از چندین ماژول بزرگ برای وظایفی از جمله امور مالی، زنجیره تامین، حقوق و سایر موارد استفاده میکنند که ممکن است همراه با «سفارشیسازی» (Customization) یا بدون آن پیادهسازی شوند.
یک مثال ساده و کلاسیک از «برنامههای مبتنی بر ماژول» (Module-Based Application)، نرم افزار Word است. این برنامه ماژولهای الصاقی از نرم افزار Paint مایکروسافت دارد که کاربران میتوانند به وسیله آن طراحی و ترسیم تصاویر را در داخل Word انجام دهند. ویژگیهای معمولی و اصلی اجزای مولفههای ماژولها در ادامه ارائه شدهاند:
- «قابل حمل بودن» (Portability): این قابلیت به ماژولها امکان استفاده در سیستمهای گوناگون را میدهد.
- «مشارکتپذیری» (Interoperability): این ویژگی امکان کار کردن ماژولها با اجزای سیستمهای دیگر را فراهم میسازد.
در ادامه این بخش به بررسی ماژول در سخت افزار کامپیوتر پرداخته شده است.
ماژول در سخت افزار کامپیوتر چیست؟
در سخت افزار کامپیوتر، ماژول واحدی نسبتاً فشرده در یک دستگاه بزرگتر است که نصب، تعویض و سرویس آن به صورت جداگانه انجام میشود. به عنوان مثال، «ماژول حافظه درونی» (Single In-Line Memory Module) واحدی برای دسترسی تصادفی به حافظه (RAM) است که میتوان آن را در کامپیوتر مورد نظر نصب کرد. در بخش بعدی از این مقاله به بررسی ارتباط بین API (واسط برنامه نویسی اپلیکیشن) و ماژول پرداخته شده است.
استفاده از API برای ماژول در برنامه نویسی چگونه است؟
یکی از روشهای بسیار مناسبی که ماژولها میتوانند به وسیله آنها در برنامهها با هم تعامل داشته باشند، استفاده از API (واسط برنامه نویسی نرم افزار کاربردی) به حساب میآید. با استفاده از API فقط بیتهایی مشاهده میشوند که توسعه دهندگان برای استفاده از ماژولها به آنها نیاز دارند و کدهای اصلی ماژولها برای برنامه نویسان پنهان خواهند شد.
این موضوع بدین معنا است که API مانند یک میانبر برای ماژول عمل میکند و فقط نشان میدهد که ماژول یا کتابخانه در برنامه نویسی چگونه تعریف میشود و چه کاری را انجام میدهد.
برای مثال میتوان گفت که API فقط اعلام میکند ماژول چه توابعی دارد، چه کاری انجام میدهد و چه چیزی را برمیگرداند. با استفاده از APIها میتوان به راحتی فهمید که چه بخشهایی از ماژولها میتوانند به راحتی و بدون اخطار (Warnning) تغییر کنند. به این ترتیب، زمانی که نیاز به تغییر مواردی در ماژول یا کتابخانه وجود داشته باشد، بخشهای دیگر برنامه میتوانند با اطمینان از ماژولها به وسیله APIها به کار خود ادامه دهند. در بخش بعدی مقاله «ماژول در برنامه نویسی چیست» به بررسی تفاوت بین کتابخانه و ماژول پرداخته شده است.
تفاوت بین کتابخانه و ماژول در برنامه نویسی چیست ؟
همانطور که پیشتر و در بخشهای قبلی این مقاله مورد بررسی قرار گرفت، ماژولها معمولاً مولفههای نرم افزاری هستند که یک یا مجموعهای از وظایف مرتبط با یکدیگر را انجام میدهند. این مولفهها مستقل هستند و میتوانند مستقل از سایر ماژولها مورد استفاده قرار بگیرند.
آنها برای وارد شدن به برنامه مثلا در زبان برنامه نویسی پایتون (Python) میتوانند با استفاده از Import وارد برنامه شوند. از طرفی، کتابخانه در برنامه نویسی مجموعهای از ماژولها و تابعهای مرتبط با یکدیگر است که پلتفرمی را برای ایجاد برنامههای نرم افزاری فراهم میکند.
ماژول در برنامه نویسی دارای کدهای مستقل و «قابل استفاده مجددی» (Reusability) است که میتوانند به خارج از فایل حاوی آن ارجاع داده شوند. ماژول به برنامه نویس این امکان را میدهد که کدها را بین فایلهای داخلی و همچنین میان فایلهای داخلی و خارجی به اشتراک بگذارد. به طور کلی ماژول به اشتراک گذاشتن و استفاده مجدد از کدها را سادهتر میکند. استفاده از کتابخانه روشی برای سازماندهی کدها به حساب میآید، کتابخانه مجموعهای از «بستههای» (Package) کوچک است که عملکردهای معمول مورد نیاز برنامه را فراهم میکند.
کتابخانهها «پایگاه کد» (Codebase) بستهها و برنامهها در اکثر زبانهای برنامه نویسی هستند، آنها حاوی کدها و دادههایی هستند که در بستهها و برنامهها مورد استفاده قرار میگیرند. همچنین کتابخانهها مسیری برای بهاشتراکگذاری کدها و دادهها بین برنامهها و بستهها هستند. در ادامه این بخش، برخی از ماژولها و کتابخانههای زبان برنامه نویسی پایتون برای آشنایی بیشتر با این اصطلاحات ارائه شدهاند. ابتدا برخی از «ماژولهای داخلی» (Built-in Module) پایتون نام برده میشوند:
- Copy
- Os
- Time
- Re یا همان Regex
- Random
- Gzip
- Zlib
- Xml
- Webbrowser
- Math
- Html
- Http
- Io
در ادامه این بخش از مقاله برای آشنایی بیشتر با کتابخانه در زبان برنامه نویسی پایتون چند نمونه از کتابخانههای این زبان برنامه نویسی نام برده میشوند:
- Requests
- TensorFlow
- PyTorch
- OpenCV
- Selenium
- Pyglet
- Pandas
- Matplotlib
- Numpy
- BeautifulSoup
- PyGame
در بخش بعدی از مقاله «ماژول در برنامه نویسی چیست» پس از معرفی فیلمهای آموزش برنامه نویسی تم آف به بررسی تفاوت بین ماژول و بسته یا همان پکیج پرداخته داده شده است.
معرفی فیلم های آموزش برنامه نویسی تم آف
دورههای آموزشی تم آف بر اساس موضوع در این وب سایت به صورت مجموعههای آموزشی گوناگونی دستهبندی شدهاند. یکی از این مجموعههای جامع، مربوط به دورههای آموزشی انواع زبانهای برنامه نویسی مختلف است. علاقهمندان میتوانند از این مجموعه آموزشی برای یادگیری بیشتر ماژول در برنامه نویسی و همچنین زبانهای گوناگونی که از ماژولها استفاده میکنند. در زمان تدوین این مقاله، مجموعه دورههای برنامه نویسی تم آف حاوی بیش از ۴۸۹ ساعت محتوای ویدیویی و حدود ۵۸ عنوان آموزشی مختلف است. در ادامه، برخی از دورههای این مجموعه به طور خلاصه معرفی شدهاند:
- فیلم آموزش برنامه نویسی پایتون Python – مقدماتی (طول مدت: ۱۹ ساعت و ۵۳ دقیقه، مدرس: پژمان اقبالی شمس آبادی): در این تم آف، زبان برنامه نویسی پایتون از مفاهیم پایه مانند انواع دادههای آن آموزش داده میشود و سعی شده است که همه مباحث مقدماتی مورد نیاز آن ارائه شوند. برای مشاهده فیلم آموزش برنامه نویسی پایتون Python – مقدماتی + کلیک کنید.
- فیلم آموزش برنامه نویسی C++ سی پلاس پلاس (طول مدت: ۲۰ ساعت و ۱۴ دقیقه، مدرس: دکتر فرشید شیرافکن): در این دوره آموزشی، زبان برنامه نویسیC++ در دو بخش و از اساسیترین مباحث آموزش داده شده است. برای مشاهده فیلم آموزش برنامه نویسی C++ سی پلاس پلاس + کلیک کنید.
- فیلم آموزش برنامه نویسی جاوا Java (طول مدت: 19 ساعت و 19 دقیقه، مدرس: دکتر سید مصطفی کلامی هریس): این تم آف به دانشجویان پیشنهاد میشوند که قصد یادگیری زبان برنامه نویسی جاوا را به صورت جامع دارند. برای مشاهده فیلم آموزش برنامه نویسی جاوا Java + کلیک کنید.
- فیلم آموزش برنامه نویسی C (طول مدت: ۱۳ ساعت و ۳۰ دقیقه، مدرس: دکتر سید مصطفی کلامی هریس): در این دوره آموزشی، زبان برنامه نویسی C همراه با مفاهیم کاربردی آن به همراه مثالهای عملی آموزش داده شده است. برای مشاهده فیلم آموزش برنامه نویسی C + کلیک کنید.
- فیلم آموزش کاربردی برنامه نویسی سی شارپ #C (طول مدت: ۱۳ ساعت و ۵۸ دقیقه، مدرس: مهندس رشید شجاعی): در این تم آف، دانشجویان و علاقهمندان به صورت کاربردی با زبان سی شارپ و محیطهای Visual Studio و داتنت آشنا میشوند. برای مشاهده فیلم آموزش کاربردی برنامه نویسی سی شارپ #C + کلیک کنید.
- فیلم آموزش برنامه نویسی تایپ اسکریپت TypeScript (طول مدت: ۸ ساعت و ۴۵ دقیقه، مدرس: پوریا کهریزی): این تم آف به دانشجویانی پیشنهاد شده است که قصد یادگیری زبان برنامه نویسی تایپ اسکریپت را از پایه دارند. تایپ اسکریپت دارای شباهتهای بسیاری با زبانهای #C و جاوا اسکریپت است. برای مشاهده فیلم آموزش برنامه نویسی تایپ اسکریپت TypeScript + کلیک کنید.
حال پس از معرفی برخی از دورههای آموزشی ویدیویی برنامه نویسی تم آف، در بخش بعدی مقاله «ماژول در برنامه نویسی چیست» به بررسی تفاوت بین بسته و ماژول پرداخته میشود.
تفاوت بین بسته و ماژول در برنامه نویسی چیست ؟
بستهها یا همان پکیجها مجموعهای از ماژولها هستند. از نظر لغوی این مفهوم میتواند کمی گیجکننده به نظر برسد، زیرا اصطلاح ماژول هم به معنی «مجموعه» است. ولی در برنامه نویسی، بستهها مجموعهای از ماژولهایی را در کنار یکدیگر جمعآوری میکنند که به طور کلی یک هدف مشخص دارند.
با استفاده از بستهها میتوان به راحتی ماژولهای مرتبط با هم را در برنامه استفاده کرد. بخش بعدی مقاله «ماژول در برنامه نویسی چیست» به بررسی تفاوت بین فریمورک و ماژول اختصاص داده شده است.
تفاوت بین فریمورک و ماژول در برنامه نویسی چیست ؟
«فریمورک» (Framework) در برنامه نویسی مجموعهای از کتابخانهها را نشان میدهد و با مفهوم ماژول تفاوت دارد. فریمورک بر خلاف ماژول، بسته و کتابخانه، فقط قابلیتهای کاربردی را ارائه نمیدهد، بلکه یک معماری برای محیط توسعه و برنامه نویسی ایجاد میکند. به عبارتی دیگر از فریمورکها در برنامه نویسی استفاده نمیشود و میتوان گفت که کدها در فریمورکها ادغام و پیادهسازی میشوند و از آنها استفاده میکنند.
فریمورک قالب و چارچوب ایجاد یک پروژه است و به همین دلیل ساختار کدنویسی خاصی را به برنامه نویس تحمیل میکند. بنابراین برنامه نویس باید طبق رویکرد برنامهنویسی فریمورک مورد استفاده خود، برنامه نویسی را انجام دهد. در بخش بعدی به بررسی کاربردهای ماژول در برنامه نویسی پرداخته شده است.
کاربرد ماژول در برنامه نویسی چیست ؟
ماژولها مولفههای قابل استفاده مجدد در نرم افزارها هستند که بلوکهای سازنده اپلیکیشنها را ایجاد میکنند. ماژولار بودن دارای اهداف و کاربردهای مهمی است که به عنوان پر اهمیتترین آنها میتوان به ساده شدن برنامه نویسی با استفاده از ماژولها اشاره کرد. زمانی که یک اپلیکیشن با تعداد بالای وابستگیهای متقابل بین بخشهای گوناگون برنامه طراحی میشود، درک تأثیر تغییراتی که روی کل برنامه اعمال شده است، بسیار دشوارتر خواهد شد.
از طرف دیگر اگر بخشی از برنامه با رابط برنامه نویسی ماژولار طراحی شود، بدون نیاز به داشتن درک عمیق از همه ماژولهای مرتبط به راحتی میتوان تغییراتی را در برنامه ایجاد کرد.
هدف و کاربرد مهم دیگر نوشتن برنامهها با استفاده ماژول، امکان استفاده مجدد از ماژولهای ایجاد شده در برنامههای گوناگون است. ماژولهایی که با استفاده از یک فریمورک ایجاد شدهاند با یک تغییر کوچک به راحتی میتوانند به برنامههای جدید انتقال داده شوند. با استفاده از تعریف یک اینترفیس (رابط استاندارد برای گسترش اپلیکیشنها) و ساخت عملکردها، برنامهای ایجاد خواهد شد که توسعه و نگهداری آن ساده است و در آینده به راحتی میتوان آن را در اَشکال مختلف پیادهسازی کرد. در ادامه به شرح کاربرد ماژول در برنامه نویسی جاوا اسکریپت پرداخته شده است.
کاربرد ماژول در برنامه نویسی جاوا اسکریپت چگونه است؟
کاربردها و روشهای استفاده از ماژول در زبانهای گوناگون به صورت متفاوت انجام میشوند، برای مثال، ماژولهای زبان برنامه نویسی جاوا اسکریپت (Java Script) به صورت کپسولهشده (Encapsulated) هستند، این موضوع بدین معنی است که جزئیات پیادهسازی آنها به صورت خصوصی انجام میشود و برای نمایش، یک API عمومی مورد استفاده قرار میگیرد.
بنابراین در این زبان برنامه نویسی میتوان نحوه رفتار ماژول را بدون تغییر در کدهایی ویرایش کرد که به آن متکی هستند.
کپسولهسازی باعث افزایش امنیت میشود و به واسطه آن از تداخل کدهای خارجی با کارکرد ماژول جلوگیری میشود. روشهای زیادی برای تعریف ماژولها در جاوا اسکریپت وجود دارند که برخی از محبوبترین و متداولترین این الگوها شامل ماژولهای «CommonJS» که الهامبخش ماژولهای Node هستند و روشهای «AMD» یا همان «تعریف ماژول ناهمزمان» (Asynchronous Module Definition) به حساب میآیند. در بخش بعدی از مقاله «ماژول در برنامه نویسی چیست» به انواع ماژول در برنامه نویسی پرداخته شده است.
انواع ماژول در برنامه نویسی
ماژولها میتوانند به عنوان نرم افزارهای جداگانهای شناخته شوند که برای هدفهای گوناگون همراه با سایر عناصر عملیاتی مورد استفاده قرار میگیرند. این مفهوم برنامه نویسی به برنامه نویسی شی گرا (Object Oriented Programming | OOP) بسیار نزدیک است و هدف اصلی آن شکستن کدهای برنامه به چند برنامه کوچکتر برای درک بهتر مفهوم برنامه به حساب میآید.
ماژولها انواع گوناگونی دارند که هر یک از آنها در ادامه مورد بررسی قرار گرفتهاند. در ابتدا به بررسی «ماژولهای کنترل برنامه» (Program Control Module) پرداخته میشود.
ماژول های کنترل برنامه
در این گروه از ماژولها، یک برنامه توسط ماژولی مستقل کنترل میشود که برای همین منظور طراحی شده است. برنامههای دیگر نیز ممکن است از ماژولی با همین نام استفاده کنند اما بسته به برنامه محتوای ماژولهای طراحی شده متغیر هستند. این نوع از ماژولها هیچ اطلاعاتی را رد و بدل نمیکنند، اما در آنها از یک فضای مشترک برای ذخیرهسازی تغییرات استفاده میشود.
یک ماژول خاص، بخش برنامه مرکزی را برای خدمات برنامه نویسی گوناگون ایجاد میکند. این ماژول در برنامه گنجانده شده است. در روش عملکرد این ماژول، برنامه شروع به کار میکند و در بخشی که ماژول قرار دارد، اجرا نگه داشته و ماژول پیادهسازی میشود. این ماژول کنترل خاص، معمولاً در ماژول مقداردهی برنامه قرار میگیرد. بخش بعدی به بررسی «ماژولهای وظیفه خاص» (Specific Task Module) اختصاص داده میشود.
ماژول های وظیفه خاص
به ماژولهایی وظیفه خاص گفته میشود که عملکرد خاصی را انجام میدهند و از این ماژولها میتوان در چندین برنامه استفاده کرد. این نوع از ماژولها از قبل کدنویسی و تست شدهاند، بنابراین به راحتی میتوان به آنها اعتماد و برای ساخت برنامهای کارآمد از این ماژولها استفاده کرد. با این حال، با توجه به عملکرد ماژولهای وظیفه خاص، آنها در گروه «عناصر اساسی برنامهها» (Foundational Element) قرار میگیرند.
این نوع از ماژولها برای انتقال اطلاعات بین برنامه اولیه و دیگر برنامهها استفاده میشوند. ایمن بودن این ماژولها استفاده از آنها را در چندین برنامه ممکن میسازد. قوانینی که نحوه انتقال اطلاعات در داخل و خارج از یک ماژول را تعریف میکنند، بسته به زبان برنامه نویسی ماژول متفاوت هستند. ماژول وظیفه خاص، دارای گزینههای انتقال داده زیر است:
- برخی از دادههای داخل ماژول با دادههای خارج ماژول میتوانند ارتباط برقرار کنند.
- برخی از دادههای داخل ماژول با هیچ دادهای در خارج از آن ارتباطی ندارند.
- هیچ دادهای از داخل ماژول با برخی از دادههای خارج آن ارتباط برقرار نمیکند.
- هیچ کدام از دادههای داخل و خارج ماژول با هم ارتباط ندارند.
جایگاه قرار گرفتن ماژول در کدهای برنامه کاملاً به زبان برنامه نویسی بستگی دارد که از آن استفاده شده است. این ماژولها میتوانند بسته به زبان برنامه نویسی، قبل یا بعد از ماژول اصلی قرار بگیرند. بخش بعدی مقاله «ماژول در برنامه نویسی چیست» به بررسی برنامه نویسی ماژولار اختصاص داده شده است.
برنامه نویسی ماژولار چیست؟
«برنامه نویسی ماژولار» (Modular Programming) یا همان «برنامه نویسی پیمانهای» یا «پودمانی» به عنوان رویکردی جهت طراحی نرم افزار تعریف میشود که روی تفکیک عملکردهای برنامه به بخشهای مستقل و قابل تغییر از جمله متدها یا ماژولها تمرکز دارد.
هر کدام از این بخشها شامل همه مواردی است که برای انجام عملکردها در آن بخش از برنامه مورد نیاز هستند. در برنامه نویسی ماژولار توابع مشابه باید در یک واحد از کدهای نوشته شده قرار بگیرند و توابع جداگانه نیاز است که به عنوان واحدهای جداگانه کدها توسعه داده شوند.
با استفاده از این امکانات، کدها به راحتی نگهداری و مجدداً استفاده میشوند. برنامه نویسی شی گرا ایده جدیدتری است که برنامه نویسی ماژولار را در برمیگیرد. مفهوم برنامه نویسی ماژولار در سال ۱۳۳۹ شمسی (۱۹۶۰ میلادی) برای کمک به کاربران ایجاد شده است. در آن سالها برنامه نویسان شروع به تقسیم برنامهها به بخشهای کوچکتری کردند و با همین روند، برنامه نویسی ماژولار ایجاد شد. برنامه نویسی ماژولی از نظر فایلها، مخازن و ماژولی بودن به سطوح مختلف زیر تقسیم میشود:
- کتابخانهها در پروژهها
- تابع در فایلها
- فایلها در کتابخانهها و مخازن
برنامه نویسی ماژولار روشی برای ساخت بلوکهای گوناگون در برنامهها است و هر بلوک با استفاده از بلوکهای دیگر ساخته میشود. هر بلوک کاملاً مستقل است و بلوکها میتوانند برای ایجاد یک برنامه کامل در کنار هم قرار بگیرند. بنابراین با فکر کردن به مفهوم ماژولار بودن، کل معماری برنامه را میتوان ایجاد کرد. به عنوان مثالهایی برای زبانهای مبتنی بر ماژول میتوان به همه زبانهای برنامه نویسی شی گرا مانند ++C، «جاوا» (Java) و سایر موارد اشاره کرد. در ادامه این بخش از مقاله به شرح برخی از مزایای برنامه نویسی ماژولار پرداخته شده است.
مزایای برنامه نویسی ماژولار چیست؟
برنامه نویسی ماژولار مزایای بسیاری برای برنامه نویسان به ارمغان میآورد که در این بخش به برخی از آنها اشاره شده است:
- سادهتر شدن خواندن کدها (افزایش خوانایی): کار کردن با روشهای برنامه نویسی ماژولار خواندن کدها را سادهتر میکند؛ زیرا استفاده از توابعی که وظایف گوناگونی را انجام میدهند در مقایسه با کدهای یکپارچه بهتر و سادهتر است. اگر متغیرها و آرگومانها در توابع مختلف پیادهسازی شوند، گاهی ممکن است برنامه نویسی ماژولار کمی نامرتب به نظر برسد. استفاده از ماژولها باید به شیوهای معقول انجام شود تا از هر گونه خطا و بینظمی جلوگیری شود. همچنین، توابع باید مرتب، تمیز و توصیفی ایجاد شوند.
- سادهتر شدن تست کدها: در برنامههای نرم افزاری، برخی از توابع دارای وظایف کمی هستند و همچنین تعداد وظایف برخی از آنها بسیار بالا است. اگر اکثر بخشهای نرم افزار از ماژولها تشکیل شده باشند، تست کردن آن سادهتر خواهد بود. اگر قصد طراحی نرم افزاری بینقص و با کیفیت وجود داشته باشد، با استفاده از تستهای بیشتری میتوان آن را ایجاد کرد.
- قابلیت استفاده مجدد از کدها: برخی از کدها چندین بار در یک برنامه مورد استفاده قرار میگیرند. به وسیله این قابلیت به جای چندین بار کپی کردن بخشی از کدها در بخشهای گوناگون برنامه، میتوان کدهای مورد نظر را با استفاده از اینترفیسها یا کتابخانهها در محل مناسب فراخوانی کرد. قابلیت استفاده مجدد از کدها باعث کاهش اندازه برنامه نیز میشود.
- رفع سریع مشکلات: برای مثال فرض میشود در برنامهای در گزینههای پرداخت خطایی وجود دارد و باید برطرف شود. برنامه نویسی ماژولار در این مثال کمک بزرگی به برنامه نویسان میکند؛ زیرا در برنامه برای بخش پرداخت یک تابع جداگانه وجود دارد و برای برطرف کردن خطا فقط آن بخش بررسی خواهد شد. بنابراین استفاده از ماژولها برای رفع خطاهای برنامه، سرعت از بین بردن مشکلات را بسیار بالا میبرد.
- بروزرسانی با ریسک پایین: در برنامه نویسی ماژولار، یک لایه تعریف شده از APIها از مواردی محافظت میکند که ممکن است در کتابخانه تغییراتی ایجاد کنند. مگر اینکه تغییری در API ایجاد شود و ریسک پایینی برای ایجاد خطا در کدها به وجود بیاورد. برای مثال، اگر APIها به صورت واضح تعریف نشده باشند و ممکن است فردی با این گمان تابع را تغییر دهد که گویی از آن تابع تنها در همان برنامه استفاده شده است. در صورتی که آن تابع در کتابخانههای دیگر نیز استفاده شده باشد، ممکن است به صورت تصادفی برای بخشی از برنامه مشکل ایجاد شود.
- همکاری یا مشارکت آسان در کدها: ممکن است توسعه دهندگان یک تیم نرم افزاری همگی روی یک قطعه از کدها کار کنند. در این وضعیت، در صورت استفاده از گیت برای همکاری در پروژه به احتمال زیاد، بههمریختگیها و مغایرتهایی به وجود خواهند آمد. اگر کدها بین فایلها، توابع و مخازن بیشتری تقسیم شوند، احتمال بروز این مشکلات کمتر خواهد بود. همچنین در این حالت میتوان مالکیت هر یک از بخشها را تنها به یک برنامه نویس سپرد و از ایجاد سردرگمی و کشمش میان اعضای تیم جلوگیری کرد.
در بخش بعدی مقاله «ماژول در برنامه نویسی چیست» به بررسی و شرح برخی از معایب برنامه نویسی ماژولار پرداخته شده است.
معایب برنامه نویسی ماژولار چیست؟
برنامه نویسی ماژولار در کنار مزایای بسیاری که دارد، مانند انواع روشهای دیگر برنامه نویسی دارای معایبی نیز است. بنابراین برای آشنایی بیشتر با این روش برنامه نویسی، در این بخش از مقاله به بررسی برخی از معایب مهم در برنامه نویسی ماژولی پرداخته میشود.
در ادامه این معایب شرح داده شدهاند:
- برای ایجاد محصول به وسیله برنامه نویسی ماژولار به زمان و بودجه بیشتری نسبت به سایر روشهای برنامه نویسی نیاز است.
- ترکیب کردن ماژولهای ایجاد شده با هم یک کار چالشی و دشوار به حساب میآید.
- برای استفاده از برنامه نویسی ماژولار نیاز است که اسناد دقیقی برای آن تولید شوند تا همه کارها با دقت انجام شود و دیگر ماژولهای برنامه تحت تأثیر قرار نگیرند.
- برخی از ماژولها ممکن است کارهای انجام شده توسط ماژولهای دیگر را تکرار کنند. از این رو، گاهی اوقات برنامههای ماژولی به فضا و زمان بیشتری برای پیادهسازی نیاز خواهند داشت.
- ممکن است ادغام ماژولهای گوناگون در یک برنامه کار سادهای نباشد؛ زیرا افراد گوناگونی روی طراحی ماژولها کار میکنند و امکان دارد که همه آنها سبک یکسانی نداشته باشند.
- برنامه نویسی ماژولار کارایی برنامه را کاهش میدهد؛ زیرا تست و «اشکالزدایی» (Debugging) آن زمانبر است و احتمال دارد هر تابع حاوی هزاران خط کد باشد.
برنامه نویسی ماژولار مفهومی قدیمی است، اما با این حال هنوز هم بین توسعه دهندگان مفهومی رایج به حساب میآید. بهتر است هر توسعه دهندهای، برنامه نویسی ماژولار را نیز یاد بگیرد. در برنامهها مواقعی به وجود میآیند که نیاز به استفاده مجدد از کدها، تست کردن کدها و کاهش ریسک برنامه بسیار اهمیت دارد و با استفاده از این روش میتوان به راحتی به این اهداف دست یافت. همچنین این ویژگیها باعث ضروری شدن برنامه نویسی ماژولار شده است. در بخش بعدی از مقاله «ماژول در برنامه نویسی چیست» به آموزش ماژول نویسی پرداخته میشود.
آموزش ماژول نویسی
همانطور که در بخشهای پیشین مورد بررسی قرار گرفت، ماژولها همان برنامههایی هستند که به بخشهای گوناگونی برای درک بهتر تقسیم شدهاند. به عنوان شبهکدی برای آموزش نوشتن یک ماژول معمولی از نوع وظیفه خاص در زبان برنامه نویسی جاوا اسکریپت، میتوان کدهای زیر را در نظر گرفت:
Function identifier name () { //lines of code; return ; }
همچنین در زبان برنامه نویسی پایتون از کدهای زیر برای ساخت ماژول استفاده میشود:
def function identifier name () : //lines of code; return ;
طراحی استاندارد ماژول در زبانهای برنامه نویسی مانند C و ++C با استفاده از کدهای زیر صورت میگیرد:
function identifier name ( ) { //lines of code; Return ; }
در ادامه این مقاله برای درک بهتر ماژول در برنامه نویسی به بررسی ماژول در زبان پایتون پرداخته میشود.
ماژول در پایتون چیست ؟
پایتون یکی از زبانهای برنامه نویسی به حساب میآید که دارای ماژولهای بسیاری است. در این بخش از مقاله به طور خلاصه و برای آشنایی بیشتر با مفهوم ماژول در برنامه نویسی به بررسی ماژولهای پایتون پرداخته میشود. در زبان پایتون با سه روش زیر میتوان ماژولها را تعریف کرد:
- یک ماژول را میتوان با استفاده از زبان پایتون نوشت.
- یک ماژول میتواند با استفاده از زبان برنامه نویسی C نوشته شود و در زمان اجرا به صورت پویا بارگذاری شود. برای مثال میتوان به ماژول «re» یا همان «Regular Expression» اشاره کرد.
- ماژولهای داخلی در «مفسر» (Interpreter) پایتون قرار دارند برای مثال ماژول «itertools» از این نوع است.
ماژولها و اجزای آنها در هر سه نوع فوق با یک روش و با استفاده از عبارت «import» در برنامه قابل دسترسی هستند. در این بخش برای آشنایی بیشتر با ماژولها به آنهایی پرداخته میشود که با استفاده از پایتون نوشته شدهاند. ساخت این نوع از ماژولها بسیار ساده است و تنها کاری که باید انجام شود ایجاد یک فایل حاوی کدهای پایتون با پسوند py. است. در ادامه این بخش به بررسی مسیر جستجوی ماژول در پایتون پرداخته میشود.
مسیر جستجوی ماژول در پایتون چگونه است؟
در این بخش بررسی میشود که وقتی در پایتون دستور زیر اجرا شود، چگونه ماژول جستجو و پیادهسازی خواهد شد.
import mod
زمانی که مفسر عبارت فوق را پیادهسازی میکند، ماژول در فهرستی از پوشههای اسمبل شده از منابع زیر جستجو میشود:
- پوشهای که اسکریپت ورودی در آن اجرا شده است یا دایرکتوری فعلی که مفسر در آن اجرا میشود.
- فهرستی از پوشههایی که در محیط متغیرهای «PYTHONPATH» وجود دارند.
- یک فهرست وابسته به نصب از پوشهها که در زمان نصب پایتون ایجاد شده است.
مسیر جستجوی نتایج در متغیر «sys.path» پایتون قابل دسترسی است که از ماژولی به نام «sys» به صورت زیر به دست میآید:
>>> import sys >>> sys.path
>>> import mod
در ادامه این بخش از مقاله «ماژول در برنامه نویسی چیست» به بررسی عبارت Import پرداخته میشود.
عبارت Import
در زبان پایتون ماژولها با عبارت import فراخوانی میشوند و سادهترین روش آنها به صورت زیر است:
import
به این نکته باید توجه داشت که این روش فراخوانی ماژول، دسترسی مستقیم به محتوای ماژول را امکانپذیر نمیکند. هر ماژول دارای «جدول نمادهای خصوصی» (Private Symbol Table) است که به عنوان «جدول نماد سراسری» (Global Symbol Table) برای همه اشیای تعریف شده در ماژول عمل میکند. بنابراین، در هر ماژول فضای نام (Namespace) پایتون جداگانهای ایجاد میشود. برای دسترسی به محتوای محلی ماژول، نام اشیا تعریف شده در ماژول باید دارای پیشوند نام ماژول به صورت زیر باشند:
>>> mod.s
'If Comrade Napoleon says it, it must be right.'
>>> mod.foo('quux')
arg = quux
در زبان پایتون ممکن است چندین ماژول با استفاده از جداکننده ویرگول در یک خط به صورت زیر فراخوانی شوند:
import [, ...]
روش فراخوانی ماژول به صورت زیر به اشیا مجزا از ماژول این امکان را میدهد تا مستقیماً وارد برنامه شوند:
from import
برای درک بهتر این موضوع مثالی در ادامه ارائه شده است:
>>> from mod import s, foo
>>> s
'If Comrade Napoleon says it, it must be right.'
>>> foo('quux')
arg = quux
>>> from mod import Foo
>>> x = Foo()
>>> x
برای وارد کردن نام همه چیز از ماژول به برنامه با استفاده از دستور from فوق از عبارت زیر استفاده میشود:
from import *
با روش فوق همه اشیا ماژول مورد نظر در جدول نمادهای محلی قرار میگیرند به جز مواردی که با کاراکتر «ـ» شروع میشوند. در ادامه مثالی برای این روش از وارد کردن ماژولها ارائه شده است.
>>> from mod import *
>>> s
'If Comrade Napoleon says it, it must be right.'
>>> a
[100, 200, 300]
>>> foo
>>> Foo
برای خلاصه کردن نام شی ماژولی که قرار است در برنامه وارد شود میتوان از عبارت زیر در پایتون استفاده کرد:
from import as [, as …]
در ادامه مثالی برای مشاهده نحوه استفاده از این روش در یک برنامه پایتون ارائه شده است:
>>> s = 'foo'
>>> a = ['foo', 'bar', 'baz']
>>> from mod import s as string, a as alist
>>> s
'foo'
>>> string
'If Comrade Napoleon says it, it must be right.'
>>> a
['foo', 'bar', 'baz']
>>> alist
[100, 200, 300]
همچنین میتوان نام اصلی خود ماژول را نیز با استفاده از همین روش و به وسیله کدهای زیر خلاصه کرد:
import as
مثالی برای درک بهتر روش استفاده از این عبارتها در ادامه مشخص شده است:
>>> import mod as my_module
>>> my_module.a
[100, 200, 300]
>>> my_module.foo('qux')
arg = qux
به این ترتیب، در مقاله «ماژول در برنامه نویسی چیست» سعی شد تا حد امکان به طور جامع به آموزش و چیستی ماژول و همچنین به مباحث پیرامون آن از جمله چگونگی تعریف و استفاده از آن در یکی از زبانهای برنامه نویسی پرکاربرد یعنی پایتون پرداخته شود. اکنون در بخش پایانی این مقاله، برای آشنایی بیشتر و آموزش برنامه نویسی و یادگیری بهتر ماژولها، آن دسته از دورههای تم آف که بیشترین ارتباط را با ماژول در برنامه نویسی دارند به علاقهمندان معرفی شدهاند.
معرفی فیلم های آموزش زبان های برنامه نویسی
در نهایت، در این بخش پایانی مقاله «ماژول در برنامه نویسی چیست» برای یادگیری بیشتر، تعدادی از دورههای آموزش برنامه نویسی تم آف به علاقهمندان معرفی شدهاند. مفهوم ماژول در برنامه نویسی و همچنین نحوه تعریف و فراخوانی آن در تمام این دورههای آموزشی شرح داده و تمرینهای عملی برای آنها ارائه شده است. ابتدا به معرفی آموزش برنامه نویسی پایتون Python – مقدماتی پرداخته میشود.
فیلم آموزش برنامه نویسی پایتون Python – مقدماتی
در این تم آف سعی شده است تا حد امکان به صورت جامع همه مفاهیم پایه و مورد نیاز برای برنامه نویسی پایتون ارائه شوند. این زبان برنامه نویسی یکی از محبوبترین و پرکاربردترین زبانها در سطح جهان به حساب میآید. پایتون در حوزههای مختلفی کاربرد دارد و با یادگیری آن میتوان در زمینههای مختلف علوم کامپیوتر فعالیت داشت. این دوره آموزشی به علاقهمندان و افراد تازه کاری پیشنهاد میشود که قصد شروع یادگیری پایتون را دارند.
طول مدت این دوره آموزشی حدود ۲۰ ساعت است و مهندس پژمان اقبالی شمس آبادی آن را تدریس میکند. همچنین، این دوره آموزشی ۵ درس را شامل میشود. از جمله سرفصلهای این دوره میتوان به آشنایی با Python (پایتون)، کلاس، توابع و ماژولها، خواندن و نوشتن فایلها و سایر موارد اشاره کرد.
- برای مشاهده فیلم آموزش برنامه نویسی پایتون Python – مقدماتی + اینجا کلیک کنید.
فیلم آموزش کتابخانه استاندارد پایتون
هدف این تم آف آموزش ماژولهایی است که با استفاده از پایتون نصب میشوند و نیازی به نصب جداگانه ندارند و تحت عنوان کتابخانه استاندارد پایتون شناخته میشوند. پیشنیاز لازم برای یادگیری این آموزش، آشنا بودن به زبان برنامهنویسی پایتون است. این تم آف شامل نزدیک به ۴ ساعت محتوای ویدیویی میشود و مهندس علی دژبرد آن را تدریس کرده است. همچنین این دوره آموزشی هفت فصل را دربرمیگیرد که برخی از فصلهای مهم آن شامل دسترسی به پوشهها و فایلها، اعداد و ریاضی، دسترسی به اینترنت، اجرای همزمان فرایند و سایر موارد هستند.
- برای مشاهده فیلم آموزش کتابخانه استاندارد پایتون + اینجا کلیک کنید.
فیلم آموزش مقدماتی پیاده سازی ماژول MVC با فریم ورک Spring Boot در جاوا Java
فریمورک Spring Boot MVC توسعه یک وب اپلیکیشن را بر پایه ماژول MVC بسیار سریعتر و سادهتر کرده است و در این آموزش مزیتهای آن نسبت به Spring MVC توضیح داده خواهد شد. در این دوره آموزشی ابتدا مفاهیم زبان جاوا، فریمورک و ماژولها توضیح داده میشوند و سپس برای هر یک از آنها مثال عملی ارائه شده است. این دوره آموزشی نزدیک به سه ساعت است و مهندس رضا غلام زاد آن را تدریس میکند. این تم آف پنج فصل را شامل میشود. برخی از سرفصلهای این دوره آموزشی، شامل آشنایی و نحوه کار Servlet ،Spring MVC ،Spring Boot، ساخت پروژه Spring Boot و نحوه ساختار آن، ارتباط و کار با پایگاه داده و سایر موارد میشوند.
- برای مشاهده فیلم آموزش مقدماتی پیاده سازی ماژول MVC با فریم ورک Spring Boot در جاوا Java + اینجا کلیک کنید.
فیلم آموزش برنامه نویسی جاوا Java
در این دوره آموزشی به طور جامع همه مفاهیم زبان برنامه نویسی جاوا آموزش داده شدهاند. طول مدت این دوره آموزشی جامع نزدیک به ۲۰ ساعت و توسط دکتر مصطفی کلامی هریس تدریس شده است. این دوره شامل ۲۳ فصل میشود که برخی از سرفصلهای مهم آن، ساختارهای کنترل برنامه و انواع عملگرها در جاوا، مبانی برنامه نویسی گرافیکی در جاوا، تعریف متدها و توابع در کلاسها و تولید اعداد تصادفی، آشنایی با رفرنسهای تابعی در جاوا ۸ و پیادهسازی یک پروژه محاسباتی و سایر موارد هستند.
- برای مشاهده فیلم آموزش برنامه نویسی جاوا Java + اینجا کلیک کنید.
فیلم آموزش برنامه نویسی C++ سی پلاس پلاس
++C زبانی همه منظوره و شی گرا است که در دنیای برنامه نویسی امروز در طیف وسیعی از زمینههای علوم کامپیوتر استفاده میشود. همه نرم افزارهایی که در ویندوز وجود دارند، توسط این زبان برنامه نویسی نوشته شدهاند. این دوره آموزشی در دو بخش معرفی دستورات و ساختمان داده و بیان مفاهیم شی گرایی، زبان ++C را آموزش میدهد. این تم آف توسط دکتر فرشید شیرافکن تدریس شده و شامل حدود ۲۰ ساعت محتوای ویدیویی است. آموزش برنامه نویسی C++ ۱۰ فصل را نیز شامل میشود. برخی از سرفصلهای مهم این دوره آموزشی شامل تابع، آرایه، اشارهگر، رشته و سایر موارد میشوند.
- برای مشاهده فیلم آموزش برنامه نویسی C++ سی پلاس پلاس + اینجا کلیک کنید.
فیلم آموزش جاوا اسکریپت JavaScript
جاوا اسکریپت زبانی شی گرا به حساب میآید که میتوان به وسیله برنامه نویسی سمت کلاینت در آن، عناصر HTML و مقادیر CSS موجود در صفحه وب سایت را تغییر داد. این دوره آموزشی توسط محمد عبداللهی آموزش داده شده و شامل حدود ۹ ساعت محتوای آموزشی است. این تم آف ۲۳ فصل دارد که برخی از آنها شامل معرفی انواع داده (Data Type) و عملگرها در جاوا اسکریپت، درخت مدل شی گرای سند (Document Object Model)، شی Date یا تاریخ، اشیا جاوا اسکریپت – کلاس RegExp یا Regular Expression و سایر موارد میشوند.
- برای مشاهده فیلم آموزش جاوا اسکریپت JavaScript + اینجا کلیک کنید.
جمعبندی
با توجه به اینکه امروزه و در دنیای دیجیتال یادگیری زبانهای برنامه نویسی رویکردی مهم و حیاتی برای سازمانها و کسب و کارها به حساب میآیند، یادگیری زبان برنامه نویسی و همه بخشهای کاربردی آن مانند ماژول در برنامه نویسی مسئله مهمی است. در این مقاله سوال ماژول در برنامه نویسی چیست همراه با مزایا و معایب آن، مورد بررسی قرار گرفت و به آن پاسخ داده شد. همچنین، تفاوت آن با کتابخانه، بسته و فریمورک بررسی شده است. در بخشهای نهایی مقاله نیز به بررسی کوتاهی از برنامه نویسی ماژولار و ماژول در پایتون پرداخته شد. در بخش پایانی مقاله برخی از دورههای مختلف آموزش زبانهای برنامه نویسی گوناگون برای علاقهمندان به یادگیری بیشتر زبانهای برنامه نویسی معرفی شدند.