تصور کنید بتوانید زبان برنامهنویسی خود را دقیقاً مطابق با نیاز پروژه تغییر دهید، بدون اینکه درگیر پیچیدگیهای بصری و پرانتزهای بیپایان شوید. 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 مراجعه کنید.




گفتگو