آیا تابهحال به این فکر کردهاید که کدهایی که مینویسید کدهای بهینه و خوانایی هستند یا نه؟ اگر برنامهنویس مبتدی هستید ممکن است اصلاً این موضوع برایتان مهم نباشد ولی اگر کمی جلوتر بروید و بخواهید برنامههای پیچیدهای بنویسید چطور؟ بهاحتمال زیاد در این صورت برای نگهداری کد، تغییر آن و... به مشکل برمیخورید. در این مقاله هدف این است که با روش های برنامه نویسی آشنا شوید و بدانید که قبل از شما افرادی بودند که با مشکلاتی که شما ممکن است هر لحظه با آنها مواجه شوید، برخورد کردند و راهکارهایی را برای برنامه نویسی ارائه دادند.
روش های برنامه نویسی چیست؟
روش های برنامهنویسی مجموعهای از اصول طراحی هستند که نحوه نوشتن و سازماندهی کد برنامه را مشخص میکنند، در واقع یکسری چارچوبی هستند که به برنامهنویس کمک میکند تا مسئله پیچیدهای را که باید حل شود، مدلسازی کند. روش های برنامه نویسی راهی برای طبقهبندی زبان های برنامه نویسی بر اساس ویژگیهایشان است. روش های برنامه نویسی، زبان یا ابزار برنامهنویسی نیستند. شما نمیتوانید با یک روش چیزی بسازید، آنها بیشتر شبیه مجموعهای از دستورالعملهایی هستند که بسیاری از مردم بر روی آنها توافق کردهاند و آنها را توسعه دادهاند.
تاریخچه روش های برنامه نویسی
روش های برنامه نویسی جدیدی در طول زمان ایجاد شدهاند و بر اساس نیازهای صنعت و مشکلاتی که در تلاش برای حل آنها هستیم تکامل یافتهاند. اولین روش برنامه نویسی شناخته شده، بدون ساختار نامیده میشد. دلیل استفاده از این نامگذاری استفاده از عبارات goto (این عبارت باعث میشود که برنامه به یک برچسب مشخص بپرد) بود، این موضوع باعث شد کدی که در نهایت دیده میشد کد خوانایی نباشد (بلکه بیشتر یک کد اسپاگتی بود!) خیلی از مردم از این روش رضایت نداشتند، چرا که نگهداری و خطایابی کد را برای آنها بسیار سخت میکرد برای همین روزی شخصی به نام Edsger W. Dijkstra استفاده از این عبارت را غیرمجاز دانست و روش برنامه نویسی خود را به نام برنامه نویسی ساختار یافته ایجاد کرد و به دوران تاریک بدون ساختار پایان داد.
اهمیت روش های برنامه نویسی
درک روشهای مختلفی که میتوان با آنها عمل برنامه نویسی را انجام داد بسیار جالب است، بهدستآوردن اطلاعات در مورد این موضوعات راه خوبی برای باز کردن ذهن شما است، همچنین این اصطلاحات در دنیای برنامه نویسی بسیار مورد استفاده قرار میگیرند پس داشتن یک درک اولیه به شما کمک میکند تا موضوعات دیگر را بهتر درک کنید.
انواع روش های برنامه نویسی
روش برنامه نویسی دستوری
برنامه نویسی دستوری قدیمیترین و اساسیترین روش برنامه نویسی است، این روش شامل مجموعهای از دستورالعملهای دقیق است که به کامپیوتر داده میشود تا به ترتیب معین آنها را اجرا کند در واقع در این روش، ما بهعنوان برنامه نویس با روش خاصی آنچه را که رایانه باید انجام دهد و نحوه انجام آن را دیکته میکنیم. این دستورالعملها نحوه عملکرد برنامه را گامبهگام نشان میدهند. زبان های برنامه نویسی دستوری بسیار ملموس هستند و نزدیک به زبان سیستم کار میکنند و همچنین درک کد نوشته شده با این روش آسان است. روش دستوری مانند این است که از دوست خود بخواهید که گامبهگام به شما بگوید چگونه ماشینتان را که خراب شده تعمیر کنید.
روش برنامه نویسی اعلانی
در روش اعلانی بر خلاف روش دستوری، برنامهنویس به کامپیوتردستورالعملهایی که بگوید چگونه کار را انجام دهد، نمیدهد؛ بلکه فقط آن چیزی را که بهعنوان نتیجه انتظار دارد را به کامپیوتر ارائه میدهد و در فرآیند انجام این کار هیچ دخالتی ندارد و این به منطق زبان برنامهنویسی استفاده شده و کامپایلر بستگی دارد که چگونه به نتیجه مورد انتظار برسد. این روش پیچیدگی را از دید مستقیم برنامه نویس پنهان میکند. روش اعلانی هم مانند این است که از دوست خود بخواهید ماشینتان را تعمیر کند. برای شما مهم نیست که چگونه این کار را انجام دهد این امر به او بستگی دارد، هدف شما فقط این است که در نهایت یک ماشین سالم تحویل بگیرید.
روش برنامه نویسی دستوری
برنامه نویسی رویه ای
این روش یکی از انواع روش های برنامه نویسی دستوری است. روش رویه ای یک مرحله روش دستوری را بهبود میدهد این بهبود هم به این صورت است که دستورالعملهای گامبهگام در روش دستوری را به رویههایی تبدیل میکند.
حال باید بدانیم منظور از رویه چیست؟ رویه، تابعی است که هیچ مقداری را بر نمی گرداند، البته ممکن است مقداری را هم برگرداند ولی این مقدار لزوما فقط به ورودیها بستگی ندارد و میتواند نتیجه هر مقدار دیگری غیر از پارامترهای ورودی هم باشد.
به نمونه کد زیر در زبان جاوااسکریپت توجه کنید:
function factorial(n){
let answer = 1;
if (n === 0 || n === 1){
return answer;
}
else {
for(var i = n; i >= 1; i--){
answer = answer * i;
}
return answer;
}
}
console.log(factorial(6)); // Output: 720
کد بالا که مربوط به محاسبه فاکتوریل عدد 6 است همانطور که میبینید بهجای نوشتن کد پشتسرهم از رویه استفاده شده است و در نهایت رویه فراخوانی شده است و این کار باعث شده است که مقداری کد خواناتر شود.
مزایای برنامه نویسی رویه ای:
- کد را میتوان در قسمتهای مختلف برنامه بدون نیاز به کپی مجدد و فقط صرفاً با فراخوانی رویهها استفاده کرد.
- بهخاطر دلیل اول در حافظه نیز صرفهجویی میشود.
- از آن جایی که رویکرد استفاده شده در این روش بالابهپایین است به همین دلیل جریان برنامه را بهراحتی میتوان ردیابی کرد.
- بهخاطر ویژگی کد پیادهسازی شده در این روش پیادهسازی کامپایلر و مفسر هم راحتتر میشود.
- یادگیری این روش برای مبتدیان به دلیل فراوان بودن دوره های آنلاین و کتابهای آموزشی بسیار آسان است.
- این روش قابلیت ماژولاریتی بالایی دارد.
معایب برنامه نویسی رویه ای:
- از لحاظ امنیتی شرایط خوبی ندارد، چون دادهها در اختیار کل برنامه قرار دارند و آسیبپذیر هستند.
- برای حل مشکلات دنیای واقعی کاربردی نیستند.
- کد پیادهسازی شده با این روش پیچیده است.
- نگهداری کد نوشته شده با این روش سخت است.
برنامهنویسی ساختاری
این روش بهجای جریان کنترل عادی از یک جریان کنترل ساختیافته تبعیت میکند و در این نوع جریان کنترل استفاده از عبارت go to و معادل آن ممنوع است و بهجای آن از موارد زیر استفاده میشود:
- عبارات شرطی (if, if then, else)
- حلقههای تکرار (while, for)
- توابع
خیلی از زبان های برنامه نویسیزبان های برنامه نویسی چیست؟این مقاله عالی توضیح داده که زبان های برنامه نویسی چیست؟ و انواع زبان های برنامه نویسی و بهترین زبان برنامه نویسی برای شروع و پردرآمدترین آنها را معرفی کرده جدید با درنظرگرفتن روش ساختاری ایجاد شدند.
برنامه نویسی شی گرا
برنامهنویسی شی گرا یکی از محبوبترین و پرکاربردترین روش ها در دنیای امروز است. درک این روش بسیار آسان است، چون زندگی را همانطور که ما میشناسیم در قالب مجموعهای از اشیا میشناسد که در کنار یکدیگر برای حل مشکل خاصی کار میکنند. در روش برنامه نویسی شی گرابرنامه نویسی شی گرا چیست؟ شی گرایی چیست؟این صفحه عالی به معرفی برنامه نویسی شی گرا پرداخته و توضیح داده شی گرایی یا همان object oriented یا OPP چیست؟ همچنین مزایای برنامه نویسی شی گرا را بیان کرده تمام اجزای برنامه بهصورت شی نمایش داده میشوند و در داخل این شی توابع و دادهها در کنار یکدیگر قرار دارند بر خلاف برنامهنویسی تابعی که دادهها و توابع را جدا از هم قرار میدهد.
به نمونه کد زیر در زبان برنامه نویسی جاوا اسکریپتجاوا اسکریپت چیست؟ معرفی زبان برنامه نویسی java scriptزبان برنامه نویسی جاوا اسکریپت چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای JavaScript پرداخته و مبانی برنامه نویسی جاوا اسکریپت را آموزش داده که مربوط به همان مثال فاکتوریل است توجه کنید:
class Factorial {
constructor(number) {
this.number = number;
}
calculate() {
let result = 1;
for (let i = 1; i = this.number; i++) {
result *= i;
}
return result;
}
}
const factorial = new Factorial(6);
console.log(factorial.calculate()); // Output: 720
چهاراصل مهم در برنامهنویسی شی گرا وجود دارد:
- انتزاع (Abstraction): به زبان ساده انتزاع یعنی نمایش اطلاعات ضروری و پنهانکردن اطلاعات غیرضروری
- کپسوله سازی (Encapsulation): به معنی قراردادن ویژگی و رفتارهای مربوط به یک شی در داخل یک محفظه یا در واقع همان کلاس است بهطوریکه سطح دسترسی را هم مشخص میکند. اگر نوع دسترسی عمومی باشد کلاسهای دیگر هم میتوانند به آن متد یا ویژگی دسترسی داشته باشند، ولی درصورتیکه خصوصی باشد کلاسهای دیگر فقط از طریق توابع دسترسی عمومی میتوانند به موارد خصوصی دسترسی پیدا کنند پس این ویژگی، راهی برای محافظت از دادهها است.
- وراثت (Inheritance): در صورتی که یک شی یک سری رفتار مشابه شی دیگر داشته باشد، بهجای نوشتن تابع برای رفتارهای مشابه و در واقع به جای کپی کردن مجدد کدهای از قبل نوشته شده میتوان از مفهوم ارث بری استفاده کرد و از همان توابعی که از قبل وجود دارند استفاده کرد.
- چند ریختی (Polymorphism): یک متغیر، تابع یا شی قابلیت این را دارد که در شکلهای مختلفی در برنامه ظاهر شود.
روش برنامه نویسی اعلانی
برنامهنویسی تابعی
برنامه نویسی تابعی پرکاربردترین روش برنامه نویسی اعلانی است. در این روش، برنامه فقط از توابع و ترکیب آنها ساخته میشود و بر خلاف روش دستوری از عباراتی مانند break ،while ،go to ،continue اجتناب میشود و همین امر باعث میشود که دنبالکردن کد سختتر شود.
به نمونه کد زیر در زبان جاوا اسکریپت که مربوط به همان مثال فاکتوریل است توجه کنید:
const factorial = (n) => {
if (n === 0) {
return 1;
}
return n * factorial(n - 1);
};
console.log(factorial(6)); // Output: 720
روش تابعی از یک سری اصول تبعیت میکند:
- توابع خالص (Pure Functions): در این روش همه توابع باید خالص باشند، یعنی یک تعداد ورودی بگیرند و یک خروجی برگردانند و همچنین روی متغیر های سراسری هیچ تاثیری نداشته باشند و آن هارا تغییر ندهند و فقط متکی به ورودی های خود تابع باشند.
- تغییر ناپذیری (Immutability): وضعیت یک داده پس از ایجاد آن نمیتواند تغییر کند، اگر بخواهید یک شی تغییرناپذیر را تغییر دهید، امکانپذیر نیست، ولی میتوان برای این کار یک شی جدید با مقدار جدید ایجاد کرد.
- شفافیت ارجاعی (Referential Transparency): از آن جایی که همه توابع باید خالص و تغییرناپذیر باشند برای همین میتوان فراخوانی توابع را با مقداری که بر میگردانند جایگزین کرد بدون آن که خللی در اجرای برنامه به وجود آید.
- توابع درجه یک: درجه یک بودن به این معناست که توابع میتوانند بهعنوان آرگمان به توابع دیگر منتقل شوند.
- توابع مرتبه بالاتر: توابعی هستند که توابع دیگر را بهعنوان آرگومان میپذیرند و یک تابع را بهعنوان نتیجه برمیگردانند.
برنامهنویسی منطقی
برنامه نویسی منطقی یک روش برنامه نویسی است که بر اساس منطق ریاضی است در این روش بهجای دنبالهای از دستورات، عبارات برنامه شامل مجموعه قوانین (rule) و حقایق (fact) هستند در این نوع برنامه، کاربریک پرسوجو (query) ایجاد میکند و مفسر راهحل را از قوانین و حقایق موجود به دست میآورد، این نوع برنامه نویسی معمولاً در حوزه هوش مصنوعیهوش مصنوعی (AI) چیست؟ انواع، کاربردها، مزایا و معایبهوش مصنوعی یا Artificial Intelligence یا به اختصار AI، امروزه کاربردهای بسیاری پیدا کرده و به یکی از داغترین حوزههای بشر تبدیل شده است، اما با این وجود بسیاری از افراد با کاربردهای آن آشنایی کامل ندارند، به همین علت در این صفحه کاربردها، مزایا و معایب AI بطور کامل بررسی شده است و یادگیری ماشینیادگیری ماشین چیست و چرا مهم است؟ - Machine learning (ML)تعریف یادگیری ماشین : ماشین لرنینگ (Machine Learning یا به اختصار ML) باعث میشود که خود ماشینها با آنالیز داده ها امکان یادگیری و پیشرفت داشته باشند کاربرد دارد.
مثال:
- سقراط مرد است (fact)
- همه مردها فانی هستند (rule)
- سقراط فانی است؟ (query)
در نمونه کد زیر مثال معروف بالا را که به زبان پرولوگ نوشته شده است میتوان دید:
man(Socrates).
mortal(X) :- man(X).
?- mortal(Socrates).
مزایای برنامه نویسی منطقی:
- نوشتن کد آن راحت است.
- توسعه سریع
- خطایابی آسان
- مناسب برای الگوریتمهای پیچیده
برنامه نویسی پایگاه داده
شما هر نوع برنامه کاربردی که بخواهید بسازید و توسعه دهید به تعامل با پایگاهداده نیاز دارید. برنامه نویسی پایگاه داده راهی برای طراحی و نگهداری پایگاه داده برای یک برنامه کاربردی با استفاده از کدنویسی است، بازیابی اطلاعات از پایگاه داده و ایجاد روابط بین مجموعه دادهها از وظایف کلیدی در برنامه نویسی پایگاه داده است.
نمونه کد زیر اطلاعات مربوط به همه کتابهای یک کتابخانه را نمایش میدهد:
SELECT * FROM books
موارد استفاده برنامه نویسی پایگاه داده:
- ایجاد پایگاه داده از صفر
- ایجاد نمونههای جدید بدون تکرار
- بازیابی و حذف نمونهها
تفاوت روش دستوری و اعلانی
با روش های دستوری و اعلانی به طور جداگانه آشنا شدیم حال در این قسمت به طور عمیقتری تفاوتهای این دو را بررسی میکنیم:
بررسی پنج تفاوت کلیدی
برنامهنویسی دستوری | برنامهنویسی اعلانی |
---|---|
محاسبات | |
دستورالعملهای گامبهگام را برای چگونگی دستیابی یک برنامه اجرا شده به نتایج دلخواه توصیف میکنید. | شرایطی را تنظیم میکنید که اجرای برنامه آغاز شود تا نتایج دلخواه را ایجاد کند، در این روش کامپایلر ترتیب عملیات را مشخص میکند نه برنامهنویس. |
خوانایی و پیچیدگی | |
با تأکید بر جریان کنترل، میتوانید روند گامبهگام را نسبتاً آسان دنبال کنید. ولی با بیشترشدن کد برنامه طولانیتر و پیچیدهتر میشود و خواندن آن گیجکننده و وقتگیر خواهد بود. | به دلیل عدم استفاده از فرایندهای گامبهگام این روش پیچیدهتر است؛ ولی به کد کمتری نیاز دارد و از نظر خوانایی آسان است. |
سفارشیسازی | |
برای سفارشی کردن کد و توابع راهکار ساده ارائه میدهد از آن جایی که کنترل کاملی بر روند برنامه داریم میتوانیم ساختار برنامه را مطابق نیازهایمان تغییر دهیم. | به دلیل سینتکس پیچیده برنامهنویسی اعلانی سفارشی کردن کد سخت است و برای اجرای توابع پیچیده نیاز به ویژگیهای زیادی دارد. |
بهینهسازی | |
در این روش با وجود آن که میتوانید افزونه اضافه کنید و برنامهتان را ارتقا دهید؛ ولی این کار باعث میشود بهینهسازی سختتر شود؛ چون هر چه کد طولانیتر شود احتمال مواجهه با خطا بیشتر میشود | بهینهکردن کد راحت است؛ چون یک الگوریتمی برای کنترل پیادهسازی شما وجود دارد همچنین میتوانید افزونه اضافه کنید برنامه را ارتقا دهید. |
ساختار | |
کد، ساختار طولانی و پیچیدهای دارد؛ چون در خود کد مشخص میشود که چگونه و به چه ترتیبی باید اجرا شود. | ساختار کد مختصر و دقیق و فاقد جزئیات است. |
امروزه از چه روش برنامه نویسی استفاده میشود؟
این موضوع میتواند به برنامهنویس بستگی داشته باشد که از چه روشی برای نوشتن کد خود استفاده کند، اما درنظرگرفتن برخی موارد میتواند به او در انتخاب روش بهتر کمک کند. روش دستوری یکی از روشهای کلاسیک است که یادگیری آن آسان است، ممکن است برخی از توسعهدهندگان به دلیل آن که میتوانند در روش اعلانی کدهایی با خوانایی و مقیاسپذیری بالا بنویسند به سمت این روش سوق پیدا کنند. اما این مورد را هم باید در نظر داشت، از آن جایی که برنامهنویسی در طول زمان تکامل پیدا میکند و نرمافزار پیچیدهتر میشود برنامه نویسی اعلانی جذابیت خود را از دست میدهد و همچنین این امکان هم وجود دارد که انعطافپذیری بهمرورزمان اهمیت بیشتری پیدا کند و روش دستوری ارزشمندتر شود.
هر زبان برنامه نویسی از چه روش برنامه نویسی پشتیبانی می کند؟
برخی از زبانهای برنامهنویسی تنها از یک روش برنامه نویسی پشتیبانی میکنند، اما برخی هم وجود دارند که از چند روش پشتیبانی کنند. در تصویر زیر میتوانیم چند نمونه از زبانهایی که از روش های برنامه نویسی موجود پشتیبانی میکنند را به تفکیک روش ببینیم:
جمعبندی
همانطور که در سرتاسر مقاله دیدیم روش های برنامه نویسی راهی برای حل مشکلات برنامه نویسی و سازماندهی کد هستند با روش های دستوری و اعلانی و انواع هر کدام تا حد خوبی آشنا شدیم و دانستیم هر کدام مزایا و معایب خاص خود را دارند و هیچ روش برنامه نویسی کاملی وجود ندارد و انتخاب روش بهتر به زبان برنامه نویسی که میخواهید استفاده کنید و برنامهای که میخواهید بنویسید بستگی دارد.
روش های رایج برنامه نویسی کداماند؟
روش های دستوری، رویهای، تابعی، اعلانی و شی گرا برخی از محبوبترین و پرکاربردترین روش های امروزی هستند و دانستن اصول اولیه در مورد آنها برای دانش عمومی و همچنین برای درک بهتر سایر موضوعات دنیای کدنویسی خوب است.
تفاوت بین روش برنامه نویسی و زبان برنامهنویسی چیست؟
زبان برنامه نویسی در مورد حل مسائل است و معمولاً مشکلات را میتوان به روش های مختلفی حل کرد. روش برنامه نویسی راهی برای نزدیکشدن به یک مسئله است. درحالیکه برخی از زبانهای برنامهنویسی به شما امکان استفاده از یک رویکرد را میدهند، امروزه اکثر محبوب به توسعهدهندگان اجازه میدهند از ترکیبی از روشها استفاده کنند.
مهمترین روش برنامه نویسی کدام است؟
برنامه نویسی شی گرا احتمالاً یکی از محبوبترین روش های برنامه نویسی است.
روش های برنامه نویسی چه میکنند؟
روش های برنامه نویسی پیچیدگی برنامهها را کاهش میدهند، هر برنامهنویس هنگام پیادهسازی کد خود باید از یک روش پیروی کند، هر کدام مزایا و معایب خود را دارند. اگر مبتدی هستید، بهتر است اول برنامه نویسی شی گرا و برنامه نویسی تابعی را یاد بگیرید.