تووه (زبان برنامه‌نویسی)

از ویکی‌پدیا، دانشنامهٔ آزاد

تووه (‎/ˈt/‎ TOO-ay) یک زبان برنامه‌نویسی محرمانه است که در اوایل ۲۰۰۰ توسط جان کولاجیوایا اختراع شد. تووه یک فرازبان است که می‌تواند برای تعریف یا تشخیص زبان‌های نوع صفر در سسله‌مراتب چامسکی استفاده شود. به همین دلیل که این زبان برنامه‌نویسی می‌تواند زبان‌هایی با آن پیچیدگی را تعریف کند پس تورینگ‌کامل نیز هست. تووه بر اساس یک سامانهٔ بازنویسی رشته غیرقطعی به نام دستور زبان شبه تووه پایه‌گذاری شده‌است؛ که این دستور زبان نامش را از ریاضی‌دان نروژی اکسل تووه گرفته‌است. مؤلف تووه را بدین صورت تعریف می‌کند: «تووه یکی از ساده‌ترین روش‌های ممکن برای تفسیر برنامه‌نویسی محدود است. به زبانی دیگر یک تورینگ تارپیت است».[۱]

قوانین تولید[ویرایش]

یک برنامه تووه با یک پایگاه‌قانون شروع می‌شود، که یک سری از قوانین بدلی است، هر کدام بدین شکل(rhs و lhs پایین‌تر تعریف شده‌اند):

lhs ::= rhs

این پایگاه‌قانون با یک سمبل تولید تنها در یک خط پایان می‌یابد:

::=

حالت اولیه یک سری از سمبل‌ها است که طبق پایگاه‌قانون هستند.

تووه با توجه به هر یک از سمبل‌های حالات اولیه از سمبل‌ها اولیه و بدل‌ها مصرف می‌کند.

تووه وقتی خاتمه می‌یابد که دیگر هیچ lhs(left hand side) ای در حالت خروجی(resultant) یافت نشود.

یادداشت‌ها[ویرایش]

  • ::= «می‌تواند باشد» تلفظ می‌شود.
  • lhs(left hand side) همان «دست چپ» است.
  • rhs(right hand side) همان «دست راست» است.
  • "::=" یعنی هرگز نمی‌تواند lhs باشد.
  • ":::" یعنی یک جریان ورودی است.
  • "~" یعنی یک جریان خروجی است.
  • سامانهٔ شبه تووه یکی از هم‌ریخت‌های دستور زبان‌های بی‌محدودیت هستند.

فراخوانی تووه[ویرایش]

زمانی که با (debug) "d" فراخوانی می‌شود، حالت را چاپ می‌کند. زمانی که با (left side) "l" فراخوانی می‌شود، قوانین چپ به راست را اجرا می‌کند. زمانی که با (right side) "r" فراخوانی می‌شود، قوانین راست به چپ را اجرا می‌کند. در آخر "l" یا "r" گزینه‌های(switches) قبلی را لغو می‌کند.

برنامه‌های نمونه[ویرایش]

در این‌جا برنامهٔ سنتی «سلام دنیا!»(Hello World!) را در تووه می‌بینیم:

a::=~Hello World!
::=
a

برنامهٔ زیر یک برنامهٔ تووه برای افزایش یک عدد مبنای دو است، که به عنوان حالت اولیه وارد شده (که توسط کاراکترهای "_" احاطه شده‌است). در این‌جا عدد مورد نظر ۱۱۱۱۱۱۱۱۱۱ است:

۱_::=۱++
۰_::=۱
۰۱++::=۱۰
۱۱++::=۱++۰
_۰::=_
_۱++::=۱۰
::=
_۱۱۱۱۱۱۱۱۱۱_

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

b::=~۰
b::=~۱
ac::=abc
::=
abc

جستارهای وابسته[ویرایش]

پیوند به بیرون[ویرایش]

منابع[ویرایش]

  1. «نسخه آرشیو شده». بایگانی‌شده از اصلی در ۹ دسامبر ۲۰۱۷. دریافت‌شده در ۸ دسامبر ۲۰۱۷.