کد منبع یک برنامه کامپیوتری به زبان C. خطوط برنامه نویسی بلوکی خاکستری نظراتی هستند که برنامه را برای انسان توضیح می دهند. هنگامی که کامپایل و اجرا می شود، خروجی "Hello, world!" را می دهد.
زبان برنامه نویسی سیستمی از نشانه گذاری برای نوشتن برنامه های کامپیوتری است.[1]
زبان های برنامه نویسی از نظر نحو (شکل) و معنای برنامه نویسی بلوکی (معنا) که معمولاً توسط یک زبان رسمی تعریف می شوند، توصیف می شوند. زبان ها معمولاً ویژگی هایی مانند سیستم نوع، متغیرها و مکانیسم هایی برای مدیریت خطا ارائه می دهند. اجرای یک زبان برنامه نویسی در قالب یک کامپایلر یا مفسر به برنامه ها اجازه می دهد تا به طور مستقیم یا با تولید آنچه در برنامه نویسی به عنوان یک فایل اجرایی شناخته می شود، اجرا شوند.
معماری رایانه به شدت بر طراحی زبانهای برنامهنویسی برنامه نویسی بلوکی تأثیر گذاشته است، با رایجترین نوع (زبانهای امری - که عملیات را به ترتیب مشخصی اجرا میکنند) که برای عملکرد مناسب در معماری محبوب فون نویمان توسعه یافتهاند. در حالی که زبانهای برنامهنویسی اولیه ارتباط نزدیکی با سختافزار داشتند، با گذشت زمان، انتزاعهای بیشتری برای پنهان کردن جزئیات پیادهسازی برای سادگی بیشتر ایجاد کردند.
هزاران زبان برنامه نویسی – که اغلب به عنوان امری، برنامه نویسی بلوکی کاربردی، منطقی یا شی گرا طبقه بندی می شوند – برای کاربردهای مختلف توسعه یافته اند. بسیاری از جنبههای طراحی زبان برنامهنویسی شامل معاوضههایی است – برای مثال، مدیریت استثنا، مدیریت خطا را سادهتر میکند، اما با هزینه عملکرد. تئوری زبان برنامه نویسی زیرشاخه ای از علوم کامپیوتر است که به مطالعه طراحی، پیاده سازی، تجزیه و تحلیل، خصوصیات برنامه نویسی بلوکی و طبقه بندی زبان های برنامه نویسی می پردازد.
تعاریف
معیارهای مختلفی وجود دارد که ممکن است هنگام تعریف زبان برنامه نویسی در نظر گرفته شود.
زبان های کامپیوتر در مقابل زبان های برنامه نویسی
اصطلاح زبان کامپیوتر گاهی اوقات به جای زبان برنامه نویسی استفاده می شود.[2] با این حال، استفاده از هر دو اصطلاح در بین نویسندگان متفاوت است، از جمله دامنه دقیق هر یک. یکی از کاربردها، زبان های برنامه نویسی را به عنوان زیرمجموعه ای از زبان های کامپیوتری توصیف می کند.[3] به طور مشابه، زبانهایی که در محاسبات استفاده میشوند و هدفی متفاوت از بیان برنامههای رایانهای دارند، معمولاً زبانهای رایانهای هستند. به عنوان برنامه نویسی بلوکی مثال، زبانهای نشانهگذاری گاهی اوقات به عنوان زبانهای کامپیوتری نامیده میشوند تا تاکید شود که آنها برای برنامهنویسی استفاده نمیشوند.[4] یکی از راههای طبقهبندی زبانهای کامپیوتری، محاسباتی است که میتوانند بیان کنند، همانطور که در نظریه محاسبات توضیح داده شده است. اکثر زبان های برنامه نویسی عملی تورینگ کامل هستند [5] و تمامی زبان های کامل تورینگ می توانند مجموعه ای از الگوریتم ها را پیاده سازی کنند. ANSI/ISO SQL-92 و Charity نمونههایی از زبانهایی هستند که تورینگ کامل نیستند، اما اغلب زبانهای برنامهنویسی نامیده میشوند.[6][7] با این حال، برخی از نویسندگان اصطلاح "زبان برنامه نویسی" را به زبان های کامل تورینگ محدود می کنند.[1][8]
کاربرد دیگر زبان های برنامه نویسی را به عنوان سازه های آموزش برنامه نویسی کودکان و نوجوانان نظری برای برنامه نویسی ماشین های انتزاعی و زبان های کامپیوتری را به عنوان زیرمجموعه ای برنامه نویسی بلوکی از آنها می داند که بر روی رایانه های فیزیکی که دارای منابع سخت افزاری محدودی هستند اجرا می شود.[9] جان سی. رینولدز تاکید می کند که زبان های مشخصات رسمی به همان اندازه زبان های برنامه نویسی هستند که برای اجرا در نظر گرفته شده اند. او همچنین استدلال میکند که فرمتهای ورودی متنی و حتی گرافیکی که بر رفتار کامپیوتر تأثیر میگذارند، زبانهای برنامهنویسی هستند، علیرغم این واقعیت که معمولاً تورینگ کامل نیستند، و اظهار میکند که نادیده گرفتن مفاهیم زبان برنامهنویسی دلیل بسیاری از نقصها در قالبهای ورودی است. [10]
دامنه و هدف
در بیشتر زمینه های عملی، یک زبان برنامه نویسی شامل برنامه نویسی بلوکی یک کامپیوتر است. در نتیجه زبان های برنامه نویسی معمولاً به این صورت تعریف و مطالعه می شوند.[11] زبانهای برنامهنویسی با زبانهای طبیعی تفاوت دارند زیرا زبانهای طبیعی فقط برای تعامل بین افراد استفاده میشوند، در حالی که زبانهای برنامهنویسی به انسان اجازه میدهند تا دستورالعملها را به ماشینها منتقل کنند.
دامنه زبان نیز قابل تامل است. زبانهای نشانهگذاری مانند XML، HTML یا troff که دادههای ساختاریافته را تعریف میکنند، معمولاً زبان برنامهنویسی در نظر گرفته نمیشوند.[12][13][14] با این حال، اگر یک معناشناسی محاسباتی تعریف شده باشد، زبان های برنامه نویسی ممکن است نحو را با زبان های نشانه گذاری به اشتراک بگذارند. برای مثال، XSLT یک زبان کامل تورینگ است که به طور کامل از نحو XML استفاده می کند.[15][16][17] علاوه بر این، LaTeX، که بیشتر برای ساختار اسناد استفاده می شود، همچنین شامل یک زیر مجموعه کامل تورینگ است.[18][19]
انتزاعات
زبان های برنامه نویسی معمولاً حاوی انتزاعی ب برنامه نویسی بلوکی رای تعریف و دستکاری ساختارهای داده یا کنترل جریان اجرا هستند. ضرورت عملی اینکه یک زبان برنامه نویسی از انتزاعات کافی پشتیبانی می کند، با اصل انتزاع بیان می شود.[20] گاهی اوقات این اصل به عنوان توصیه ای به برنامه نویس برای استفاد Block programming ه مناسب از چنین انتزاعاتی فرموله می شود.[21]