~/blog
/
programming
/
goya-persian-programming-language
Programming
Language Design
// 2026-10-15
~ ۶ دقیقه مطالعه
گویا زبان برنامهنویسی فارسی
مدتی بود ایدهی ساخت یک زبان برنامهنویسی فارسی توی ذهنم بود؛ زبانی که فارسی بودنش فقط به ترجمهی چند دستور محدود نشه و از ابتدا با در نظر گرفتن زبان فارسی طراحی شده باشه. نتیجهی این ایده شد گویا؛ یک زبان برنامهنویسی فارسی که توسعهاش دادم و بهصورت متنباز منتشرش کردم.
در گویا میشه کدها رو با ساختار و کلمات فارسی نوشت، از اعداد فارسی استفاده کرد و خروجیها و خطاها رو هم به فارسی دید.
مثلاً یک برنامهی ساده در گویا میتونه این شکلی باشه:
نام = "علی"
اگر نام == "علی"
بگو("سلام علی!")
وگرنه
بگو("سلام!")
تعریف تابع هم به همین شکل انجام میشه:
تابع مربع(عدد)
برگردان عدد * عدد
بگو(مربع(۷))
خروجی:
دستورهایی مثل اگر، وگرنه، برای هر، تابع، برگردان و بگو بخشی از خود زبان هستن و میشه اعداد فارسی مثل ۱۲۳ رو هم مستقیماً داخل کد استفاده کرد.
#
پشتیبانی از فارسی
موقع طراحی گویا سعی کردم جزئیات خود زبان فارسی هم در نظر گرفته بشه.
برای مثال، تفاوت کاراکترهای فارسی و عربی مثل ی و ي یا ک و ك تا حد ممکن مدیریت میشه تا هنگام نوشتن کد فارسی مشکل ایجاد نکنه.
پیامهای خطا هم فارسی هستن و در زمان اجرای برنامه، خطاها به شکلی نمایش داده میشن که با فضای خود زبان هماهنگ باشن.
گویا از تاریخ شمسی هم پشتیبانی میکنه. مثلاً:
تاریخ روز رو بهصورت شمسی نمایش میده.
#
محیط برنامهنویسی گویا
برای اینکه کار با زبان راحتتر باشه، یک IDE فارسی و راستچین هم برای گویا ساختم.
بدون نصب چیزی میتونید مستقیماً از داخل مرورگر زبان رو امتحان کنید:
IDE بهصورت محلی هم قابل اجراست:
علاوه بر اون، گویا یک محیط تعاملی یا REPL هم داره:
مثلاً:
این محیط برای امتحان کردن سریع دستورات و کدهای کوتاه کاربردیه.
#
ساختار زبان
گویا موتور خودش را دارد: واژهساز (Lexer)، تجزیهگر (Parser)، درخت برنامه (AST) و ارزیاب (Interpreter) را از صفر نوشتهام. یعنی کد گویا به پایتون ترجمه و اجرا نمیشود؛ متن به توکن تبدیل میشود، درخت برنامه ساخته میشود و همان درخت مستقیم ارزیابی میشود — در موتور گویا خبری از exec یا eval پایتون نیست.
مفسر گویا با پایتون نوشته شده است؛ این یک انتخاب عملی است، مثل Clojure که روی ماشین مجازی جاوا اجرا میشود. یعنی پایتون زبانِ پیادهسازی گویاست، نه لایهای که کد گویا را اجرا کند.
هدفم این بود که فارسی بودن زبان صرفاً در ظاهر کدها نباشه و بخشهای مختلف پروژه با همین رویکرد طراحی بشن؛ از سینتکس و اعداد گرفته تا خطاها، تاریخ و محیط برنامهنویسی.
برای پروژه چند نمونه برنامه هم آماده کردم تا قابلیتهای مختلف زبان راحتتر قابل مشاهده و آزمایش باشن.
#
متنباز
سورس کامل گویا با لایسنس MIT روی GitHub منتشر شده و میتونید کد زبان، مثالها و روند توسعهی پروژه رو اونجا ببینید:
یک صفحهی جدا هم برای معرفی پروژه و دسترسی به ابزارهای گویا وجود داره:
و اگر فقط میخواید سریع زبان رو امتحان کنید:
گویا همچنان قابل توسعه است و سورس پروژه هم در دسترسه تا هر کسی که به طراحی زبانهای برنامهنویسی، پردازش زبان فارسی یا خود پروژه علاقه داره بتونه کدها رو بررسی کنه و در توسعهی اون مشارکت داشته باشه.