موضوع مقاله: زبان‌های برنامه‌نویسی محرمانه | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # زبان‌های برنامه‌نویسی محرمانه | مقدمه: زبان های برنامه‌نویسی محرمانه زبان های برنامه‌نویسی هستند که برای تست کردن محدودیت‌های طراحی دیگر زبان‌های برنامه‌نویسی طراحی شده‌اند. | ## بخش 1: زبان‌های برنامه‌نویسی محرمانه | کلمه محرمانه این زبان‌ها را از دیگر زبان‌های برنامه‌نویسی که برای نوشتن نرم‌افزار استفاده می‌شوند، متمایز می‌کند. معمولاً نویسنده‌های برنامه‌های محرمانه خیال ندارند جریان برنامه‌نویسی را منحرف کنند به جز در مواردی خاص مانند الگوهای visuospatial که برای این منظور در نظر گرفته شده‌اند. این زبان‌ها مورد علاقه هکرها و افرادی است که می‌خواهند جریان داده را به هم بزنند. مورد استفاده بودن از اهداف طراحان زبان‌های محرمانه نیست بلکه معمولاً هدف آن‌ها حذف یا جایگزینی اَشکال قراردادی در زبان است که هنوز زبان را تورینگ کامل نگاه می‌دارد. این زبان از قسمت‌هایی از زبان‌های برنامه‌نویسی تقلید می‌کند مانند زبان‌های فورترن، کوبول و زبان اسمبلی که از قسمت‌هایی از آن تقلید شده‌است. احیاگران زبان در ۱۹۹۰ در جریان ساخت سیستم عامل یونیکس به وسیله زبان سی از یک زبان محرمانه استفاده کردند. کدگذاری حالات یک متد برای کدگذاری برنامه است که هر زیر رشته از کد یک دستورالعمل از هر دو: محل دستور بعدی در لیست و اعمال کردن آن جریان داده‌های برنامه است. در اینجا نمونه‌ای بر مبنای (reMorse یا Thrat) است: یک عملوند در لیست را انتخاب کن آن را اجرا کن مدل زبان مدل زبان می‌تواند این‌گونه دسته‌بندی شود و این دسته‌بندی‌ها می‌توانند یک یادگیری عمومی از راه‌هایی که یک زبان خاص کار می‌کند در اختیار بگذارد. | ## بخش 2: زبان‌های برنامه‌نویسی محرمانه | این شامل زبان‌های مستبدانه/اجباری می‌شود (مانند brainfuck) که دستورها اینگونه توضیح داده می‌شوند که چگونه می‌توانند داده‌ها را تغییر دهند. زبان‌های تابعی مانند unlamda که داده‌ها و کدها کمتر قابل تغییر و تعویض هستند و اجرا با اجرای توابع که توابع دیگر را نتیجه می‌دهند ادامه پیدا می‌کند و زبان‌های بازنویسی مانند thue که تابع‌های انتقالی در وضعیت مقدار دهی اولیه به کار می‌روند. زبان‌های غیرقطعی برای زبان‌های قطعی اگر وضعیتی داده شده در برنامه وضعیت بعدی قابل پیش‌بینی است. انجمن اینترنت یک انجمن کوچک اما پر رونق از برنامه نویسان و طراحان زبان‌های محرمانه در اینترنت موجود است. این انجمن گاه‌وبیگاه فعال می‌شود و گفتگوهای آن‌ها مربوط به مباحث تورینگ کامل بودن زبان‌ها و میزان سختی دیداری کردن مفاهیم ریاضی در زبان‌های برنامه‌نویسی است. کامل بودن تورینگ از جمله مباحثی است که طرفداران زیادی دارد و دیگر موضوع مورد علاقه نوشتن کدهای بدون ابهام است. مثال‌ها در زیر نمونه‌هایی از زبان‌های برنامه‌نویسی محرمانه آورده شده‌است: Befunge زبان Befunge و هم خانواده‌های آن به اشاره گر کد اجازه می‌دهند که در جاهای مختلف کد قرار داشته باشند. برای نمونه این برنامه یک برنامه hello world است با قرار دادن برعکس کاراکترها در پشته بعد چاپ آن‌ها به وسیله چاپ ساعت گرد با این کدها [>], [:],و، [_], [,], d [^]. | ## بخش 3: زبان‌های برنامه‌نویسی محرمانه | برنامه‌ها شامل عنوان و مقادیر دادها و لیستی از دستورها پشته‌های پیاده‌سازی شده‌است. کامپایل شدن به وسیله یک اشاره گر که در اطراف تصویر حرکت می‌کند برای یک دامنه رنگی ادامه دار تا رنگ بعدی انجام می‌شود. ۱۸ تا از آن‌ها رنگ‌های رنگی هستند که به صورت ۶ رنگ و ۳ طیف روشنایی مختلف مرتب شده‌اند؛ و رنگ سیاه و سفید مرتب نشده‌اند. زمانی که یک رنگ رنگی موجود است و یک رنگ دیگر وارد می‌شود پروسه انجام شده توسط تعداد سطوح رنگ و روشنایی که تغییر کرده‌اند مشخص می‌شود. سیاه نمی‌تواند وارد شود؛ زمانی که اشاره گر سعی می‌کند که به یک ناحیه سیاه وارد شود قوانین انتخاب بلوک بعدی تغییر می‌کند. بقیه به وسیله دستورهای ورودی خروجی و به وسیله دستوراهایی که اشاره گر کامپایل در حرکتش مشخص می‌کند مشخص می‌شود. | ## جمع‌بندی | این برخلاف خیلی از زبان‌های برنامه‌نویسی است که تفاوتی بین کاراکترهای فضای خالی نمی‌گذاراند.