moaminsharifi/fa-wiki-spell-checker huggingface dataset:
این زبان اساساً از یک سری قاعده تشکیل شده‌است که می‌تواند به موفقیت یا شکست منجر شود. این قواعد خود متشکل از جایگزین‌هایی هستند که توالی فراخوانی قواعد دیگر است. در صورتی که هر یک از آن جایگزین‌ها موفق شود، قاعده موفق می‌شود. به خاطر این که هر اجرای قاعده مطابق است با ارزیابی موفقیت یا عدم موفقیت آن، به هر اجرا یک ارزیابی می‌گویند. هر قاعده زمانی که ارزیابی می‌شود می‌تواند روی داده‌هایی که نوعشان مشخص‌نشده است عمل انجام دهد. در شرایط ایده‌آل نتیجهٔ این عمل تا وقتی که آن قاعده موفق ارزیابی نشود اعمال نمی‌شود. زمانی که داده‌ها به‌طور ایستا بررسی می‌شوند، این مشکل وجود دارد که حتی اگر قاعده‌ای موفق باشد، ممکن است قاعده‌ای که آن را فراخوانی کرده موفق نبوده باشد. این مشکل در بررسی پویای داده‌ها که از پشته استفاده می‌کند پیش نمی‌آید. در زبان CDL2 برای رفع این مشکل می‌توان به ناقض‌های احتمالی علامت مناسب را زد.
این زبان عملگرهایی را برای ساختن حلقه‌های ارزیابی بدون بازگشت فراهم می‌کند. همچنین میانبرهایی را برای بالا بردن کارایی ارزیابی بازگشتی فراهم می‌کند.
قطعه‌ای کد از دستورالعمل CDL2 برای شهود به ساختار این زبان در زیر آمده‌است. شایان ذکر است که این قطعه برنامه برنامهٔ کاملی نیست. عملگرهای ابتدایی به زبان جاوا(یا سی) نوشته شده اند و لازم است اعضای آرایه تعریف شوند.
ACTION quicksort +>from +>to -p -q:
ACTION split +>i +>j + p> + q> -m:
FUNCTION move up +>j +>p> +>m:
FUNCTION move down +>i +>q> +>m:
TEST less+>a+>b:=a"<"b.
FUNCTION make+a>+>b:=a"="b.
FUNCTION add+>a+>b+sum>:=sum"="a"+"b.
FUNCTION halve+>a>:=a"/=2".
FUNCTION incr+>a>:=a"++".
FUNCTION decr+>a>:=a"--".
TEST smaller item+>i+>j:="items["i"]<items["j"]".
ACTION swap items+>i+>j-t:=t"=items["i"];items["i"]=items["j"];items["j"]="t.
زبان توصیف کامپایلر هم برای طراحی کامپایلرها و هم مقاصد دیگر استفاده شده‌است.
کامپایلری برای زبان کوبول روی رایانه‌های شخصی و سیستم MProlog با زبان CDL2 نوشته شده‌اند. سیستم MProlog پیاده‌سازی‌ای صنعتی از زبان برنامه‌نویسی منطقی پرولوگ است که بر روی معماری‌های عظیم مانند رایانهٔ بزرگ آی‌بی‌ام و اینتل اجرا می‌شد.
علاوه بر این‌ها یک نرم‌افزار رابط کاربری گرافیکی تجاری هم به زبان CDL نوشته و نگه‌داری شده. این برنامه یک برنامهٔ گرفتن تصویرهای دندان بوده و مالکیت آن اکنون با  DEXIS  است. یک نرم‌افزار مدیریت مطب دندانپزشکی و برنامهٔ Mephisto که یک رایانهٔ شطرنج‌باز است نیز با CDL نوشته شده‌است.
مورچهٔ لنگتون گونه‌ای خاص از ترمایت (نوعی ماشین محاسبهٔ تورینگ دو بعدی) است که در سال ۱۹۸۶ توسط کریس لنگتون ابداع شده‌است، همچنین می‌توان مورچهٔ لنگتون را اتوماتون سلولی با همسایگی فون نویمان دانست. این ماشین همانند بسیاری از دیگر نمونه‌های اتوماتای سلولی مصداقی از یک سیستم پیچیده با قواعد ساده است که بر حسب قواعد می‌تواند رفتاری پیچیده، تصادفی یا ساده داشته باشد. در سال ۲۰۰۰ با اثبات امکان شبیه‌سازی هر مدار دیجیتال دلخواه با مورچهٔ لنگتون، ماشین محاسبهٔ تورینگ بودن این ماشین اثباتGajardo, Anahi, Andre Moreira, and Eric Goles. "Complexity of Langton's ant." "Discrete Applied Mathematics" 117.1 (2002): 41-50. شد. افراد مختلفی ایدهٔ مورچهٔ لنگتون را در جهات مختلف گسترش داده‌اند، برای مثال ترمایت‌هاhttp://mathworld.wolfram.com/Turmite.html با الگو گرفتن از مورچهٔ لنگتون ابداع شده‌اند که خود گونه‌ای از ماشین محاسبهٔ تورینگ هستند.
مورچهٔ لنگتون از یک صفحهٔ شطرنجی دو بعدی نامتنهاهی تشکیل شده‌است که یک مورچه بر روی آن در چهار جهت اصلی حرکت می‌کند. مورچه بر یکی از این خانه‌های صفحه قرار دارد. در هر نوبت، مورچه با توجه به رنگ خانه‌ای که بر روی آن قرار دارد رنگ آن خانه را به رنگ دیگری تغییر می‌دهد و جهت حرکتش را تغییر می‌دهد و یک خانه حرکت می‌کند.http://www.complex-systems.com/pdf/14-3-4.pdf
در نمونهٔ اولیه هر خانه می‌تواند یکی از دو رنگ سفید یا سیاه را داشته باشد. مورچه در صورتی که بر خانهٔ سفید قرار داشته باشد ۹۰ درجه به راست می‌چرخد، رنگ خانه را تغییر می‌دهد و به خانهٔ بعدی می‌رود. در صورتی که مورچه بر روی خانهٔ سیاه قرار داشته باشد ۹۰ درجه به چپ می‌چرخد، رنگ خانه را تغییر می‌دهد و به خانهٔ بعدی می‌رود.
می‌توان با گسترش مجموعهٔ رنگ‌ها، یا تغییر دادن قاعدهٔ حرکت مورچه نمونه‌های متعددی از مورچهٔ لنگتون را به دست آورد که هرکدام رفتاری متفاوت با دیگری دارند. در واقع می‌توان صفحهٔ دو بعدی را مشابه نوار حافظهٔ ماشین تورینگ، محل مورچه را سر ماشین تورینگ و قاعدهٔ حرکت مورچه را قاعدهٔ حرکت سر ماشین تورینگ در نظر گرفت. همچنین می‌توان مورچهٔ لنگتون را یک ماشین سلولی در نظر گرفت که در آن، صفحهٔ شطرنجی صفحهٔ ماشین است و به ازای n رنگ در مورچهٔ لنگتون در ماشین سلولی ۵n رنگ وجود دارد. هر خانهٔ خالی در صفحهٔ مورچهٔ یکی از n رنگ را دارد و برای خانهٔ مورچه دار، یکی از 4n رنگ دیگر را انتخاب می‌کنیم که نشان‌دهندهٔ رنگ خانه در مورچهٔ لنگتون، حضور مورچه در آن و جهت‌گیری مورچه است. قوانین تغییر ماشین هم همسایگی فون نویمان هر خانه را در نظر می‌گیرد و آن خانه و همسایگی آن را مشابه قوانین مورچهٔ لنگتون تغییر می‌دهد.
در صورتی که مورچه در نمونهٔ اولیه بر صفحه‌ای سفید حرکت خود را شروع کند، ابتدا طرح‌هایی ساده و عموماً متقارن تولید می‌کند، سپس در صفحه الگوهایی پیچیده تصویر می‌کند و در نهایت شروع به ساختن بزرگراه می‌کند که تکرار مداوم ۱۰۴ حرکت مورچه است و در صفحه ساختاری مشابه نوار به وجود می‌آورد.
اثبات می‌شود که در صورتی که شرایط اولیهٔ صفحهٔ مورچهٔ لنگتون متناهی باشد، رفتار مورچه در نهایت به ساخت بزرگراه منتهی می‌شود.
مورچهٔ لنگتون مثالی از یک سیستم پیچیده‌است که قوانینی بسیار ساده دارد و کریس لنگتون به منظور نشان دادن همین مفهوم (امکان بروز رفتار ظهوریافتهٔ پیچیده، حتی در ساده‌ترین ساختارها) ماشین لنگتون را ابداع کرد. انواع مختلف مورچهٔ لنگتون رفتارهای مختلفی از خود نشان می‌دهند که پیچیده، ساده یا تصادفی است. تفاوت این ماشین‌ها در قواعد حرکت مورچه و شرایط اولیهٔ صفحه است.
مورچهٔ لنگتون یک ماشین محاسبه تورینگ است، این مسئله به آن معنی است که رفتار هر ماشین تورینگی را به ازای ورودی مشخص می‌توان با یک ماشین لنگتون شبیه‌سازی کرد. همان‌طور که پیش‌تر ذکر شد، در صورتی که شرایط اولیهٔ صفحهٔ مورچهٔ لنگتون متناهی باشد، رفتار مورچه در نهایت به ساخت بزرگراه منتهی می‌شود. پس رفتار نهایی هر مورچهٔ لنگتون با صفحهٔ اولیهٔ قابل پیش‌بینی است که عبارت است از تکرار کردن یک پترن ۱۰۴ حرکتی مداوم که به اسم بزرگراه شناخته می‌شود. از طرفی اما می‌دانیم که مسئلهٔ رفتار نهایی ماشین تورینگ یا مسئله توقف تصمیم‌ناپذیر است. تصمیم‌ناپذیری این مسئله به آن معنی است که نمی‌توان ماشینی داشت که به ازای هر ماشین تورینگ و هر ورودی w تعیین کند ماشین تورینگ داده‌شده بر روی ورودی w توقف خواهد کرد یا نه.
با توجه به آنچه که گفته شد، ممکن است به نظر برسد که می‌توان مسئله توقف را به مسألهٔ رفتار نهایی مورچهٔ لنگتون کاهش داد و این مسئله تصمیم پذیر است؛ اما این تصور غلط است، چرا که هر ماشین تورینگی به مورچهٔ لنگتونی با شرایط اولیهٔ متناهی کاهش داده نمی‌شود و مسألهٔ تعیین رفتار نهایی مورچهٔ لنگتون در شرایط کلی مسئله‌ای تصمیم ناپذیر است.
می‌توان برای مورچهٔ لنگتون در فضای سه‌بعدی نیز تعریفی مشابه فضای دو بعدی ارائه داد با این تفاوت که به جای صفحه، فضای سه بعدی محل حرکت مورچه است و مورچه در هر گام به بالا، پایین، چپ یا راست خود حرکت می‌کند. با این تعریف، مورچهٔ لنگتون در فضای سه بعدی نیز رفتاری مشابه با فضای دو بعدی دارد و در بسیاری از اوقات در نهایت شروع به ساختن بزرگراه می‌کند که حرکتی تناوبی با دورهٔ تناوب ۱۰۴ گام است. همچنین می‌توان برای فضاهای n بعدی نیز تعریفی مشابه برای مورچهٔ لنگتون ارائه داد.
می‌توان انواع مختلفی از مورچهٔ لنگتون را با تغییر دادن شرایط اولیهٔ صفحه و تعداد رنگ‌ها به وجود آورد. منطق پشت حرکت مورچه را می‌توان با رشته‌ای از R و L نمایش داد که مشخص می‌کند به ازای هر رنگ مورچه به کدام سمت حرکت می‌کند. با این شیوه مورچهٔ لنگتون اولیه را می‌توان با RL نمایش داد. برخی از این مورچه‌ها در گذر زمان ساختاری متقارن می‌سازند، برای مثال مورچه‌هایی که در قاعدهٔ خود LL یا RR داشته باشند ساختارهای متقارنی را به وجود خواهند آورد. تصاویر زیر چند نمونه از رفتار این‌گونه مورچه‌هاست.می‌توان به مورچهٔ لنگتون چند وضعیت متفاوت اضافه کرد و گونه‌ای از ترمایت‌ها را تولید کرد. رفتار چند ترمایت از این دست در اشکال زیر قابل مشاهده است.
گونهٔ دیگری از مورچهٔ لنگتون با قرار دادن چندین مورچه بر روی صفحه ساخته می‌شود. این مورچه‌ها می‌توانند از قواعد یکسان یا متفاوتی پیروی کنند که در صورتی که قواعد حرکت مورچه‌ها با یکدیگر متفاوت باشد باید از شرایطی که دو مورچه بر یک خانه قرار دارند با تعیین سرنوشت رنگ خانه رفع ابهام کرد.
با افزایش تعداد رنگ‌ها می‌توان نمونه‌هایی مشابه تصویر مقابل به دست آورد:
همچنین به جای صفحه، می‌توان فضایی n بعدی در نظر گرفت که خانه‌های همسایه در آن خانه‌هایی هستند که تنها یک درایهٔ آن‌ها به خانهٔ اولیه متفاوت است. در فضای سه بعدی نیز مورچه‌ها برای شرایط اولیهٔ متنهای در نهایت شروع به ساختن بزرگراه‌های با دوره تناوب ۱۰۴ قدم می‌کنند.
تأثیرات رنگ‌ها بر حالات مختلف روحی و روانی انسان از دو طریق امکان‌پذیر می‌باشد. تأثیر اولیه رنگ به دریافت احساسی رنگ (فامداری) مربوط می‌شود که از طیف نور مرئی رنگ ناشی شده و از آن به احساس ذهنی تعبیر شده‌است. به عنوان نمونه فشار ملایم بر پلک‌ها و قرارگیری انسان تحت شوک الکتریکی در یک محیط تاریک احساس رنگ را برای انسان ایجاد می‌نماید که این احساس اثر مرئی، از خارج چشم نیست. دلیل این امر تحریک سلسله اعصاب شبکیه توسط الکتریسیته یا فشار ملایم می‌باشد. تأثیر دیگر رنگ‌ها اثرات ذهنی رنگ‌های عینی می‌باشد و احساس‌های معینی را شامل می‌گردد که رنگ‌ها در بیننده ایجاد می‌نماید. در این شکل از تأثیر فامها به دو دسته پیش آینده و پس رونده تقسیم‌بندی می‌گردند که به ترتیب نزدیک بودن و دور بودن اشیا را در ذهن تداعی می‌نماید. بر همین اساس فام‌های دارای طول موج بلندتر (مثل قرمز و نارنجی) گرمتر از فام‌های طول موج کوتاه تر (مثل آبی و سبز) احساس می‌شوند. احساس گرمی و سردی، پیش آیندگی و پس روندگی در واقع اثرات ذهنی رنگ‌های عینی هستند که از جنبه روان‌شناسی رنگ نه از جنبه فیزیولوژیک رنگ، مورد بحث قرار می‌گیرد. (Erdogan، 2008: 2129-2139)Erdogan, kose, (2008) Modeling of color perception of different age groups using artificial neural networks, Expert Systems with Appilications 34: 2129-2139
تأثیر رنگ‌ها علاوه بر روان و روح بر عملکرد و فیزیولوژیک انسان نیز تأثیر می‌گذارد. تأثیر رنگ بر فشار خون، میزان تنفس و زمان از نمونه این تأثیرات می‌باشد. پاسخ‌های فیزیولوژیکی و بیو مکانیکی فعال و دقیق از تشعشعات خورشیدی و محیط‌های مصنوعی بر روی بدن انسان اثبات این موضوع می‌باشد. انطباق ریتم‌های هورمونی بدن با شبانه روز و تاریکی و روشنی از پاسخ‌های بدن به رنگ‌ها می‌باشد. (موعدی، 1379: 56)موعدی، محمد امین، کاربرد رنگ در ارگونومی، انتشارات حس برتر، تهران، صفحه 56، 1379.
در سال ۱۹۷۱ دکتر یوگن شورل ۱۴ در یک کلینیک در سوئیس با تحقیقاتی در زمینه رنگ درمانی تأثیر رنگ‌ها بر فشار خون، ضربان قلب، سرعت تنفس، حواس جسمانی، اثرات درد و واکنش‌های روانی مورد آزمایش قرار داد که به نتایج قابل ملاحظه ای در این زمینه دست یافت. تحقیقات مشابه دیگر از سوی فرانک گبرت بر روی دانشجویان ۲۰ تا ۴۰ ساله صورت گرفت. در این آزمایش‌ها رنگ قرمز و زرد به عنوان رنگ‌های محرک و رنگ‌ سبز آرام‌کننده بود؛ بنابراین رنگ هابا طول موج بلند محرک تر از رنگ‌ها با طول موج کوتاه هستند. (بختیاری فرد، 1388: 85-88)بختیاری فرد، حمید رضا، رنگ و ارتباطات، انتشارات فخراکیا، تهران، صفحه 85-88، 1388.
نکته حائز توجه به این رنگ‌ها در ارتباط با طبیعت، فرهنگ، باورهای دینی و تجربه‌های زندگی، هر یک معنایی ویژه به خود اختصاص می‌دهند. این ادراک رنگ در میان ملل و اقوام گاه متفاوت و گاه مشابه است. اما به هر حال تابع موقعیت‌های زمانی، مکانی و جغرافیایی بوده یا از فرهنگ، دین و آیین مردم نشات گرفته‌است. از سوی دیگر مفاهیمی که زمانی توسط افرادی برای رنگ‌ها برگزیده شده، در همان دوره اعتبار داشته‌است. (باخزری، 1345: 34-37)باخزری، ابوالمفاخر یحیی، اورادالاحباب و فصوص الآداب، جلد دوم، به کوشش ایرج افشار، انتشارات دانشگاه تهران، ص 34-37، 1345
در یک دسته‌بندی کلی رنگ‌ها به دو دسته رنگ‌های اصلی شامل زرد، آبی، قرمز و رنگ‌های فرعی نظیر سبز، بنفش، نارنجی، زرد مایل به سبز، سبز مایل به آبی، آبی مایل به سبز، بنفش مایل به قرمز و… که از ترکیب رنگ‌های دیگر به وجود می‌آیند تقسیم‌بندی شده‌است. (لوشر، 1379: 264).لوشر، ماکس، روانشناسی رنگ‌ها، ترجمه لیلا مهردادپی، انتشارات حسام، صفحه 264، 1379.
بر این اساس هر رنگ ویژگی‌های منحصر به فردی را در طبیعت دارا بوده و بنا به این ویژگی‌ها استفاده از هر رنگ در معماری و محیط شهری جایگاه ویژه ای را به خود اختصاص داده‌است (ولان، 1387: 194).ولان، برید ام، تینا ساتن، هارمونی رنگ، ترجمه مریم مدنی، انتشارات مارلیک، صفحه 194، 1387
نمایش میانی داده‌ساختار یا کدی است که کامپایلر یا ماشین مجازی کد منبع را پس از پردازش به آن تبدیل می‌کند و در نهایت به کد زبان مقصد که عموماً زبان اسمبلی است تبدیل می‌شود. می‌توان از نمایش میانی استفاده نکرد و کد کاربر را مستقیماً به نمایش مقصد تبدیل کرد اما از نمایش میانی برای ساده کردن برخی از تغییرات در کد، مانند ترجمه به زبان سطح پایین‌تر و بهینه‌سازی، استفاده می‌شود. نمایش میانی باید بتواند بدون از دست دادن اطلاعات کد مبدأ را توصیف کند و بتواند به راحتی به کد زبان مقصد تبدیل شود.
از آن جایی که نمایش میانی نمایش درونی کامپایلر است، تقریباً هیچ‌گاه کاربر برنامه‌ساز با آن ارتباطی ندارد (مگر در موارد خاص بهینه‌سازی)، پس نیازی نیست که نمایش میانی از ساخت‌های پیچیده که برنامه‌نویسی را برای کاربر برنامه‌ساز آسان می‌کنند بهره‌ای ببرد.https://queue.acm.org/detail.cfm?id=2544374 این ساده‌سازی راه را برای بهینه‌سازی بهتر کد توسط کامپایلر باز می‌کند.
عملیات یک کامپایلر به دو بخش کلی عقب و جلو تقسیم می‌شود. در بخش جلو پس از پردازش کد کاربر، کد به نمایش میانی برده می‌شود و در بخش عقب کد از نمایش میانی به نمایش مقصد برده می‌شود. در صورتی که ویژگی‌های نمایش میانی مستقل از زبان منبع باشد، می‌توان از بخش عقب مشترکی برای کامپایلرهای مختلف استفاده کرد؛ بنابراین نمایش میانی خوب نمایش میانی‌ای است که مستقل از هر ویژگی نمایش مبدأ یا مقصد باشد؛ بنابراین اگر نیاز داشته باشیم کد n زبان متفاوت را به کد m زبان متفاوت ترجمه کنیم، بدون داشتن IR مناسب به mn کامپایلر نیاز داریم اما در صورت داشتن IR مناسب این امر با داشتن n بخش جلو و m بخش عقب قابل حل است.http://www.cs.princeton.edu/courses/archive/spr03/cs320/notes/IR-trans1.pdf
نمایش میانی می‌تواند اشکال متفاوتی داشته باشد، اعم از داده‌ساختار موجود در رم یا کدی به زبان ماشینی مجازی که به مورد دوم زبان میانی نیز گفته می‌شود.http://cs.lmu.edu/~ray/notes/ir/
وظیفهٔ ترجمهٔ زبان‌های متفاوت به یکدیگر وظیفه‌ای پیچیده‌است که با شکسته شدن به دو بخش ساده‌تر می‌شود و می‌تواند بهتر صورت پذیرد. این شکستن با اضافه شدن نمایش میانی به فرایند ترجمه و تبدیل ترجمه به دو مرحلهٔ ترجمه از زبان منبع به زبان میانی و ترجمه از زبان میانی به زبان مقصد صورت می‌پذیرد.
زبان میانی مناسب سطح معنایی‌ای نزدیک به اسمبلی دارد و باید بتواند با حفظ معنا در مسیر تبدیل کد زبان منبع به کد زبان مقصد (که عموماً کد اسمبلی است) قرار بگیرد. نمایش میانی‌ای که به درستی این خاصیت را داشته باشد می‌تواند به پودمانی کامپایلر کمک کند. در چنین شرایطی کامپایلر به دو بخش کلی عقب و جلو تقسیم می‌شود که کارشان از یکدیگر مجزا است. به واسطهٔ این جدایی در کامپایلر می‌توان علاوه بر بهره بردن از طراحی ساده‌تر و قابل نگه‌داری‌تر، از یک کد چند بار استفاده کرد و به این صورت هزینهٔ توسعهٔ کامپایلرها را کاهش داد. بخش جلو، که وظیفهٔ ترجمهٔ دقیق حافظ معنا از زبان مبدأ به نمایش میانی را بر عهده دارد، تنها به زبان منبع وابسته است و کاملاً از بخش عقب که وظیفهٔ ترجمه دقیق از نمایش میانی به زبان مقصد را برعهده دارد و به زبان مقصد وابسته است جداست؛ بنابراین می‌تواند برای زبان‌های مبدأ و مقصد متفاوت به صورت مجزا بخش‌های عقب و جلو را طراحی کرد و در نهایت به یکدیگر متصلشان کرد. از آنجایی که زبان مقصد عموماً زبان ماشین است، عموماً بخش عقب به زبان ماشین وابسته است.
با طراحی بخش‌های عقب متفاوت برای هر ماشین می‌توان زبان مبدأ را به صورت مجزا از طراحی داخلی ماشین بر روی ماشین‌های مختلف اجرا کرد و برای زبان‌های برنامه‌نویسی جدید تنها کافی است که با طراحی بخش جلو زبان مبدأ به نمایش میانی تبدیل شود و مابقی مسیر با بخش‌های عقبی که پیش از این وجود داشته‌است طی خواهد شد.
دوری نمایش میانی از زبان مبدأ و سادگی ذاتی آن زمینه را برای بهینه‌سازی کد فراهم می‌کند که نمایش میانی را به یکی از مهمترین پیش‌نیازهای بهینه‌سازی مناسب تبدیل می‌کند. با گسترش استفاده از یک نمایش میانی و استاندارد شدن آن زمینه برای بهبود پردازشگران شرکت‌های مختلف در سایهٔ این دانش فراهم می‌شود. نمایش میانی استاندارد می‌تواند به حل مشکل سازگاری نرم‌افزارها کمک کند. همچنین نمایش میانی استاندارد می‌تواند به بهبود روش‌های بهینه‌سازی کد با متمرکز کردن گروه‌های مختلف بر یک مسئلهٔ بهینه‌سازی بینجامد.
در حل مسائل توزیع شده نیز نمایش میانی به عنوان کدی مجزا از پلتفرم می‌تواند مورد استفاده قرار بگیرد و بر روی تمامی کامپیوترهای مجموعه اجرا شود.
در گونه‌های متفاوت کامپایلرها نمایش‌میانی چهره‌های متفاوتی به خود می‌گیرد. در صورتی که بخش عقب به عنوان یک زیربرنامه توسط بخش جلو صدا زده بشود، احتمالاً نمایش میانی یک درخت تجزیهٔ علامت‌گذاری شده به همراه جدول مربوطه خواهد بود؛ اما در صورتی که بخش عقب برنامه‌ای مجزا از بخش جلو باشد، احتمالاً نمایش میانی زبان ماشینی مجازی است و به آن زبان میانی گفته می‌شود. به دلیل جدایی بیشتر و بیشتر میان بخش عقب و بخش جلو، به مرور زمان عمدهٔ نمایش‌های میانی به صورت زبان میانی درآمده‌اند.https://en.wikibooks.org/wiki/Compiler_Construction/Intermediate_Representation
نمایش میانی انواع مختلفی دارد که به دو دستهٔ کلی داده ساختارها و زبان میانی تقسیم می‌شوند. داده‌ساختارها عموماً به صورت گراف یا درخت به همراه توضیحات مربوطه که در جدول قرار دارند هستند. گراف معنا و گراف کنترل جریان از این دسته به‌شمار می‌آیند. زبان میانی نیز زبان یک ماشین فرضی است که عمدتاً به صورت پشته‌ای یا سه‌آدرسه است.
نمایش میانی می‌تواند سطوح مختلفی داشته باشد. در مثال زیر سه نمایش میانی در سه سطح متفاوت برای یک قطعه کد نمایش داده شده‌اند.
قطعات کد به ترتیب نشانگر سطح بالا، سطح میانی و سطح پایین هستند.
(COPY, 0, i) i := 0
(LABEL, L1) L1:
(JGE, i, n, L2) if i>= n goto L2
(INDEX, a, i, t0) t0 := a[i]
(ADD, j, 2, t1) t1 := j + 2
(INDEX, t0, t1, t2) t2 := t0[t1]
(COPY_TO_DEREF, j, t2) *t2 := j
(INCJUMP, i, di, L1) i += di, goto L1
(LABEL, L2) L2:
http://cs.lmu.edu/~ray/notes/ir/
در سطح بالا ساختار زبان منبع به صورت صریح حفظ می‌شود، برنامهٔ منبع قابل بازسازی است، عملوندها اشیاء معنادار هستند، آرایه‌ها و محاسبات ساده نمی‌شوند، ثباتی در کار نیست و به زمان اجرای ماشین توجهی نمی‌شود.
(MUL, i, 80, t0) t0 := i * 80
(ADD, a, t0, t1) t1 := a + t0
(ADD, j, 2, t2) t2 := j + 2
(MUL, t2, 8, t3) t3 := t2 * 8
(ADD, t1, t3, t4) t4 := t1 + t3
(COPY_TO_DEREF, j, t4) *t4 := j
(ADD, i, di, i) i := i + di
(JUMP, L1) goto L1
در سطح میانی نمایش از زبان و ماشین مستقل است، داده به اعداد صحیح و ممیز شناور فروکاسته می‌شود و بهینه‌سازی مستقل از معماری ماشین صورت می‌پذیرد.
(LDC, 0, r0) r0 := 0
(LOAD, j, r1) r1 := j
(LOAD, n, r2) r2 := n
(LOAD, di, r3) r3 := di
(LOAD, a, r4) r4 := a
(JGE, r0, r2, L2) if r0>= r2 goto L2
(MUL, r0, 80, r5) r5 := r0 * 80
(ADD, r4, r5, r6) r6 := r4 + r5
(ADD, r1, 2, r7) r7 := r1 + 2
(MUL, r7, 8, r8) r8 := r7 * 8
(ADD, r6, r8, r9) r9 := r6 + r8
(TOFLOAT, r1, f0) f0 := tofloat r1
(STOREIND, f0, r9) *r9 := f0
(ADD, r0, r3, r0) r0 := r0 + r3
در سطح پایین نمایش میانی به معماری ماشین نزدیک است و به معماری وابسته است، تفاوت اندکی با زبان مقصد دارد، درگیر مسائل زمان اجرا مانند مدیریت حافظه است و بهینه‌سازی وابسته به معماری انجام می‌دهد.
اتوماتای سلولی زندگی-گونه(انگلیسی:Life-like cellular automaton) به نوعی از اتوماتای سلولی می‌گویند که بسیار شبیه بازی زندگی کانویhttp://conwaylife.com است، این نوع از اتوماتا معمولاً در فضای دکارتی دوبعدی بیان می‌شود و هر بعد از دو طرف تا بی‌نهایت ادامه دارد. به هر خانه از این فضا یک سلول گفته می‌شود.
در این نوع اتوماتا هر خانه دو حالت زنده یا مرده دارد و وضعیت هر خانه در هر مرحله از وضعیت همسایه‌هایش و خودش در مرحله قبل به صورت یکتا تعیین می‌شود.
قاعده همسایگی برای یک خانه مطابق قانون همسایگی مور تشخیص داده می‌شود که در این قاعده هر دو خانه که در حداقل یک نقطه اشتراک دارند با هم همسایه هستند، پس هر خانه در این نوع اتوماتا با ۸ خانه دیگر همسایه است.
قاعده اتوماتای سلولی زندگی-گونه با استفاده از دو رشته تعیین می‌شود، قاعده برای همه خانه‌ها یکسان است و با توجه به این دو رشته مشخص می‌شود در مرحله بعد سلول وضعیتش چگونه تغییر می‌کند.
دو رشته به این صورت مشخص می‌شوند که رشته اول مربوط به سلول‌های زنده است، این رشته مشخص می‌کند در چه صورتی سول در مرحله بعد زنده می‌ماند و اگر هیچ‌کدام از شرایط رشته درست نباشد در مرحله بعد سلول می‌میرد. رشته دوم مشخص می‌کند برای یک سلول مرده در مرحله بعد تحت چه شرایطی سلول زنده می‌شود و اگر هیچ‌کدام از شرایط این رشته درست نباشد سلول در مرحله بعد نیز مرده باقی می‌ماند.
هر رشته به صورت یک دنباله از اعداد ۱ تا ۸ است که مشخص می‌کند چه تعداد از همسایه‌های زنده در این قاعده صدق می‌کنند، رقم‌هایی که در دنباله آمده‌اند در شرط دنباله صدق می‌کنند و سایر رقم‌ها در شرط دنباله صدق نمی‌کنند. معمولاً دو رشته را به صورت x/y نشان می‌دهند که x رشته قاعده برای سلول‌های زنده است و y رشته قاعده برای سلول‌های مرده‌است. مثلاً برای بازی زندگی کانوی قاعده‌ها به صورت ۲۳/۳ است.
مدل‌های دیگری نیز برای بیان قواعد اتوماتای سلولی زندگی-گونه بیان شده‌اند، از جمله ولفرم و پکارد Reprinted in . در سال ۱۹۸۵ روش کدینگ ولفرم را پیشنهاد دادند، که در این روش از نمایش تبدیل شده باینری به دهدهی برای وضعیت زندگی یک سلول با توجه به همسایه‌هایش تعریف شده‌بود.
در نوع دیگری از بیان قواعد مطابق روش گالی که از فرمت آر ال ای استفاده می‌کرد مشابه قواعد نوع اول دو رشته داریم که ابتدای رشته نوع اول حرف 'S' می‌آید که برای مشخص کردن قاعده زنده ماندن "Survival" است و ابتدای قاعده دوم حرف 'B' می‌آید که برای نشان دادن قاعده زنده شدن "Birth" یک سلول مرده‌است.
اتوماتای سلولی زندگی-گونه را بر حسب الگوی رشدشان و منظم بودن یا نبودن به تعدادی دسته تقسیم می‌کنند:
با توجه به نوع قواعد توصیف شده می‌توان دید تعداد قواعد ممکن برای اتوماتای سلولی زندگی-گونه بسیار زیاد است. در حالت کلی وضعیت هر خانه با توجه به زنده یا مرده بودنش و با توجه به امکان‌پذیر بودن یا نبودن هر یک از اعداد ۰ تا ۸ برای وضعیت زندگی‌اش در مرحله بعد از دو رشته که هر کدام formula_1 حالت دارند پس در کل formula_2 قاعده متفاوت می‌توانیم داشته باشیم. اما تعداد اندکی از این قواعد به صورت دقیق بررسی شده‌اند و برخی از این قواعد نام‌های خاص خودشان را دارند.
معروف‌ترین این قواعد قاعده بازی زندگی کانوی است، قاعده این بازی به صورت ۲۳/۳ است و تعداد زیادی از الگوهای آن مورد بررسی قرار گرفته‌اند.. قواعد بسیار زیادی با الهام گرفتن از بازی زندگی کانوی به وجود آمده‌اند، تلاش عمده این قواعد برای ایجاد و پخش گلایدرهای منظم است.http://www.ics.uci.edu/~eppstein/ca/
چند نمونه از قواعد معروف را در این بخش می‌آوریم:
این موراد فقط چند مورد از موارد متعدد بررسی شده از اتوماتای سلولی زندگی-گونه هستند. در سایت mirekw توصیف تعداد بیشتری از این اتوماتا آمده‌است.
انواع متعددی از اتوماتای سلولی با الهام گرفتن از اتوماتای سلولی زندگی-گونه ساخته شده‌اند. در اغلب این اتوماتا تعداد همسایگی بیشتر از همسایگی مور است. در نوع دیگری از اتوماتای سلولی به جای فضای دوبعدی از فضای سه‌بعدی استفاده می‌کنند، همچنین انواعی از اتوماتای سلولی که سلول‌ها به صورت مثلث یا شش ضلعی هستند نیز طراحی شده‌اند.
سوفیک سارگسیان (؛ ؛ زاده ) یک هنرپیشه اهل ارمنستان است. وی از سال ۱۹۷۴ میلادی فعالیت می‌کند.
وی در ۸ دسامبر ۱۹۵۱ در ایروان به دنیا آمد و از فارغ‌التحصیل شد. سارگسیان بین سال‌های ۱۹۷۸–۱۹۸۰ به هنرپیشه در تئاتر نمایشی هراچیا غاپلانیان فعالیت کرده‌است. وی از سال ۱۹۹۵ در انستیتو دولتی سینما و تئاتر ایروان تدریس می‌کند.
روش ماشین حالت الگوریتمی (انگلیسی: Algorithmic state machine) یا (ASM) یک روش برای طراحی ماشین‌ها است. این ماشین برای نشان دادن نمودارهایمدارهای دیجیتال یکپارچه شده‌استفاده می‌شود. نمودار ASM، مانند نمودار حالت است اما غیررسمی تر و در نتیجه درک آن آسان‌تر است. یک نمودار ASM یک روش توصیف عملیاتی پی در پی و متوالی یک سامانه دیجیتال است.
روش ASM از مراحل زیر تشکیل شده‌است.
نمودار ASM، شامل چهار عنصر اساسی است. نام واحد، واحد، چک کردن واحد، خروجی‌های شرطی. یک ASM به صورت یک مستطیل نشان داده می‌شود که حالت‌ها از یک نمودار منظم می‌باشد. خروجی از نوع ماشین مور در درون مستطیل نشان داده شده‌است.
نام واحد: نام یک واحد در داخل دایره نشان داده شده‌است؛ و دایره در گوشه سمت چپ قرار دارد یا نام بدون دایره قرار دارد.
باکس واحد
خروجی واحد در داخل مستطیل نشان داده شده‌است.
باکس تصمیم‌گیری
یک لوزی نشان می‌دهد که شرط بیان شده مورد آزمایش قرار گرفته و مسیر خروجی به ترتیب انتخاب می-شود. شرایط بیان شامل یک یا چند ورودی به FSM می‌باشد. برای وضعیت ASM نشان داده شده توسط یک لوزی یا یک ورودی و دو خروجی است و به شرط انتقال بین دو حالت یا یک حالت و خروجی مشروط استفاده می‌شود. باکس تصمیم‌گیری حاوی شرایط بیان شده برای آزمایش بوده و این بیان شامل ورودی برای FSM می‌باشد.
باکس خروجی شرطی: باکس خروجی شرطی به شکل بیضی نشان داده می‌شود که سیگنال خروجی از نوع میلی می‌باشد. این خروجی‌ها نه تنها به واحد بلکه همچنین به ورودی‌های FSM نیز بستگی دارد.
هنگامی که عملیات مورد نظر در یک مدار با استفاده از عملیات RTL توصیف شده‌است، اجراهای مسیرداده می‌توانند مشتق شوند. هر متغیر منحصر به فرد که یک مقدار در برنامه RTL را به خود اختصاص داده‌است که می‌تواند به عنوان یک واحد ثبت شده اجرا شود، وابسته به عملیات عملکردی که هنگام اختصاص یک مقدار به یک متغیر انجام می‌شود، ثبت برای آن متغیر ممکن است به صورت ساده بوده و متغیر در آن دیده شود و یک شمارنده پیش از بلوک منطقی به صورت ترتیبی قرار بگیرد. بلوک منطقی ترتیبی با یک ثبت مرتبط است؛ و می‌تواند یک کامپایلر را از طریق تابع منطقی ترکیبی اجرا کند.
هنگامی که مسیرداده طراحی شد، نمودار ASM به یک نمودار دقیق تبدیل می‌شود. نماد RTL با سیگنال‌های تعریف شده در مسیرداده جایگزین می‌شود.
رودولف قوندیان (؛ ؛ زاده – درگذشته ۱۷ ژوئیه ۲۰۱۹) یک هنرپیشه اهل ارمنستان بود که بین سال‌های ۱۹۷۰ تا ۲۰۱۰ میلادی فعالیت می‌کرد.
وی در ۶ مارس ۱۹۵۲ در کیسلوفودسک، سرزمین استاوروپول به دنیا آمد و از فرهنگستان دولتی تئاتر سوندوکیان فارغ‌التحصیل شد. وی همچنین برندهٔ جوایزی همچون هنرمند افتخاری جمهوری ارمنستان (۲۰۱۷) شده‌است. وی پس از یک دوره طولانی بیماری در ۱۷ ژوئیهٔ ۲۰۱۹ در سن ۶۷ سالگی در بیمارستانی در بلژیک درگذشت و در همانجا به خاک سپرده شد.
از فیلم‌ها یا برنامه‌های تلویزیونی که وی در آن نقش داشته‌است می‌توان به "ناهاپت" (۱۹۷۷)، "رفیق پانجونی" (۱۹۹۳)، "خون"، اشاره کرد.
برداری‌سازی خودکار، یک روش بهینه‌سازی کامپایلر است که در آن بهینه‌سازی بر روی آرایه (ساختمان داده‌ها)‌ها صورت می‌گیرد.
این روش با موازی‌سازی عملیات بر روی آرایه‌ها باعث می‌شود که سرعت برای حلقه‌های خاصی بسیار بهبود می‌یابد.
برای مثال فرض کنید که قرار است دو بردار را با هم جمع کنید. در این حالت حلقه‌ای داریم که پارامترهای متناظر دو بردار را با هم جمع می‌کند. حال از آن‌جا که پارامترهای مختلف هر بردار بر روی هم تأثیری نمی‌گذارند می‌توان تمام این عملیات جمع کردن را با هم انجام داد و آن را از حالت سری که در حلقه وجود دارد می‌توان خارج کرد. برای مثال اگر فضای برداری ما ۴ بعدی باشد عملاً مجموع دو بردار به صورت زیر پیاده‌سازی می‌شود.
حال اگر همین مثال بالا را بخواهیم برای فضای برداری n بعدی پیاده‌سازی کنیم باید از حلقه استفاده کنیم و می‌توانیم به روشی که در پایین اشاره شده‌است بسنده کنیم.
for (i=0; i<n; i++)
کامپایلری که در آن برداری‌سازی خودکار انجام شود کد بالا را به صورت سری انجام نمی‌دهد زیرا برای i و j متفاوت دو مجموع عملاً تأثیری بر روی هم ندارند و کامپایلر براساس قدرت پردازشی دستگاه خود می‌تواند به صورت موازی با هم جمع کند.
رایانه‌های اولیه تمام عملیات‌های خود را به صورت سری انجام می‌دادند به عبارتی در هر واحد زمانی یک کار انجام می‌دادند. با گذشت زمان رایانه‌ها این قابلیت را پیدا کردند که چند کار را در یک واحد زمانی انجام دهند و از ان زمان مسئله موازی‌سازی مطرح بود. کامپایلرها نیز ازین قاعده مستثنا نبودند و به سمت موازی‌سازی رفته‌اند که یکی از این روش‌ها برداری‌سازی خودکار است.
Intel's MMXو SSEو AVX و AltiVec و ARM's NEON از این نوع خودکارسازی پشتیبانی می‌کنند.
مانند هر بهینه‌سازی دیگر اهمیت زیادی دارد که بهینه‌سازی انجام شده باعث به وجود آمدن خطا در پاسخ نشود.
روش برداری‌سازی خودکار از حساس‌ترین روش‌ها به این آفت است. در پایین دو مورد از خطاهایی که ممکن است با آن مواجه شویم را آورده‌ایم.
تمام وابستگی‌ها در متغیرها را باید در نظر بگیریم. ممکن است در حلقهٔ ما متغیرها بعد از مدتی تغییر کنند و طبعاً موازی‌سازی می‌تواند باعث به وجود آمدن جواب غلط شوند. برای بررسی این مسئله نیز الگوریتمی موجود است که به وسیلهٔ ساخت گراف وابستگی این مسئله را برای ما حل می‌کند. به عبارتی در صورتی می‌توانیم بین دو قسمت مختلف حلقه موازی‌سازی انجام که در گراف وابستگی به هم متصل نباشند.
ممکن است متغیرهای موجود در بردارها از نوع متفاوتی باشند و ممکن است در انجام عملیات‌های مجبور باشیم بعضی از آن‌ها را به هم تبدیل کنیم و برای همین موازی‌سازی می‌تواند باعث به وجود آمدن خطا در داده‌ها شود.
همان‌طور که در بخش قبل گفتیم اولین مرحله در روش برداری‌سازی خودکار پیدا کردن وابستگی بین داده هاست. به عبارتی نباید دو دو خط از حلقهٔ مورد نظر که به هم مرتبطند را هم‌زمان انجام دهیم برای مثال:
for (i = 0; i < 128; i++) {
}در مثال بالا همان‌طور که می‌بینیم اگر دو جملهٔ متوالی را بخواهیم به صورت موازی با هم انجام دهیم به نتیجهٔ غلطی می‌رسیم.
پس بنا بر مثالی که در بالاتر دیدیم وابستگی داده‌ها اهمیت زیادی دارد و با ساخت درخت وابستگی و انجام الگوریتم‌های مشخص می‌توانیم این موازی سازی‌ها را انجام دهیم.
برخی از برداری‌سازی‌ها در زمان کامپایل به صورت کامل انجام می‌گیرند به عبارتی می‌توان در همان زمان کامپایل وابستگی داده‌ها به هم را تشخیص داد و با استفاده از برداری سازی، موازی‌سازی انجام داد برای مثال در همان زمان کامپایل کد زیر را می‌توان به صورت کامل بر روی آن انجام داد.
int a[128];
int b[128];
// initialize b
for (i = 0; i<128; i++)
برخی از کدها ممکن است در زمان اجرا به هم مرتبط شوند پس نمی‌توان در همان زمان کامپایل گراف وابستگی آن‌ها را به‌طور کامل انجام داد. برای مثال کد زیر کاملاً مشابه کد بالاست با این تفاوت که دو متغیر در زمان اجرا ساخته می‌شوند و در زمان کامپایل قابل تشخیص نیستند.
int *a = malloc(128*sizeof(int));
int *b = malloc(128*sizeof(int));
for (i = 0; i<128; i++, a++, b++)
free(b);
free(a);
دراین جا به یک مثال ساده برای مفهوم شدن نحوهٔ برداری‌سازی ارائه می‌کنیم.
این مثال را در نظر بگیرید:
بر اساس میزان موازی‌سازی که می‌توانیم انجام دهیم برداری‌سازی انجام می‌شود. مثلاً اینجا می‌خواهیم هر سه جمله را به‌طور موازی با هم ضرب کنیم.
ورویر مارتیروسی پانویان (؛ ؛ زاده – درگذشته ) یک هنرپیشه اهل ارمنستان بود. وی بین سال‌های ۱۹۶۷ تا ۱۹۷۷ میلادی فعالیت می‌کرد.
وی در ۳ سپتامبر ۱۹۰۷ در وانادزور، استان لوری به دنیا آمد وی همچنین برندهٔ جوایزی همچون هنرمند مردمی ارمنستان شوروی (1961) شده‌است. وی در ۲۷ مهٔ ۱۹۷۷ در سن ۶۹ سالگی در آرتاشات درگذشت.
از فیلم‌ها یا برنامه‌های تلویزیونی که وی در آن نقش داشته‌است می‌توان به ناهاپتاشاره کرد.
آرتاشس مکرتچی گیوداکیان (؛ ؛ – ) یک هنرپیشه اهل ارمنستان بود. وی بین سال‌های ۱۹۷۴ تا ۱۹۹۲ میلادی فعالیت می‌کرد.
از فیلم‌ها یا برنامه‌های تلویزیونی که وی در آن نقش داشته‌است می‌توان به "ناهاپت" (۱۹۷۷)، "رفیق پانجونی" (۱۹۹۳)، "ستاره امید" (۱۹۷۸)، "یک تکه از آسمان (فیلم ۱۹۸۰)" (۱۹۸۰)، "آرئویک (فیلم)" (۱۹۷۸)، "تانگوی کودکی ما)" (۱۹۸۴) اشاره کرد.
ماراته‌آ (به ایتالیایی: Maratea) یک کومونه در ایتالیا است که در استان پوتنزا واقع شده‌است. ماراته‌آ ۶۷ کیلومتر مربع مساحت و ۵٬۲۰۵ نفر جمعیت دارد و ۳۰۰ متر بالاتر از سطح دریا واقع شده‌است.
شهرهای بولتسانو، سنتو، فرارا، کاروزینو و آوترانا خواهرخوانده‌های ماراته‌آ هستند.
در علوم نظری کامپیوتر، الگوریتم مارکوف یک سیستم بازنویسی رشته‌ای است که قوانین گرامر-مانندی را بر روی رشته‌ای از نمادها اعمال می‌کند. الگوریتم مارکوف به عنوان یک تورینگ کامل نشان داده شده‌است که به این معنی است که آن‌ها به عنوان یک مدل کلی از یک سری محاسبات مناسب هستند که می‌توانند بیانگر هر عبارت ریاضی از علامت ساده خود باشد. الگوریتم مارکوف به نام آندرس مارکوف ریاضیدان سابق نامگذاری شده‌است.
Refal یک زبان برنامه‌نویسی مبتنی بر الگوریتم مارکوف است.
الگوریتم‌های عادی، کلامی هستند که به عنوان کلماتی که در الفباهای مختلف به کار برده می‌شوند، در نظر گرفته می‌شود.
تعریف هر الگوریتم عادی شامل دو بخش است: یکی تعریف الفبای الگوریتم (الگوریتم برای کلمات این نمادهای الفبایی به کار برده خواهد شد) و دیگری تعریف برای طرح آن است. طرح الگوریتم عادی یک مجموعه محدود از فرمول‌هایی است که به اصطلاح به آن‌ها فرمول جایگزینی می‌گوییم که هر کدام می‌تواند ساده یا نهایی باشد. یک فرمول جایگزینی ساده کلماتی هستند به شکل formula_1، که formula_2 و formula_3 دو کلمه دلخواه در الفبای الگوریتم هستند (که به ترتیب سمت چپ و سمت راست در فرمول جایگزینی نامیده می‌شوند) به‌طور مشابه فرمول جایگزینی نهایی کلماتی هستند به شکل formula_4، هستند که formula_2 و formula_3 دو کلمه دلخواه در الفبای الگوریتم هستند. با این فرض که کاراکترهای کمکی formula_7و formula_8 ، به الفبای الگوریتم تعلق ندارند.
یک مثال از طرح الگوریتم عادی که شامل الفبای پنج حرفی formula_9 است می‌تواند مانند طرح زیر باشد.
روند استفاده از الگوریتم عادی برای یک کلمه دلخواه formula_11 در الفبای الگوریتم، یک توالی گسسته از مراحل ساده است که شامل موارد زیر است. فرض کنیم formula_12 کلمه‌ای است که در مرحله قبلی الگوریتم به دست آمده‌است، (یا کلمه اصلی formula_11، اگر مرحله فعلی قدم اول شماست). اگر در بین فرمول‌های جایگزینی، سمت چپی وجود نداشته باشد که شاملformula_12 باشد، کار الگوریتم تکمیل شده و نتیجه این الگوریتم کلمه formula_12 در نظر گرفته می‌شود. در غیر این صورت گزینه‌هایی هستند که در سمت چپ آن‌ها قسمتی از formula_12 ظاهر شده‌است اولین گزینه را انتخاب می‌کنیم، اگر فرمول جایگزینی یه شکل formula_1 باشد پس از بین تمام حالت‌های مختلفی که می‌توان formula_12 را به شکل formula_19 نشان داد حالتی را انتخاب می‌کنیم که formula_20 کوچکترین طول را داشته باشد، بعد از اعمال آن قانون نتیجه مرحله فعلی formula_21 می‌شود و به سراغ مرحله بعد می‌رویم. حال اگر این فرمول جایگزینی به شکل formula_4 باشد، پس از انجام مراحل قبل که جواب آن به formula_21 ختم می‌شود و کار الگوریتم به پایان می‌رسد.
برای مثال در طول فرایند به‌کارگیری الگوریتم با استفاده از طرح بالا، روی کلمه formula_24 به ترتیب کلمات formula_25، formula_26، formula_27، formula_28، formula_29، formula_30، formula_31، formula_32، formula_33، formula_34 و formula_35 ظاهر می‌شود، پس از آن الگوریتم با نتیجه formula_36 متوقف می‌شود.
هر الگوریتم عادی معادل ماشین تورینگ است و بالعکس، هر ماشین تورینگ معادل الگوریتم عادی است. یک نسخه از تز چرچ-تورینگ که در رابطه با الگوریتم عادی فرموله شده‌است، اصل نرمالیزاسیون نامیده می‌شود.
الگوریتم‌های عادی ثابت کرده‌اند که ابزار مناسبی برای ساخت بسیاری از بخش‌های برساخت‌گرایی ریاضیات هستند. علاوه بر این، به‌طور ذاتی الگوریتم‌های عادی در تعدادی از ایده‌های مربوط به اداره اطلاعات نمادها در زبان‌های برنامه‌نویسی استفاده شده‌است. به عنوان مثال در Refal
قوانین توالی به صورت جفت رشته‌ها هستند. معمولاً به شکل الگوی → نشان داده می‌شوند. هر قاعده ممکن است عادی یا نهایی باشد.
با توجه به یک رشته ورودی:
مثال زیر نشانگر عملیاتی ساده از الگوریتم مارکوف است.
اگر الگوریتم برای مثال بالا به کار برده شود، رشته نماد به روش زیر تغییر خواهد کرد.
سپس الگوریتم خاتمه خواهد یافت.
این قوانین مثالی جالب تر را ارائه می‌دهد، آن‌ها اعداد دودویی را به شکل تعداد معادلی خط بازنویسی می‌کنند. به عنوان مثال ۱۰۱ به یک رشته از ۵ خط متوالی بازنویسی خواهد شد.
اگر الگوریتم برای مثال بالا اجرا شود. بعد از مراحل زیر الگوریتم متوقف خواهد شد.
سان بازیله (به ایتالیایی: San Basile) یک کومونه در ایتالیا است که در استان کزنتزا واقع شده‌است. سان بازیله ۱۸ کیلومتر مربع مساحت و ۱٬۲۸۳ نفر جمعیت دارد و ۵۴۰ متر بالاتر از سطح دریا واقع شده‌است.
کانا (به ایتالیایی: Canna) یک کومونه در ایتالیا است که در استان کزنتزا واقع شده‌است. کانا ۲۰ کیلومتر مربع مساحت و ۸۲۸ نفر جمعیت دارد و ۴۱۷ متر بالاتر از سطح دریا واقع شده‌است.
چیکالا (به ایتالیایی: Cicala) یک کومونه در ایتالیا است که در استان کاتانزارو واقع شده‌است. چیکالا ۹ کیلومتر مربع مساحت و ۹۶۴ نفر جمعیت دارد و ۸۳۷ متر بالاتر از سطح دریا واقع شده‌است.
کاسانا آلیونیو (به ایتالیایی: Cassano all'Ionio) یک کومونه در ایتالیا است که در استان کزنتزا واقع شده‌است. کاسانا آلیونیو ۱۵۴ کیلومتر مربع مساحت و ۱۸٬۶۵۲ نفر جمعیت دارد و ۲۵۰ متر بالاتر از سطح دریا واقع شده‌است.
چینش باد یا برش باد () به معنای تغییر سمت و سرعت باد در ارتفاعات مختلف جوی است.
به عبارتی دیگر، تغییر محلی بُردار باد یا هریک از مؤلفه‌های آن در یک راستای معین را چینش باد می‌گویند.
چینش باد به تغییر ناگهانی سرعت باد در یک فاصلهٔ کوتاه افقی اطلاق می‌گردد که در این شرایط تغییر سریعی در میزان لیفت و در پی آن ارتفاع هواپیما رخ می‌دهد.
همواره میزان زیادی چینش باد در جو موجود است اما برش‌های باد قوی موجب تشکیل چرخند و تگرگ می‌شود
همواره میزان زیادی چینش باد در نزدیک جبهه‌ها و جت استریم‌ها وجود دارد
چینش باد یک لایه جوی ناپایدار است که در CAT هم به وجود می‌آید.
چینش قائم باد در محیط اطراف چرخندهای گرمسیری بسیار با اهمیت است. منظور از چینش باد میزان تغییر در سرعت و جهت باد با افزایش ارتفاع است.
هنگامی که برش باد ضعیف باشد توفان که قسمتی از چرخنده است به صورت قائم رشد می‌کند و گرمای نهان ناشی از چگالش در هوایی که مستقیماً در بالای توفان قرار دارد آزاد می‌شود و به توسعه توفان کمک می‌کند هنگامی که برش باد قوی تری وجود داشته باشد توفان به صورت اریب و کج در می‌آید و گرمای نهان بر روی منطقه گسترده‌تری آزاد می‌شود.
ملیکوکا (به ایتالیایی: Melicuccà) یک کومونه در ایتالیا است که در استان رجو کالابریا واقع شده‌است. ملیکوکا ۱۷٫۲ کیلومتر مربع مساحت و ۱٬۰۲۸ نفر جمعیت دارد.
چنتولا (به ایتالیایی: Centola) یک کومونه در ایتالیا است که در استان سالرنو واقع شده‌است. چنتولا ۴۷ کیلومتر مربع مساحت و ۵٬۰۷۳ نفر جمعیت دارد و ۳۳۶ متر بالاتر از سطح دریا واقع شده‌است.
چروینو (به ایتالیایی: Cervino) یک کومونه در ایتالیا است که در استان کسرتا واقع شده‌است. چروینو ۸٫۰ کیلومتر مربع مساحت و ۵٬۱۳۷ نفر جمعیت دارد.
ساککو (به ایتالیایی: Sacco) یک کومونه در ایتالیا است که در استان سالرنو واقع شده‌است. ساککو ۲۳ کیلومتر مربع مساحت و ۵۸۲ نفر جمعیت دارد و ۵۰۰ متر بالاتر از سطح دریا واقع شده‌است.
اُرریا (به ایتالیایی: Orria) یک کومونه در ایتالیا است که در استان سالرنو واقع شده‌است. ارریا ۲۶٫۵۵ کیلومتر مربع مساحت و ۱٬۱۶۱ نفر جمعیت دارد و ۵۴۰ متر بالاتر از سطح دریا واقع شده‌است.
کُنتورسی تِرمه (به ایتالیایی: Contursi Terme) یک کومونه در ایتالیا است که در استان سالرنو واقع شده‌است. کنتورسی ترمه ۲۸٫۹۰ کیلومتر مربع مساحت و ۳٬۲۸۱ نفر جمعیت دارد و ۲۵۰ متر بالاتر از سطح دریا واقع شده‌است.
شهر مورو لوکانو خواهرخواندهٔ کنتورسی ترمه هست.
چِرازو (به ایتالیایی: Ceraso) یک کومونه در ایتالیا است که در استان سالرنو واقع شده‌است. چرازو ۴۵٫۹۵ کیلومتر مربع مساحت و ۲٬۵۱۰ نفر جمعیت دارد و ۳۴۰ متر بالاتر از سطح دریا واقع شده‌است.
در نظریهٔ محاسبات، پیوند دهندهٔ پویا (به انگلیسی: Dynamic Linker) بخشی از سیستم‌عامل است که وظیفهٔ بارگذاری منابع و کتابخانه‌های مورد نیاز برنامهٔ اجرایی و پیوند دادن آن‌ها را به برنامه در زمان اجرا بر عهده دارد.
پیوند دادن معمولاً به فرایندی اطلاق می‌شود که در آن منابع مورد نیاز یک برنامه قبل از اجرا، در زمان کامپایل و توسط کامپایلر به آن برنامه متصل می‌شوند تا یک بستهٔ اجرایی (به انگلیسی: Executable) کامل ایجاد شود. در مقابل پیوند دهندهٔ پویا منابع مورد نیاز را در زمان اجرای برنامه در آن بارگذاری کرده و سپس آن‌ها را به برنامهٔ در حال اجرا مقید (به انگلیسی: Bind) می‌کند.
پیونده دهندهٔ پویا عملیات بارگذاری و پیوند منابع و کتابخوانه‌ها را در زمان اجرای برنامه بر عهده دارد. به این صورت که کتابخوانه‌های اشتراکی (به انگلیسی: Shared Libraries) و منابع مورد نیاز برنامه را در زمان اجرا و در صورتی که در حافظهٔ اصلی موجود نباشند، از حافظهٔ پایدار (به انگلیسی: Persistent Storage) به حافظهٔ اصلی منتقل کرده، سپس جدول‌های پرش (به انگلیسی: Jump Table) برنامهٔ بارگذاری شده را با آدرس‌های منابع اشتراکی تکمیل و اشاره‌گرهای (به انگلیسی: Pointer) با آدرس مطلق برنامه را آدرس دهی می‌کند.
پیاده‌سازی پیوند دهندهٔ پویا و بارگذار پویا و توانایی‌ها و کاربردهای آن‌ها بسته به نوع و ردهٔ سیستم‌عامل و نوع فایل‌های اجرایی و منابع مورد نیاز آن‌ها ممکن است متفاوت باشد.
کتابخانهٔ پیوندی پویا (به انگلیسی Dynamic-link library) یا DLL نام پیاده‌سازی شرکت مایکروسافت از مفهوم کتابخانهٔ اشتراکی است.
این پیاده‌سازی در سیستم‌های عامل ویندوز و OS/2 به کار گرفته شده‌است. فایل‌های کتابخانه‌ای در این پیاده‌سازی معمولاً از پسوند DLL استفاده می‌کنند.
ساختار و قالب این فایل‌ها مانند فایل‌های اجرایی سیستم‌عامل ویندوز (فایل‌های با پسوند EXE) است، از این رو این فایل‌ها می‌توانند شامل بخش‌های مختلفی از جنس کد منبع، اطلاعات برنامه و منابع اجرایی باشند.
کتابخانه‌های اجرایی که تنها شامل اطلاعات و منابع اجرایی باشند را DLLهای منبع می‌نامند.
به عنوان مثالی از این نوع کتابخانه‌های اشتراکی می‌توان کتابخانه‌های آیکون (با پسوند ICL) و برخی از قلم‌ها (به انگلیسی: font) (با پسوندهای FON و FOT) اشاره کرد.
در بسیاری از سیستم‌های عامل بر پایهٔ یونیکس (به انگلیسی: Unix) کتابخانه‌های اشتراکی کاملاً مانند برنامه‌های اجرایی عادی هستند.
استفاده از این کتابخانه‌های اجرایی در یک برنامه باعث می‌شود کتابخانهٔ اشتراکی مورد استفاده قبل از بارگذاری برنامهٔ اصلی در فضای حافظهٔ برنامه قرار گیرد، سپس برنامهٔ اصلی بارگذاری شده، ارجاع‌های انجام شده در آن به کتابخانه‌های اشتراکی آدرس‌دهی می‌شوند و در نهایت اجرای برنامهٔ اصلی شروع می‌شود.
اگر بنابر علتی بارگذاری کتابخانهٔ اشتراکی موفقیت‌آمیز نباشد، روال اجرای برنامهٔ اصلی با شکست روبه‌رو خواهد شد.
وظیفهٔ بارگذاری رویه‌های کتابخانه‌های اشتراکی و برنامهٔ اصلی در فضای آدرس دهی برنامه و در نهایت شروع روال اجرا بر عهدهٔ پیونددهندهٔ پویا است.
در سیستم‌های عامل لینوکس (به انگلیسی: Linux) فایل‌های کتابخانه‌های اجرایی اشتراکی از پسوند SO استفاده می‌کنند.
در سیستم‌عامل داروین (به انگلیسی: Darwin) شرکت اپل و سیستم‌های عامل macOS و iOS که بر پایهٔ آن بنا شده‌اند نوع پیونده‌دهندهٔ پویایی که باید برای پیونددادن برنامه و کتابخانه‌های مورد استفاده‌اش استفاده شود در زمان پیوند مشخص می‌شود. به این منظور آدرس فایل اجرایی دودویی این پیونددهنده در فضای آدرس دهی پردازه قرار داده می‌شود.
فایل‌های کتابخانه‌های اشتراکی در این سیستم‌های عامل از پسوند DYLIB استفاده می‌کنند.
برنامهٔ اجرایی در این سیستم‌های عامل می‌تواند حین اجرای پیوند دهنده یا حین اجرای خود با پیونددهندهٔ پویا تعامل داشته باشد. به این صورت پیوند دهندهٔ پویا منابعی را با برنامه پیوند خواهد داد که در روال اجرای برنامه مورد نیاز هستند.
از این رو ممکن است منابع بارگذاری شده در دفعات مختلف اجرای یک برنامه متفاوت باشند.
در این سیستم‌های عامل، یک برنامه می‌تواند مدت‌ها پس از شروع اجرایش با تعامل با پیوند دهنده باعث بارگذاری منابع بیشتر یا خارج کردن منابع قبلی از حافظه شود.
این رفتار ویژه به منظور ارائهٔ سرویس‌های مورد نیاز در رابط‌های برنامه‌نویسی کاربردی (به انگلیسی: Application Programming Interface یا API) شرکت اپل مانند Cocoa و Objective-C در نظر گرفته شده‌است.
پیونددهندهٔ پویای اپل در سیستم‌عامل macOS یک پیونده‌دهندهٔ متن باز است که از طریق پروژهٔ متن باز اپل در دسترس عموم قرار دارد.
در سیستم‌های عامل بر پایهٔ XCOFF مانند AIX شرکت IBM فایل‌های کتابخانه‌های اجرایی اشتراکی از پسوند A استفاده می‌کنند.
در نظریه پیچیدگی محاسباتی اِن‌اِل (NL) به کلاس پیچیدگی مسائلی از مسائل تصمیم‌گیری گفته می‌شود که توسط ماشین تورینگ غیرقطعی و با حافظه لگاریتمی نسبت به اندازه ورودی، قابل حل هستند.
NL تعمیمی از مسائل کلاس اِل است که در مسائل کلاس L مسائلی قرار دارند که با پیچیدگی حافظه لگاریتمی نسبت به اندازه ورودی بر روی ماشین تورینگ قطعی قابل حل هستند. کلاس NL به کمک نمادگذاری NPSPACE نیز قابل تعریف است:
نتایج مهم در نظریه پیچیدگی کلاس مسائل NL را به برخی از کلاس‌های دیگر مرتبط می‌کند. این در حالی است که رابطه NL با برخی دیگر از کلاس‌ها همچنان به عنوان بعضی از مهم‌ترین مسائل حل نشده در نظریه پیچیدگی مطرح می‌شوند. یکی از این مسائل بررسی برقراری تساوی بین L و NL یا به‌طور دقیق‌تر
"آیا formula_2 است؟" می‌باشد.
به کمک تعریف اصلی ماشین تورینگ ساده که تنها دارای یک نوار است، مسائل پیچیدگی فضای لگاریتمی قابل بحث نیستند زیرا اندازه خود ورودی به صورت بدیهی از مرتبه
formula_3 است و استفاده از حافظه از مرتبه
formula_4 بی‌معنی خواهد بود. به همین دلیل تعریف ماشین تورینگ تغییر پیدا می‌کند.
در این نوع ماشین تورینگ، دو نوار وجود دارد: نوار فقط-خواندنی که روی آن ورودی قرار داده شده‌است و این نوار یک سر دارد که آزادانه روی آن می‌تواند حرکت کند ولی خود نوار غیرقابل تغییر است. نوار دوم هم که نوار خواندن-نوشتن است مانند ماشین تورینگ عادی یک سر دارد و قابلیت خواندن و نوشتن را فراهم می‌کند. با توجه به اینکه بر روی نوار فقط-خواندنی امکان علامت‌گذاری خانه‌های آن و به تبع آن تشخیص دو انتهای چپ و راست نوار وجود ندارد، فرض می‌کنیم که قابلیت تشخیص رسیدن به دو سر نوار برای ماشین تورینگ وجود دارد. حال به کمک این تعریف از ماشین تورینگ، پیچیدگی فضا برابر با تعداد خانه‌های خوانده شده بر روی نوار خواندن-نوشتن تعریف می‌شود و در نتیجه با قرار گرفتن ورودی بر روی نوار فقط-خواندنی، در مسائل کلاس حجمی لگاریتمی، مستقل از نوار ورودی، می‌توان از لگاریتم اندازه ورودی از نوار خواندن-نوشتن استفاده کرد.
یک مبدّل فضای لگاریتمی یک ماشین تورینگ با تعریف اشاره شده در بالا است که در نوار خواندن-نوشتن آن می‌تواند تنها شامل
نماد باشد. مبدل فضای لگاریتمی M تابع
formula_6 است و هنگامی که formula_7 رشته ورودی روی نوار فقط-خواندن باشد، formula_8 رشته باقی‌مانده بر روی نوار خواندن-نوشتن در پایان است. در این صورت formula_9 یک تابع قابل محاسبه در فضای لگاریتمی است.
زبان formula_10 به زبان formula_11 با فضای لگاریتمی قابل کاهش است اگر یک نگاشت قابل کاهش از formula_10 به formula_11 به وسیله یک تابع قابل محاسبه در فضای لگاریتمی مانند formula_9 وجود داشته باشد. نمادگذاری جمله بالا به صورت زیر است:
زبان formula_11 یک زبان NL-Complete است اگر
مسائل مشهوری مانند اتصال-ST و 2-ارضاپذیری NL-Complete هستند. در مسئله اتصال-ST به عنوان ورودی یک گراف و دو راس S و T داده می‌شوند و مسئله تصمیم‌گیری وجود داشتن یک مسیر از S به T است. در مسئله 2-ارضاپذیری هم ارضاپذیر بودن یک عبارت منطقی حاصل AND منطقی بین چند عبارت که خود این عبارات نیز از OR شدن 2 متغیر تشکیل شده اند، سؤال می‌شود. نمونه‌ای از عبارات منطقی به شکل زیر است:
به دلیل وجود الگوریتم چندجمله‌ای برای حل مسئله 2-ارضاپذیری و با توجه به NL-Complete بودن آن، مجموعه P شامل مجموعه NL می‌شود. این در حالی است که به سوال‌هایformula_21 یا formula_22 هنوز جوابی داده نشده‌است.
در مورد مقایسه NL و co-NL ثابت شده‌است که
formula_23. این مسئله در سال 1987 به‌طور مستقل توسط Neil Immerman و Róbert Szelepcsényi ثابت شد که حالت خاصی از قضیه Immerman-Szelepcsényi است که در آن ثابت می‌شود کلاس‌های غیرقطعی پیچیدگی فضا تحت عمل مکمل‌گیری بسته‌اند. این دو نفر در سال 1995 جایزه Gödel را دریافت کردند.
در پیچیدگی مدار NL را می‌توان در سلسله مراتب NC قرار داد. در Papadimitriou 1994، قضیه 16.1 آمده است:
همچنین به کمک قضیه ساویچ می‌توان NL را به پیچیدگی فضای کلاس مسائل قطعی مرتبط کرد. طبق قضیه ساویچ هر الگوریتمی را که به صورت غیرقطعی با حافظه معینی پیاده‌سازی شده باشد، می‌توان با حداکثر مربع آن حجم از حافظه به صورت قطعی پیاده‌سازی کرد. نتیجه این قضیه در مورد کلاس NL به صورت زیر می‌شود:
طبق آن‌چه که در بالا گفته شد از قضیه Immerman-Szelepcsényi نتیجه می‌شود که NL تحت عملگر مکمل‌گیری بسته است. علاوه بر این NL تحت عملگرهای الحاق و ستاره کلین نیز بسته است.
مسئلهٔ تناظر پست (به انگلیسی: Post correspondence problem) یک مسالهٔ تصمیم‌ناپذیر بر روی رشته‌ها است که در سال ۱۹۴۶ میلادی به‌وسیلهٔ امیل پست معرفی و اثبات شد.Post, Emil L. "A variant of a recursively unsolvable problem." Bulletin of the American Mathematical Society 52.4 (1946): 264-268. با نگاشت این مسئله بر روی مسائل تصمیم‌ناپذیر دیگر می‌توانیم تصمیم‌ناپذیری آن‌ها را نیز اثبات کنیم (مانند تصمیم‌ناپذیری ماشین‌های تورینگ).
علاوه بر این که یکی از دلایل اهمیت این مسئله اثبات دیگر مسائل تصمیم‌ناپذیر به‌وسیلهٔ آن است، می‌توان به این موضوع نیز اشاره نمود که درک و اثبات این مسئله بسیار ساده‌تر از دیگر مسائل تصمیم‌ناپذیر، مانند مسالهٔ توقف در ماشین تورینگ است.
یک "نمونه" از مسئلهٔ تناظر پست را این‌گونه تعریف می‌کنیم:Hopcroft, John E. , Rajeev Motwani, and Jeffrey D. Ullman. "Automata theory, languages, and computation." International Edition 24 (2006).
هر نمونه از این مسئله شامل دو لیست از رشته‌هایی است که بر روی الفبای formula_1 تعریف شده‌اند. فرض کنید این دو لیست formula_2 و formula_3 نام دارند که برای یک مقدار formula_4 این‌گونه تعریف می‌شوند:
برای هر formula_7 جفت formula_8 را یک جفت تناظر می‌گویند.
"جواب" مسئلهٔ تناظر پست را نیز این‌گونه تعریف می‌کنیم:
برای یک نمونه از مسئله "جواب" وجود دارد اگر دنباله‌ای از اعداد صحیح مانند formula_9، formula_10، … و formula_11 وجود داشته باشد که شرط زیر را ارضاء کند:
پس به‌طور کلی مسئلهٔ تناظر پست این‌گونه تعریف می‌شود:
«"آیا برای یک نمونه از مسئلهٔ تناظر پست جوابی وجود دارد یا خیر؟"»
فرض کنید formula_13 و دو لیست formula_2 و formula_3 را این‌گونه در نظر بگیرید:
یک جواب برای این نمونه با formula_16، این‌گونه است: formula_17؛ زیرا در این صورت:
که این دو شرط formula_20 را ارضاء می‌کنند.
ایدهٔ کلی برای اثبات تصمیم ناپذیری مسئلهٔ تناظر پست این است که آن را بر روی یک مسئلهٔ تصمیم ناپذیر معروف دیگری نگاشت کنیم و بهترین گزینه مسالهٔ توقف است.Sipser, Michael. Introduction to the Theory of Computation. Vol. 2. Boston: Thomson Course Technology, 2006. این نگاشت را این‌گونه در نظر بگیرید: «یک مسئلهٔ تناظر پست می‌تواند یک ماشین تورینگ دلخواه را با یک ورودی خاص اجرا کند. مسئلهٔ تناظر پست در صورتی جواب دارد اگر و فقط اگر ماشین تورینگ ورودی‌اش را قبول و توقف کند.»
ماشین پُست-تورینگ (به انگلیسی: Post-Touring Machine) نام رده‌ای خاص از توصیف برنامه‌های محاسباتی است که بر اساس نسخه‌ای ساده از ماشین تورینگ تعریف می‌شود. این نسخهٔ ماشین تورینگ با الهام از مدل ریاضی و ماشین ارائه شده توسط امیل پُست (به انگلیسی: Emel Post) برای محاسبات ساخته و توصیف می‌شود.
یک ماشین پُست-تورینگ همانند ماشین تورینگ از حافظه‌ای دودویی (به انگلیسی: Binary) و از دو طرف نامتناهی برای انجام محاسبات خود استفاده کرده و از یک الفبای دودویی برای ذخیرهٔ داده در این حافظه بهره می‌برد (هر خانهٔ حافظه می‌تواند علامت خورده یا بدون علامت باشد). زبان برنامه‌نویسی این ماشین از اعمالی ابتدایی مانند انتقال به خانهٔ چپ یا راست از یک خانهٔ حافظه و تغییر مقدار ذخیره شده در یک خانهٔ آن پشتیبانی می‌کند.
در شروع عملیات پردازش تعدادی متناهی از خانه‌های حافظه علامت خورده و بقیه بدون علامت هستند. ماشین از یکی از خانه‌های حافظه که به عنوان «خانهٔ آغازین» مشخص شده عملیات خود را شروع کرده و در هر لحظه یکی از این پنج عمل را انجام می‌دهد:
علیرغم شباهت توصیف‌های امیل پُست و آلن تورینگ (به انگلیسی: Alan Touring) از مدل‌های محاسباتی شان، این مدل‌ها مستقل از هم توسعه یافته و هر دو در سال ۱۹۳۶ منتشر شده‌اند. اصطلاحات «ماشین پُست-تورینگ» و «برنامهٔ پُست-تورینگ» توسط مارتین دیویس (به انگلیسی: Martin Davis) استاد دانشگاه نیویورک مورد استفاده قرار گرفته‌اند.
امیل پُست در مقاله‌ای که در سال ۱۹۳۶ به نام "ضابطه‌بندی فرایند ترکیبیاتی متناهی - ۱" منتشر کرد مدلی بسیار ساده از محاسبات ارائه کرد و حدس زد این مدل "منطقا معدل مدل بازگشتی" است. درستی این فرض بعداً اثبات شد.
مدل پُست با مدل ماشین تورینگ در اعمال پایه‌ای و قوانین اعمال شده بر آن‌ها تفاوت‌هایی دارد.
مدل پُست از یک فضای یک بعدی ذخیره‌سازی دودویی (نوار ذخیره‌سازی) از دو طرف نامتناهی استفاده می‌کند و از الفبایی دودویی برای ذخیره‌سازی اطلاعات در هریک از خانه‌های این حافظه بهره می‌برد (هر خانهٔ حافظه می‌تواند علامت خورده یا بی علامت باشد).
در شروع عملیات پردازش، تعداد متناهی از خانه‌های حافظه علامت دار و باقی خانه‌ها بدون علامت هستند.
ماشین از یکی از خانه‌های حافظه که به عنوان «خانهٔ آغازین» مشخص شده عملیات خود را شروع کرده و در هر لحظه یکی از این پنج عمل را انجام می‌دهد:
پُست در مقالهٔ خود اشاره می‌کند که مدل ارائه شده «در مرحلهٔ اولیهٔ توسعه» قرار دارد و گزینه‌هایی برای افزایش انعطاف‌پذیری مدل در مرحلهٔ نهایی‌اش پیشنهاد می‌کند:
امیل پُست در سال ۱۹۴۷ مؤلفه‌های ۵ تایی تعریف ماشین تورینگ را به مؤلفه‌هایی ۴ تایی اتمی کاهش داد:
مولفه‌های ۴ تایی توصیف پُست در واقع همان مؤلفه‌های ۵ تایی توصیف تورینگ هستند. به این صورت که دستورها استاندارد پُست شامل نوشتن (یا بازنویسی) یا حرکت به سمت چپ یا راست اند در حالی که دستورها استاندارد توصیف تورینگ همواره به صورت ترکیبی از نوشتن و حرکت به سمت چپ یا راست هستند.
پاک کردن خانهٔ حافظه در مدل پُست مانند مدل تورینگ، معادل نوشتن علامت تهی (معمولاً '⏘') در آن خانه در نظر گرفته می‌شود.
به این صورت مدل پُست تنها سه نوع ۴ تایی را مورد پذیرش قرار می‌دهد:
formula_4و formula_4حالات ماشین تورینگ و formula_6و formula_7حروف الفبای حافظهٔ ماشین هستند. formula_8بیانگر حرکت به سمت چپ و formula_9بیانگر حرکت به سمت راست روی حافظه است.
از مدل وانگ (ارائه شده به ACM در سال ۱۹۵۴ و انتشار در سال ۱۹۵۷) معمولاً به عنوان مرجع ضابطه‌بندی برنامه‌های ماشین‌های تورینگ با نوار دودویی شناخته می‌شود.
در این مدل بندی دستورها زیر به عنوان دستورها مرجع شناخته می‌شوند: