پرش به محتوای اصلی
پرش به محتوای مقاله

Rhombus v1.0: پیوند انعطاف‌پذیری Lisp و نحو مدرن در یک زبان برنامه‌نویسی

·۳ تیر ۱۴۰۵۷ دقیقه مطالعه
نشانگر نسخه ۱.۰ Rhombus: چهارضلعی قرمز با قطرهای متقاطع و نوشته سفید «Rhombus» در مرکز.
نشانگر نسخه ۱.۰ Rhombus: چهارضلعی قرمز با قطرهای متقاطع و نوشته سفید «Rhombus» در مرکز.
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

معرفی یک زبان تابعی با «نحو دوگانه» که قدرت Metaprogramming زبان‌های Lisp را بدون اجبار کاربر به استفاده از پرانتزهای تودرتو ارائه می‌دهد.

تصور کنید بتوانید زبان برنامه‌نویسی خود را دقیقاً مطابق با نیاز پروژه تغییر دهید، بدون اینکه درگیر پیچیدگی‌های بصری و پرانتزهای بی‌پایان شوید. Rhombus نسخه ۱.۰ همین وعده را عملی کرده و توازن میان «سادگی در نوشتن» و «قدرت در تغییر» را برقرار می‌کند. معمولاً زبان‌های برنامه‌نویسی توسعه‌دهنده را مجبور می‌کنند تا بین یک نحو (Syntax) مدیریت‌پذیر و قابلیت گسترش عمیق، یکی را انتخاب کند. Rhombus با ارائه یک زبان تابعی مدرن که به اندازه Racket گسترش‌پذیر است اما به S-expressions تکیه نمی‌کند، این تناقض را از بین می‌برد.

بسیاری از زبان‌های مدرن بر مفاهیمی چون متغیرهای با محدوده لکسیکال (Lexically scoped variables)، کلوژرها، اشیاء، تطبیق الگو (Pattern Matching) و پارامتریک بودن تایپ‌ها توافق دارند، اما کمتر کسی جسارت دارد تا سطح انعطاف‌پذیری ساختاری موجود در سنت Lisp را به کاربر ارائه دهد. Rhombus به‌عنوان یک سنتز (Synthesis) وارد میدان شده است؛ به این معنا که برای کارهای روزمره که نیازی به مکرو ندارند، یک نحو متداول و پذیرفته‌شده دارد، اما برای کسانی که می‌خواهند زبان‌های تخصصی (DSL) بسازند، یک سیستم مکرو بسیار قدرتمند فراهم می‌کند.

همان‌طور که در پوشش پیشین ما درباره‌ی تکامل زبان‌های برنامه‌نویسی و تأثیر آن‌ها بر بهره‌وری توسعه‌دهندگان اشاره کردیم، جدایی میان «زبان‌های ساده» و «زبان‌های قابل گسترش» 늘 یک چالش بوده است. طبق اعلام رسمی، Rhombus از اکوسیستم Racket بیرون آمده است. رابطه این دو شبیه به رابطه Kotlin با Java یا Elixir با Erlang است؛ شما می‌توانید یک ماژول Racket را با دستور #lang rhombus شروع کنید و فوراً وارد محیط Rhombus شوید. در بسیاری از جنبه‌ها، Rhombus صرفاً همان Racket است که نحو متفاوتی دارد، هرچند هدف آن پیشبرد قابلیت‌های چندزبانه Racket و فراهم کردن امکان ساخت گویش‌های (Dialects) بیشتر بر روی هر دو بستر Racket و Rhombus است.

فلسفه گسترش‌پذیری

معماران Rhombus استدلال می‌کنند که ایده‌های خوب برای ساختارهای برنامه‌نویسی بسیار بیشتر از آن چیزی است که در یک دفترچه راهنمای تک‌زبان جای بگیرد. به باور آن‌ها، تنها راه ایجاد توازن میان اندازه مدیریت‌پذیر زبان و طراحی «متناسب با هدف» (Fit-to-purpose) برای طیف وسیعی از وظایف، گسترش‌پذیری زبان است.

در حالی که بسیاری از زبان‌های جدید سیستم‌های مکرو دارند، تعداد کمی از آن‌ها به روانی و بیانگری سنت Lisp رسیده‌اند. Rhombus تلاش می‌کند این قدرت را از نمادگذاری مینیمالیستی و پرانتز-محور Lisp جدا کند. با دسترس‌پذیر کردن تسهیلات پیشرفته و سازگار کردن آن‌ها، Rhombus به توسعه‌دهندگان اجازه می‌دهد برای کارهای روزمره از یک نحو آشنا استفاده کنند و در عین حال، توانایی بازنویسی خودِ زبان را در مواقع ضروری حفظ کنند.

قابلیت‌های فنی کلیدی

این زبان به‌صورت پویا (Dynamic) طراحی شده تا هم تعامل سریع (Rapid interactivity) را پشتیبانی کند و هم ساختارهای انتزاعی استاتیکی مورد نیاز برای مقیاس‌پذیری از اسکریپت‌های کوچک به سیستم‌های بزرگ را فراهم آورد. بر اساس مستندات فنی، بهبودهای کلیدی نسبت به Racket استاندارد عبارت‌اند از:

  • تطبیق الگوی فراگیر (Pervasive Pattern Matching): این قابلیت به‌طور عمیقی در هسته زبان ادغام شده است تا مدیریت داده‌ها تمیزتر و بهینه‌تر باشد.
  • ساختار‌های داده پیشفانه پیشرفته: مجموعه‌ای از ساختارهای داده تابعی که دارای پیچیدگی زمانی (Asymptotic complexity) بهبودیافته هستند، به‌ویژه در رابطه با لیست‌ها.
  • نحو دوگانه (Bicameral Syntax): در حالی که این زبان برای کدهای رایج از پرانتزها اجتناب می‌کند، اما از «نمادگذاری درخت‌مانند» (Shrubbery notation) به‌عنوان معادل لایه S-expression استفاده می‌کند. این مورد برای رویکرد زبان به متامتورامینگ و مکروها حیاتی است.
  • فضاهای نام سلسله‌مراتبی (Hierarchical Namespaces): رویکردی سازمان‌یافته برای مدیریت Namespace که در مقیاس‌های بزرگ بسیار بهتر از ساختارهای تخت (Flat) سنتی عمل می‌کند.
  • اطلاعات استاتیک گسترش‌پذیر: سیستمی جدید که به‌عنوان نقطه‌ای در طیف بین قراردادهای منعطف (Flexible contracts) و تایپ‌های سختگیرانه (Rigid types) عمل می‌کند.
  • تکرارهای فشرده (Compact Repetitions): استفاده از علامت سه نقطه (...) برای مدیریت مختصر و بهینه تکرارها.

متامتورامینگ و ادغام با هوش مصنوعی

طراحان Rhombus معتقدند متامتورامینگ — یا همان دسترسی به API در زمان کامپایل — بنیادی‌ترین نیاز در ساخت نرم‌افزار است. با ادغام DSLها در یک زبان عمومی، توسعه‌دهندگان از «اثر سیلو» نجات می‌یابند؛ وضعیتی که در آن زبان‌های تخصصی سخت می‌شدند با برنامه‌های گسترده‌تر ترکیب شوند یا از ساختارهای انتزاعی «نیمه‌کاره» رنج می‌بردند که توانایی تکامل نداشتند.

به نقل از تیم توسعه، جدی گرفتن متامتورامینگ حتی به وظایفی که مستقیماً با DSL مربوط نیستند، مانند مستندسازی خودکار، تحلیل استاتیک و پشتیبانی از ابزارها کمک می‌کند. آن‌ها این قابلیت را صرفاً «مکرو» به معنای سنتی نمی‌نامند، بلکه آن را یک API باز برای کامپایلر می‌دانند که ریشه در مکروهای سبک Lisp دارد.

نکته جالب توجه، واکنش تیم به ظهور هوش مصنوعی است. برخی پیش‌بینی می‌کردند که عامل‌های کدنویسی AI زبان‌های جدید را می‌کشنند، چون این مدل‌ها روی داده‌های عظیم زبان‌های محبوب آموزش دیده‌اند. اما طبق گزارش تیم توسعه در می ۲۰۲۶ (حتی پیش از عرضه نسخه ۱.۰)، مشاهده شد که عامل‌های خودکار همین حالا هم در نوشتن کدهای idiomatic (اصطلاحاً استاندارد و رایج) Rhombus بسیار موفق بوده‌اند. این نشان می‌دهد مستندات جامع می‌تواند کمبود داده‌های آموزشی در مقایسه با پایتون یا جاوا را جبران کند. علاوه بر این، تیم معتقد است که بالا بردن سطح گفتگو از طریق DSLها، هم برای برنامه‌نویسان انسان و هم برای عامل‌های AI که با یکدیگر ارتباط برقرار می‌کنند، مفید خواهد بود.

پیاده‌سازی‌های واقعی و نمونه‌ها

Rhombus در محیط‌های مختلف، از ابزارهای آکادمیک تا کتابخانه‌های آماده تولید، به کار گرفته شده است تا توانایی‌های خود را به نمایش بگذارد:

  • Pille: زبانی جدید ساخته شده با Rhombus که از امکانات ساخت زبان در این سیستم استفاده کرده و از LLVM به‌عنوان Backend بهره می‌برد. این پروژه یک نمونه بارز از کاربرد سنگین متامتورامینگ است.
  • rhombus-html-lib: یک بسته موجود در Rhombus که شامل یک پارسر کامل HTML 5 است. این پارسر توسط هوش مصنوعی و دقیقاً مطابق با مشخصات رسمی HTML 5 پیاده‌سازی شده است. هرچند سبک کدنویسی آن بیشتر امری (Imperative) و شبیه به جاواست تا ایده‌آل، اما توانایی زبان در مدیریت پیاده‌سازی‌های حجیم را ثابت می‌کند.
  • Economancy: یک بازی رومیزی که برای پیاده‌سازی نقش داور، برنامه‌های بازیکنان و یک رابط گرافیکی (GUI) مینیمال از Rhombus استفاده می‌کند. این پروژه در قالب یک دوره برنامه‌نویسی تابعی توسعه یافته و برنامه‌نویسی تابعی روزمره را به تصویر می‌کشد.
  • Shplait: ابزاری آموزشی که در دوره زبان‌های برنامه‌نویسی دانشگاه یوتا استفاده می‌شود و سینتکس Rhombus را با سیستم تایپ زبان ML ترکیب کرده است.
  • rhombus-draw-lib: بسته‌ای که کتابخانه racket/draw را wrap کرده و آن را بهبود بخشیده است و نشان می‌دهد Rhombus چگونه از کتابخانه‌های موجود در Racket مجدداً استفاده می‌کند.
  • Pict Library: این کتابخانه برای اسلایدهای مربوط به شبکه و امنیت و مخزن pict-demo استفاده شده است. این مورد شامل یک پیش‌نویس برای مقاله ICFP'26 است که در آن مثالی اجرا شده، مراحل ارزیابی برنامه‌ها را با استفاده از کتابخانه eval_tree.rhm در قالب انیمیشن نمایش می‌دهد.

اکوسیستم و ابزارها

این زبان اگرچه ریشه در دانشگاه دارد، اما برای استفاده تجاری و تولیدی ساخته شده است. Rhombus بر زیرساخت‌های تثبیت‌شده Racket تکیه دارد؛ بنابراین کاربران به مجموعه ابزارهای خط فرمان raco و محیط توسعه DrRacket دسترسی کامل دارند. همچنین برای کسانی که ویرایشگرهای دیگر را ترجیح می‌دهند، پشتیبانی از VSCode (از طریق Magic Racket) و Emacs (به‌ویژه از طریق مود racket-hash-lang-mode) فراهم شده است.

این تصمیم معماری به Rhombus اجازه می‌دهد از دهه‌ها پایداری، ثبات و پشتیبانی Racket بهره ببرد. اگرچه در حال حاضر نمی‌تواند با حجم کتابخانه‌های زبان‌های مسلط جهانی رقابت کند، اما جامعه و منابع لازم برای تکامل و رشد را در اختیار دارد.

پروژه Rhombus حاصل یک تلاش همکاری گسترده است. مشارکت‌کنندگان اصلی این پروژه شامل افرادی چون Mashfi Ishtiaque Ahmad، Taylor Allred، Nia Angle، Wing Hei Chan، Stephen De Gabrielle، Robert Bruce Findler، Jacqueline Firth، Matthew Flatt، Oliver Flatt، Kiran Gopinathan، Ben Greenman، Siddhartha Kasivajhula، Alex Knauth، Jay McCarthy، Lucas Myers، Alec Mills، Sam Phillips، Sorawee Porncharoenwase، Jens Axel Søgaard و Sam Tobin-Hochstadt هستند.

برای توسعه‌دهنده، این به معنای امکان تکرار سریع پروژه با سینتکسی تمیز و خوانا است و تنها در صورتی که نیازهای خاص دامنه پروژه ایجاب کند، می‌تواند به لایه پیچیده تبدیل‌های مکرو «سرازیر» (Drop down) شود. این رویکرد تمرکز را از جنگ با نحو زبان به طراحی دامنه مسئله منتقل می‌کند.

این عرضه سیگنالی است برای حرکت به سمت «طراحی مشترک نحو و زبان» (Language-syntax codesign)، جایی که نحوه نوشته شدن یک زبان به‌طور بنیادی با نحوه گسترش آن پیوند خورده است. این موضوع پیشنهاد می‌کند که آینده برنامه‌نویسی احتمالاً نه در دست یک زبان «برنده-همه-چیز»، بلکه در اکوسیستمی از گویش‌های منعطف است که هر کدام برای تسکی خاص طراحی شده‌اند.

اگر به دنبال آزمایش نسخه ۱.۰ هستید، می‌توانید اطلاعات بیشتر و فایل‌های نصب را در rhombus-lang.org/download.html بیابید.

گام بعدی شما

  • اگر به زبان‌های تابعی علاقه دارید، مستندات نصب را در rhombus-lang.org بررسی کنید.
  • سعی کنید یک DSL کوچک برای مدیریت داده‌های خود با استفاده از سیستم مکروهای Rhombus بسازید.
  • عملکرد عامل‌های کدنویسی AI را در نوشتن کدهای این زبان در مقایسه با پایتون بسنجید.

اما داستان سخت‌افزاری این تحولات حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

این زبان با استفاده از اعتبار چندین دهه توسعه Racket، استانداردی جدید برای زبان‌های گسترش‌پذیر تعریف می‌کند. اثر آن در کاهش فاصله میان زبان‌های پژوهشی و محیط‌های عملیاتی تولید نرم‌افزار است.

تأثیر برای ایران

به‌دلیل ماهیت متن‌باز و آکادمیک، دسترسی به Rhombus برای توسعه‌دهندگان ایرانی آزاد است و ابزاری قدرتمند برای پژوهشگران علوم کامپیوتر در ایران جهت مطالعه روی طراحی زبان‌های برنامه‌نویسی محسوب می‌شود.

·نگاه ما
تحریریه دات‌هوش

Rhombus تلاش می‌کند پارادوکس «سادگی در برابر قدرت» را با تفکیک لایه نحو از لایه معنایی حل کند. نکته کلیدی اینجاست که برخلاف بسیاری از زبان‌های مدرن که سعی می‌کنند هر قابلیتی را در استانداردهای سختگیرانه بگنجانند، Rhombus پذیرفته است که نیازهای برنامه‌نویسی بیش از حد متنوع هستند و راهکار را در «امکان بازنویسی زبان توسط کاربر» می‌جوید. این رویکرد در عصر AI، جایی که کدها سریع‌تر تولید می‌شوند، می‌تواند منجر به ظهور زبان‌های بسیار تخصصی شود که توسط مدل‌ها بهینه‌سازی شده‌اند.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.