زبان برنامه‌نویسی فورث کیست؟ توضیح بده.
فورث () یک زبان برنامه‌نویسی رایانه بر پایه برنامه‌نویسی ساخت یافته و ساختمان داده پشته است و در اصل توسط چاک مور طراحی شده‌است. از ویژگی‌های این زبان می توان به برنامه‌نویسی ساخت یافته، پژواک (توانایی بررسی و تغییر ساختار برنامه در حین اجرا)، برنامه‌نویسی متقابل (توابع این زبان با هم قرار گرفتن در کنار هم ترکیب شده‌اند) و قابلیت توسعه ماژولار (برنامه‌نویس می‌تواند دستور جدید ایجاد کند) اشاره کرد. اگرچه نام این زبان مخفف کلمه ای نیست، اما گاهی اوقات به دلیل استفاده زیاد در سال‌های اولیه نام آن با حروف بزرگ FORTH نوشته می‌شود.Forth که یک زبان برنامه‌نویسی رویه ای و بدون بررسی نوع داده‌است، این زبان امکان اجرای تعاملی دستورها (ساختن یک شل مناسب برای سیستم‌هایی که فاقد سیستم عامل رسمی هستند) و توانایی کامپایل دستورات برای اجرای بعدی را فراهم می‌کند. در گذشته زبان فورث، روش استاندارد کامپایل کردن کد ریسه‌ای بود، اما پیاده‌سازی‌های مدرنی وجود دارد که مانند کامپایلرهای زبان‌های برنامه‌نویسی دیگر کد ماشین بهینه‌سازی شده را تولید می‌کند.فورث در بوت لودر نرم‌افزار Open Firmware، در برنامه‌های فضایی مانند فضاپیمای Philae , و در سایر سامانه‌های تعبیه شده شده که تعامل با سخت‌افزار دارند، استفاده می‌شود. همچنین پرفروش‌ترین بازی رایانه ای سال 1986 "Starflight"، ساخته شرکت الکترونیک آرتس، توسط نسخه ای سفارشی شده از زبان فورث نوشته شده‌است.پیاده‌سازی آزاد این زبان برنامه نویسی که Gforth نام دارد هنوز به شکل مستمر پشتیبانی می‌شودبررسی اجمالی.Forth یک زبان ساده و در عین حال قابل گسترش است. وجود قابلیت گسترش (ماژولار بودن) در این زبان اجازه نوشتن برنامه‌های مهم را می‌دهد.محیط برنامه‌نویسی زبان فورث کامپایلر را با شل، که در کاربر زیرروالها که "کلمات(words) نامیده می‌شوند را تعریف و اجرا می‌کند." کلمات بدون کامپایل یا راه اندازی مجدد کل برنامه می‌توانند به صورت تعاملی تعریف، آزمایش، تعریف مجدد و اشکال زدایی شوند. تمام دستور زبان برنامه (syntax)، از جمله متغیرها و عملگرهای اصلی، به عنوان کلمات (words) تعریف می‌شوند. در حالت عادی، اجرای برنامه اثری یکسان با دوباره وارد کردن دستی کد منبع و کامپایل آن دارندفلسفه زبان فورث بر استفاده از کلمات ساده و کوچک تأکید دارد. کلمات مربوط به کارهای بزرگتر بسیاری از کلمات کوچکتر را فراخوانی می‌کنند که هرکدام یک کار فرعی مشخص را انجام می‌دهند. یک برنامه بزرگ نوشته شده با زبان فورث سلسله مراتبی از این کلمات است. این کلمات، ماژول‌های متمایزی هستند که به‌طور ضمنی از طریق مکانیزم پشته ارتباط برقرار می‌کنند (داده‌ها را منتقل می‌کنند) و می‌توانند به صورت مستقل، ساخته و آزمایش شوند. بالاترین سطح کد زبان فورث احتمالاً شبیه یک توصیف انگلیسی از برنامه باشد. Forth را "زبان فرا برنامه ای " خوانده‌اند: زبانی که می‌تواند برای ایجاد زبانهای خاص دامنه مورد استفاده قرار گیرد.کاربردها.فورث دارای کاربردهای نجومی و فضایی و همچنین دارای سابقه استفاده در سیستم‌های نهفته‌است. رام‌های راه اندازی Open Firmware که توسط اپل، IBM، Sun و OLPC XO-1 استفاده می‌شوند دارای از زبان Forth استفاده می‌کنند.دو بازی رایانه ای که الکترونیک آرتس، در دهه ۱۹۸۰ منتشر کرده‌است، "Worms" (1983) و "Starflight" (1986). توسط این زبان نوشته شده‌اند شرکت آتاری برای نمایش توانایی‌های رایانه‌های خانواده ۸ بیتی آتاری در فروشگاه‌ها از یک نسخهٔ نمایشی که توسط زبان Forth نوشته شده بود استفاده کرد.مثال برنامه‌نویسی.فورث از ساختمان داده پشته و نشانه گذاری معکوس لهستانی (نشانه گذاری پیش وندی) استفاده می‌کند که معمولاً در ماشین حساب‌های شرکت هیولت پاکارد (HP) استفاده می‌شود. در این نشانه گذاری، عملگر بعد از عملوندهای آن قرار می‌گیرد، در مقابل نشانه گذاری میانوندی متداول که عملگر بین عملوندها قرار می‌گیرد، قرار می‌گیرد. این روش نشانه گذاری، تجزیه و گسترش یک زبان را آسان‌تر می‌کند. انعطاف‌پذیری فورث، یک دستور زبان BNF را تولید می‌کند و یک کامپایلر یکپارچه ندارد. گسترش کامپایلر، به جای اصلاح دستور زبان و تغییر در عملکرد اصلی آن فقط به نوشتن یک کلمه (word)جدید نیاز داردبا استفاده از نشانه گذاری معکوس لهستانی می‌توان نتیجه عبارت ریاضی codice_1 این طریق بدست آورید: 25 10 * 50 + CR . 300 okابتدا اعداد ۲۵ و سپس ۱۰ را داخل داده ساختار پشته قرار می‌دهیم.خواندن کلمه codice_2 از ورودی دو عدد بالا را از پشته خارج می‌کند، آنها را ضرب می‌کند و نتیجه ضرب را دوباره داخل پشته قرار می‌دهد.سپس عدد ۵۰ از ورودی خوانده شده و داخل پشته قرار می‌گیرد.سپس کلمه codice_3 از ورودی خوانده می‌شود دو مقدار بالا را از پشته خارج می‌شوند و جمع آنها محاسبه می‌شود دهد. codice_4 (بازگشت) به اول خط بعدی رفته در نهایت، codice_5 نتیجه را چاپ می‌کند. هنگامی که همه چیز به‌طور کامل انحام می‌شود زبان فورث عبارت codice_6 را چاپ می‌کند.حتی سایر ساختارهای این زبان نیز از ویژگی‌های داده ساختار پشته استفاده می‌کنند. برای مثال : علامت codice_7 بیانگر شروع یک تعریف جدید است در اینجا یک کلمه (اصطلاحی که برای یک زیرروال در این برنامه به کار می‌رود) جدید به اسم codice_8تعریف می‌کنیم متنی که داخل پرانتز قرار گرفته یک کامنت است که بیان می‌کند این کلمه یک عدد را می‌گیرد و داخل پشته قرار داده و سپس عددی تغییر یافته را بازمی‌گرداند.زیر روال دستورات زیر را انجام می‌دهد:codice_9عدد داخل پشته را تکرار می‌کند codice_10 عدد ۶ را به بالای پشته اضافه می‌کند. codice_11 دو عدد بالای پشته را با هم مقایسه می‌کند (عدد ۶ و عددی که DUP شده‌است)و آنرا با یک عبارت درست یا غلط (true or false) جایگزین می‌کند. سپس در صورت درست بودن گزاره قبلی شرط codice_12اجرا شده DROP تمامی مقادیر داخل پشته را نادیده گرفته و ۵ عدد ۵ را به بالای پشته اضافه می‌کند در صورت غلط بودن شرط قسمت codice_13اجرا می‌شود و مقدار بالای پشته را یک واحد کم می‌کند THEN;به معنای پایان کلمه است اگر بخواهیم مشابه کلمه codice_8در زبان برنامه‌نویسی سی یک تابع تعریف کنیم به شکل زیر آنرا می‌نویسیم:int floor5(int v) { return (v &lt; 6) ? 5 : (v - 1);