وقتی نظریه مقولات به SQL تبدیل میشود: آشنایی با زبان برنامهنویسی catlang — Arrows to arrows, categories to queries (2025)
خلاصه
پروژهی catlang یک زبان برنامهنویسی تجربی است که کدهای خود را با عبور از مفاهیم نظریه مقولات (Category Theory) و ایجاز Arrowها، به یک کوئری عظیم SELECT در SQL کامپایل میکند. این پروژه نشان میدهد که چطور ساختارهای انتزاعی ریاضی میتوانند به عنوان واسطهای برای اهداف کامپایل غیرمتعارف به کار گرفته شوند.
برنامهنویسان اغلب به دنبال اهداف کامپایل عجیب و سرگرمکننده هستند. پروژهی جدیدی به نام catlang دقیقاً همین ایده را به شکل جذابی پیادهسازی کرده است؛ یک زبان برنامهنویسی که خروجی نهایی کامپایلر آن نه بایتکد یا ماشینکد، بلکه یک کوئریغولآسا و غولپیکر SELECT در SQL است. اجرای این کوئری روی PostgreSQL خروجی نهایی برنامه را تولید میکند.
پسزمینه و هدف از ساخت catlang
سازندهی این زبان در دوران استراحت خود تصمیم گرفته است ساختاری بسازد که کدهای سطح بالا را به SQL تبدیل کند. هدف اصلی، نوشتن یک زبان کوئری جدید نبوده، بلکه آزمایش قابلیتهای یک زبان برنامهنویسی واقعی است که زبان میانی (IL) آن مبتنی بر مفاهیم انتزاعی «نظریه مقولات» (Category Theory) است. با داشتن یک زبان میانی با معناشناسی جبری و دقیق، هدف این بوده که کامپایل کردن به هدفهای عجیب و غریب مانند SQL به کار سادهای تبدیل شود.
جزئیات فنی و نحوهی کار
برای درک نحوه عملکرد، در نظر بگیرید که چطور میتوان یک ساختار شبیه به حلقهی while را پیادهسازی کرد که مثلاً عددی را تا رسیدن به ۱۰۰ افزایش دهد. در catlang این کار با کمک نشانهگذاری Arrowها انجام میشود. کدهای نوشته شده ابتدا به یک زبان میانی تبدیل میشوند که پر از نمادهای ریاضی و یونیکد است؛ نمادهایی مانند ⟟ برای پایپ کردن نتایج یا عملگرهای مربوط به محصولات و مجموعهها.
هرکدام از این نمادهای انتزاعی دارای معناشناسی جبری بسیار ساده و مشخصی هستند. کامپایلر catlang با واسطهگری این زبان میانی، عبارات را «دسوگر» (Desugar) کرده و در نهایت آنها را به کدهای SQL ترجمه میکند. کوئری تولید شده شامل مجموعهای از عبارات WITH RECURSIVE، پیوندهای CROSS JOIN و مدیریت ساختارهای شرطی است که حلقهها و انشعابات برنامه را به زبان پایگاه داده شبیهسازی میکنند.
چرا این پروژه برای مهندسان اهمیت دارد؟
این پروژه فراتر از یک سرگرمی محض، قدرت و انعطافپذیری نظریه مقولات و طراحی کامپایلر را به نمایش میگذارد:
- جداسازی منطق از هدف کامپایل: با استفاده از یک زبان میانی مبتنی بر Category Theory، تغییر هدف کامپایل (Backend) از ماشینکد به پایگاه داده رابطهای امکانپذیر میشود.
- بررسی قابلیتهای SQL: این پروژه نشان میدهد که SQL به عنوان یک زبان اعلامی (Declarative)، تا چه حد توانایی اجرای منطقهای پیچیده رویهای و حلقههای بازگشتی را از طریق عبارات پیشرفته دارد.
- ارتباط میان مفاهیم ریاضی و مهندسی نرمافزار: کاربرد عملی Arrowها و تئوری مقولات در ساخت یک کامپایلر واقعی، دید عمیقتری نسبت به طراحی زبانها به توسعهدهندگان میدهد.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل