| پارادایم‌های برنامه‌نویسی |
| --- |
| * زبان عملی
* عامل گرا
* آرایه‌گرا
* مبتنی بر اتوماتا
* رایانش همزمان
	+ نسبیت گرایی
* داده‌محور
* اعلانی (تضاد: دستوری)
	+ تابعی
		- منطق تابعی
		- تابعی خالص
	+ منطقی
		- منطقی قیاسی
		- مجموعه جواب
		- منطق همزمان
		- منطق تابعی
		- منطق استقرایی
	+ محدودیتی
		- منطق محدودیتی
			* منطق محدودیت همزمان
	+ جریان داده
		- مبتنی بر جریان
		- واکنشی
	+ هستی‌شناسی
* تشخیص پذیر
* پویا/اجرانامه‌نویسی
* رویدادمحور
* سطح تابع (تضاد: سطح مقدار)
	+ سبک بدون آرگومان
		- الحاقی
* همگانی
* دستوری (تضاد: اعلانی)
	+ رویه‌ای
	+ شیءگرا (OOP)
		- کد چندریخت
* تصمیم گرا
* زبان گرا
	+ خاص دامنه
* ادیبانه
* برنامه‌نویسی زبان طبیعی
* فرا برنامه‌نویسی
	+ خودکار
		- استقرایی
	+ پژواکی
		- صفت گرا
	+ مبتنی بر کلان‌دستور (ماکرو)
	+ خودآرا
* غیر ساخت‌یافته (تضاد: ساخت‌یافته)
	+ آرایه‌ای (برداری)
* غیرقطعی
* رایانش موازی
	+ فرایند گرا
* احتمالی
* کوانتمی
* نظریه مجموعه‌ها
* مبتنی بر پشته
* ساخت‌یافته (تضاد: غیر ساخت‌یافته)
	+ بلوک ساختاری
		- ساخت‌یافته همزمان
	+ شیءگرا (OOP)
		- مبتنی بر بازیگر
		- مبتنی بر کلاس
		- همزمان
		- بر پایه پیش‌نمونه
		- با تفکیک دغدغه‌ها:
			* جنبه‌گرا
			* نقش گرا
			* موضوع گرا
	+ بازگشتی
* نمادین
* سطح مقدار (تضاد: سطح تابع)
 |
| * ن
* ب
* و
 |

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

ویژگی‌ها و مفاهیم معمولی
------------------------

### مفاهیم اساسی

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

نوع و گونهٔ داده
----------------

زبانهای غیر ساخت یافته اجازه استفاده از نوع‌های داده‌ای اساسی را مثل شماره‌ها، رشته‌ها و آرایه‌ها (تعدادی دادهٔ همنوع) [] می‌دهند. معرفی آرایه‌ها در زبان‌های غیر ساخت یافته یک مرحلهٔ رو به جلو قابل توجه است. فرایند ساخت جریان داده با وجود فقدان نوع داده‌ای ساختار ممکن است. []

منابع
-----

1. ↑  William W. Cobern. A positive albeit ambiguous case for BASIC programming in secondary science teaching.

|  |  |
| --- | --- |
| آیکون خرد | این یک مقالهٔ خرد برنامه‌نویسی کامپیوتری است. می‌توانید با گسترش آن به ویکی‌پدیا کمک کنید. |