در حال بارگذاری 0%
// منو.exe
خانه رزومه بلاگ تماس سفارش
English فارسی
~/blog / programming / goya-persian-programming-language

گویا زبان برنامه‌نویسی فارسی

مدتی بود ایده‌ی ساخت یک زبان برنامه‌نویسی فارسی توی ذهنم بود؛ زبانی که فارسی بودنش فقط به ترجمه‌ی چند دستور محدود نشه و از ابتدا با در نظر گرفتن زبان فارسی طراحی شده باشه. نتیجه‌ی این ایده شد گویا؛ یک زبان برنامه‌نویسی فارسی که توسعه‌اش دادم و به‌صورت متن‌باز منتشرش کردم.

گویا زبان برنامه‌نویسی فارسی
در گویا میشه کدها رو با ساختار و کلمات فارسی نوشت، از اعداد فارسی استفاده کرد و خروجی‌ها و خطاها رو هم به فارسی دید.
مثلاً یک برنامه‌ی ساده در گویا می‌تونه این شکلی باشه:
salam-ali.goya
نام = "علی"
 
اگر نام == "علی"
    بگو("سلام علی!")
وگرنه
    بگو("سلام!")
تعریف تابع هم به همین شکل انجام میشه:
morabba.goya
تابع مربع(عدد)
    برگردان عدد * عدد
 
بگو(مربع(۷))
خروجی:
خروجی
۴۹
دستورهایی مثل اگر، وگرنه، برای هر، تابع، برگردان و بگو بخشی از خود زبان هستن و میشه اعداد فارسی مثل ۱۲۳ رو هم مستقیماً داخل کد استفاده کرد.

# پشتیبانی از فارسی

موقع طراحی گویا سعی کردم جزئیات خود زبان فارسی هم در نظر گرفته بشه.
برای مثال، تفاوت کاراکترهای فارسی و عربی مثل ی و ي یا ک و ك تا حد ممکن مدیریت میشه تا هنگام نوشتن کد فارسی مشکل ایجاد نکنه.
پیام‌های خطا هم فارسی هستن و در زمان اجرای برنامه، خطاها به شکلی نمایش داده میشن که با فضای خود زبان هماهنگ باشن.
گویا از تاریخ شمسی هم پشتیبانی می‌کنه. مثلاً:
emrooz.goya
بگو(امروز())
تاریخ روز رو به‌صورت شمسی نمایش می‌ده.

# محیط برنامه‌نویسی گویا

برای اینکه کار با زبان راحت‌تر باشه، یک IDE فارسی و راست‌چین هم برای گویا ساختم.
بدون نصب چیزی می‌تونید مستقیماً از داخل مرورگر زبان رو امتحان کنید:
اجرای آنلاین گویا
IDE به‌صورت محلی هم قابل اجراست:
terminal
$ python -m goya ide
علاوه بر اون، گویا یک محیط تعاملی یا REPL هم داره:
terminal
$ python -m goya repl
مثلاً:
مثال REPL
گویا> ۲ + ۳ * ۴
=> ۱۴
این محیط برای امتحان کردن سریع دستورات و کدهای کوتاه کاربردیه.

# ساختار زبان

گویا موتور خودش را دارد: واژه‌ساز (Lexer)، تجزیه‌گر (Parser)، درخت برنامه (AST) و ارزیاب (Interpreter) را از صفر نوشته‌ام. یعنی کد گویا به پایتون ترجمه و اجرا نمی‌شود؛ متن به توکن تبدیل می‌شود، درخت برنامه ساخته می‌شود و همان درخت مستقیم ارزیابی می‌شود — در موتور گویا خبری از exec یا eval پایتون نیست.
مفسر گویا با پایتون نوشته شده است؛ این یک انتخاب عملی است، مثل Clojure که روی ماشین مجازی جاوا اجرا می‌شود. یعنی پایتون زبانِ پیاده‌سازی گویاست، نه لایه‌ای که کد گویا را اجرا کند.
هدفم این بود که فارسی بودن زبان صرفاً در ظاهر کدها نباشه و بخش‌های مختلف پروژه با همین رویکرد طراحی بشن؛ از سینتکس و اعداد گرفته تا خطاها، تاریخ و محیط برنامه‌نویسی.
برای پروژه چند نمونه برنامه هم آماده کردم تا قابلیت‌های مختلف زبان راحت‌تر قابل مشاهده و آزمایش باشن.

# متن‌باز

سورس کامل گویا با لایسنس MIT روی GitHub منتشر شده و می‌تونید کد زبان، مثال‌ها و روند توسعه‌ی پروژه رو اونجا ببینید:
مشاهده‌ی سورس گویا در GitHub
یک صفحه‌ی جدا هم برای معرفی پروژه و دسترسی به ابزارهای گویا وجود داره:
وب‌سایت گویا
و اگر فقط می‌خواید سریع زبان رو امتحان کنید:
IDE آنلاین گویا
گویا همچنان قابل توسعه است و سورس پروژه هم در دسترسه تا هر کسی که به طراحی زبان‌های برنامه‌نویسی، پردازش زبان فارسی یا خود پروژه علاقه داره بتونه کدها رو بررسی کنه و در توسعه‌ی اون مشارکت داشته باشه.

# مقالات مرتبط