خانه / بیشتر از برنامه نویسی / بیشتر از برنامه نویسی (۷) : شیوه های برنامه نویسی

بیشتر از برنامه نویسی (۷) : شیوه های برنامه نویسی

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

 

این تفاوت ها به ویژه در برنامه های بزرگ با ده ها هزار و گاهی میلیون ها خط کد، نمود پیدا می کند، آن جاست که اسمبلی و دیگر زبان های سطح پایین سرعت فوق العاده اجرای برنامه شان را به رخ زبان های سطح بالا می کشند و در عوض زبان های سطح بالا هم خوانایی بالا، اشکال زدایی راحتشان و حجم کمتر کدشان را به نمایش می گذارند! بنابراین بجاست که به همه زبان های برنامه نویسی احترام گذاشته و قدر آن ها را بدانیم! فی الواقع شما در طی یادگیری یک زبان برنامه نویسی، با بسیاری از اصول برنامه نویسی آشنا خواهید شد که در همه زبان ها مشترک هستند. مثلاً اگر زبان C را بیاموزید، آموختن زبانی مثل C++ بسیار آسان خواهد بود و اگر C++ را خوب یاد بگیرید آن گاه جاوا را خیلی زود خواهید آموخت. مهم تر از همه این ها اگر قدری برنامه نویسی بدانید، به هر زبانی، در استفاده از نرم افزارهای کاربردی مثل متلب یا اتوکد، که در بعضی قسمت ها به برنامه نویسی احتیاج دارند، بسیار راحت خواهید بود. به علاوه اگر شما یک زبان برنامه نویسی را خوب و کامل فرابگیرید، هر زبانی که باشد، مشروط به این که یک زبان همه منظوره باشد نه مختص اعمال خاص (C, C++, C#, Java, Visual Basic  برای مثال زبان هایی همه منظوره هستند)، احتیاجات شما را برآورده می کند و هرگز نیاز نیست که زبان های مختلف را بدانید و یا حتی به سراغ آن ها بروید، فقط یک زبان را خوب و کامل یاد بگیرید! البته زبان های مختلف برای سلایق گوناگون و گاه برای منظورات خاص ایجاد شدند، همه هدفمندند و هیچ کدام بدرد نخور نیستند! در نهایت این شمایید که تصمیم می گیرید چه زبانی را بیاموزید و با آموختن یک زبان چیزی را از دست نخواهید داد که بسیاری مفاهیم مشترک را هم برای همیشه می آموزید. آن چه که گفته شد و آن چه که در ادامه گفته خواهد شد به این انتخاب شما کمک خواهد کرد.

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

برنامه نویسی زیرروالی[۱] : دراین روش برنامه به چندین عمل کرد تقسیم می شود ولی حتی با انجام این عمل پیچیدگی برنامه کاسته نخواهد شد و با بالا رفتن حجم کد اداره برنامه، اشکال زدایی و نگهداری آن بسیار سخت می شد.

برنامه نویسی ساخت یافته (رویّه ای)[۲] : در این روش علاوه بر این که برنامه به چندین برنامه فرعی تقسیم می شود دستورات نیز به صورت بلوک هایی که شروع و پایان آن ها مشخص است نوشته می شوند. در این شیوه، پروسه که همچنین به نام‌های روال، زیرروال (ساب‌روتین) و تابع، شناخته می‌شود، دربردارنده یک سری گام‌های محاسباتی است که قرار است توسط کامپیوتر اجرا شوند. هر پروسه می‌تواند در هر نقطه‌ای در طول اجرای برنامه فراخوانده شود شامل فراخوانی پروسه توسط خودش (بازگشتی) یا پروسه‌های دیگر. زبان های پاسکال و C از این شیوه بهره می برند. در این شیوه مشکل اصلی جدا بودن داده ها از کد و کد از داده هاست که در برنامه های بزرگ مشکل آفرین می شد.

 برنامه ریزی مدولار[۳] : در این نوع که توسعه یافته برنامه ریزی ساخت یافته است برنامه به چندین قطعه یا ماژول تقسیم می شود که هر ماژول جداگانه دارای داده ها و برنامه های خاص خودش می باشد که ماژول دیگری نمی تواند به آن دسترسی داشته باشد. خصیصه ای که پنهان سازی (کپسوله سازی) اطلاعات نامیده می شود.

برنامه نویسی شی گرا [۴] : در این نوع واحد اصلی برنامه شی می باشد که در برنامه به عنوان واحدی مستقل و مجزا شناخته می شود در همه ی برنامه های شی گرا سه مورد زیر مشترک است. این سه مورد حیاتی در شیوه های قبل هم مد نظر متخصصان قرار گرفته بود اما شی گرایی به بهترین و کامل ترین وجه ممکن، آن ها را نمایان ساخت.

۱-                      کپسوله سازی[۵] : در برنامه نویسی شی گرا برنامه از دو عنصر اصلی کد و داده تشکیل شده و کپسوله سازی عبارت است از نگه داری کد و داده ها در یک جا به طوری که از تداخل خارجی ایمن باشد به عبارت دیگر پنهان کاری نیز گفته می شود.

۲-                     چند ریختی[۶] : چند ریختی، کمیتی است که به یک رابط امکان می‌دهد تا از عملیات یکسانی در قالب یک کلاس عمومی استفاده کند. عمل خاص کلاس را ذات حقیقی شیء تعیین می‌کند. مثال ساده‌ای از چند ریختی، فرمان اتومبیل است.عمل فرمان اتومبیل برای تمام اتومبیل‌ها بدون توجه به ساز و کاری که دارند، یکسان است.فرمان برای اتومبیل که به طور مکانیکی کار می‌کند یا با نیروی برق یا هر چیز دیگری، عمل یکسانی را انجام می‌دهد.بنابراین، پس از اینکه شما عملکرد فرمان را یاد گرفتید، می توانید فرمان هر اتومبیلی را کنترل کنید.همین هدف در برنامه نویسی نیز اعمال می‌شود. به طور کلی، مفهوم چند ریختی، اغلب با عبارت «یک رابط، چندین روش» بیان می‌شود. این بدین معنی است که امکان طراحی رابط عمومی برای گروهی از عملیات مرتبط وجود دارد. چند ریختی یا چندشکلی به این معنا است که اشیاء می‌توانند در موقعیت‌های مختلف، رفتارهای متفاوتی بروز دهند. مثلاً یک تابع در صورتی که بر روی نمونه‌ای از کلاس آ فراخوانی شود، رفتار ب را بروز دهد در حالی که اگر بر روی کلاس ج (که فرزند کلاس آ است) فراخوانی شود، رفتاری متفاوت انجام دهد.

۳-                     وراثت[۷] : اگر مشخصه های یک شی به شی دیگر منتقل شود به آن وراثت گفته می شود با استفاده از وراثت نیاز نیست اجزا را به صورت مجزا تعریف کرد . بلکه می توانیم آن شی را با مشخصه های مختلف تعریف کرده و اشیاء دیگر به وراثت آن تعریف کرد. وراثت یا ارث بری از مفاهیم اساسی برنامه نویسی شیءگراست. هر شیء یک نمونه از یک کلاس است و هر کلاس می‌تواند از کلاس یا کلاس های دیگری مشتق شده باشد (خواص متدها یا رویدادهای کلاس‌های دیگر را به ارث ببرد). در یک مثال ساده می‌توان اتومبیلی را در نظر گرفت که برای جلوگیری از بازنویسی خواص عمومی اتومبیل شامل: چهار چرخ، متدهای حرکت چرخ، متد چرخاندن فرمان، فرمان، بدنه، در و غیره، می‌توان یک کلاس پایه از اتومبیل ایجاد کرد سپس مثلاً برای اتومبیل زانتیا مدل C۵ یک کلاس جدید ایجاد کرده که خواص، متدها و رویدادهای عمومی اتومبیل را داشته باشد و فقط برای خواص، متدها و رویدادهای جدید این اتومبیل کد نوشته شود. این ویژگی باعث صرفه‌جویی در نوشتن کد و تا حدودی تضمین صحت کد موجود می‌شود. به عنوان مثال اگر کلاس پایه مشکلی داشته باشد فقط کافی است کلاس پایه تغییر داده شود و در تمامی کلاس‌هایی که از این کلاس پایه ویژگی‌ای ا به ارث برده‌اند این تغییر اعمال خواهد شد.



[۱] – Procedural

[۲] – Structural

[۳] –  Modular

[۴]Object Oriented Programming (OOP)

[۵] – Encapsulation

[۶] – Polymorphism

[۷] – Inheritance

نقد و بررسی

۰

User Rating: ۴٫۵ ( ۳ votes)

درباره ی [مرتضی]

مرتضی ذاکری - عضو تیم کاری تارنمای میکروپدیا دانش آموخته مهندسی کامپیوتر - گرایش نرم افزار

همچنین ببینید

میکروپدیا؛ وب سایت تخصصی انجام پروژه های فنی و مهندسی

بیشتر از برنامه نویسی (۳) : ساختمان کامپیوترها

در این قسمت، نگاهی اجمالی بر سازمان و ساختمان کامپیوترها می اندازیم. خواهیم دید چگونه …

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پاسخ عبارت زیر را وارد کنید: *