G gurst در danieltemkin.com

زبان برنامه‌نویسی Folders؛ وقتی کدهای شما فقط پوشه‌های تو در تو هستند

۳ دقیقه مطالعه ۱۵۷ امتیاز ۲۶ نظر ۲۴ مهر ۱۴۰۵

زبان برنامه‌نویسی Folders؛ وقتی کدهای شما فقط پوشه‌های تو در تو هستند — The Folders Programming Language

خلاصه

زبان برنامه‌نویسی Folders یک زبان غیرمتنی و عجیب (Esolang) است که در آن کدهای برنامه صرفاً از ساختار تو در تو و ترتیب پوشه‌ها تشکیل شده‌اند. این ایده جذاب و جنون‌آمیز، نشان می‌دهد که چگونه می‌توان منطق محاسباتی را بدون نوشتن حتی یک خط متن پیاده‌سازی کرد.

معرفی زبان Folders و ایده ساختارزدایی از کد

در دنیای توسعه نرم‌افزار، زبان‌های عجیب یا همان Esoteric Programming Languages (Esolangs) همیشه بستر مناسبی برای آزمایش ایده‌های دیوانه‌وار بوده‌اند. زبان Folders که توسط Daniel Temkin (خالق زبان‌های Rivulet و Velato) توسعه یافته، یکی از همین پروژه‌هاست. در این زبان، هیچ فایل متنی، سورس‌کدی به مفهوم سنتی و خطوط فرمانی وجود ندارد. برنامه شما صرفاً مجموعه‌ای از پوشه‌ها (Directories) است که به صورت تو در تو درون یکدیگر قرار گرفته‌اند.

ایده اولیه این زبان با الهام از زبان معروف Whitespace شکل گرفت؛ زبانی که در آن کاراکترهای نامرئی مانند فاصله و تب کدهای اصلی را تشکیل می‌دهند. اما Folders یک گام فراتر می‌گذارد و این سوال را مطرح می‌کند: «چه چیزی از یک فایل بدون متن خالی‌تر است؟» پاسخ این است: پوشه خالی.

جزئیات فنی و نحوه کارکرد

در زبان Folders، نام پوشه‌ها (به جز در تعیین ترتیب الفبایی) نادیده گرفته می‌شود. در عوض، منطق برنامه از طریق «تعداد» و «ترتیب قرارگیری» زیرپوشه‌ها (Subfolders) تعریف می‌شود:

  • دستورات (Commands): تعداد پوشه‌های موجود در اولین فرزند (به ترتیب الفبا) نوع دستور را مشخص می‌کند. آرگومان‌ها با پوشه‌های بعدی تعیین می‌شوند.
  • عبارات (Expressions): عبارات نیز ساختار مشابهی دارند و با تعداد پوشه‌های درون اولین زیرپوشه شناخته می‌شوند.
  • سیستم فایل به عنوان حافظه (Folders FS): مفسر Folders فایل موقت ایجاد نمی‌کند. داده‌های موقت یا داده‌های ورودی/خروجی در قالب پوشه‌هایی ذخیره می‌شوند که نام خود پوشه، مقدار داده را در خود نگه می‌دارد. خالق این زبان به شوخی پیشنهاد می‌کند که با این روش می‌توانید تمام داده‌های خود را در پوشه‌ها کدگذاری کنید و نگران فضای دیسک نباشید!

یک برنامه در Folders در واقع یک لیست تو در توی خاتمه‌یافته با تهی (nil-terminated nested list) است که از نظر ساختاری شباهت زیادی به آرایه‌های تو در تو در JSON دارد. این ساختار درخت‌های کاملاً مرتب‌شده‌ای را می‌سازد که می‌توان آن‌ها را به شکل‌های دیگری مانند نقشه‌های خطی (Contour maps)، درخت خانواده یا مسیرهای یک مارپیچ نیز تجسم کرد.

نگاه جامعه برنامه‌نویسان در Hacker News

این پروژه واکنش‌های بسیار جالبی را در Hacker News به همراه داشت و کاربران با نظرات طنزآمیز و شگفت‌زده از آن استقبال کردند:

  • برخی کاربران با تعجب پرسیدند چه میزان تلاش لازم است تا حتی یک دستور ساده در این زبان نوشته شود و به شوخی از این ایده ابراز وحشت کردند.
  • کاربری اشاره کرد که این نوع پروژه‌ها از آن دست چیزهایی هستند که هوش مصنوعی هیچ‌گاه به فکر ساختن1 آن‌ها نمی‌افتد.
  • یکی دیگر از کاربران یادآور شد که این ابزار را سال‌ها پیش در مسابقات CTF دیده و آن را فوق‌العاده خنده‌دار و در عین حال خلاقانه توصیف کرده است.

چرا این پروژه برای مهندسین اهمیت دارد؟

اگرچه Folders یک ابزار کاربردی برای توسعه محصولات تجاری نیست، اما از دیدگاه مهندسی نرم‌افزار، تمرینی فوق‌العاده برای درک عمیق مفهوم «ساختار داده» و «زبان» است. این پروژه به ما یادآوری می‌کند که کامپیوترها در نهایت با مفاهیم انتزاعی و روابط ساختاری سر و کار دارند و نحوه نمایش متن یا کد، تنها یک قرارداد مرسوم است، نه یک ضرورت مطلق.

این مطلب به‌صورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل

خبرهای فناوری در قالب پست و ویدیوی کوتاه، در اینستاگرام هکرنیوز بلاگ. به‌زودی
هر خبر به محض انتشار، به‌همراه پادکست روزانه در کانال تلگرام هکرنیوز بلاگ.