یک برنامهنویس حرفهای با ترکیب دو مفهوم عجیب در دنیای برنامهنویسی، یک GIF ساخته که وقتی اجرا میشود دقیقاً یک کپی از خودش تولید میکند. این فایل تصویری همزمان هم برنامه است و هم خروجی همان برنامه؛ یعنی اگر کد را اجرا کنید، نتیجه نهایی دقیقاً همان تصویری خواهد بود که برنامه از ابتدا در قالب آن نوشته شده است.
این پروژه توسط Yusuke Endoh، برنامهنویس و برنده مسابقات مختلف کدنویسی ساخته شده و نمونهای جذاب از چیزی است که در دنیای برنامهنویسی به آن کدنویسی تفننی یا Esoteric Programming گفته میشود. چنین مواقعی هدف برنامهنویس الزاماً ساخت سریعترین یا کاربردیترین نرمافزار نیست و گاهی خود محدودیتهای عجیب، بخشی از مسئله هستند.
GIF چگونه میتواند خودش کد باشد؟
برای درک این پروژه ابتدا باید با دو مفهوم Piet و Quine آشنا شویم. Piet یک زبان برنامهنویسی عجیب و عمداً غیرمعمول است که به جای اینکه کد آن مجموعهای از حروف و اعداد باشد، به شکل یک تصویر رنگارنگ و بلوکبندیشده نوشته میشود. نام این زبان نیز از Piet Mondrian، نقاش مشهور هلندی و یکی از چهرههای جنبش نئوپلاستیسیسم گرفته شده است.

در واقع در Piet، رنگها و نحوه قرارگیری بلوکهای رنگی نقش دستورهای برنامه را بازی میکنند. بنابراین چیزی که برای چشم انسان شبیه یک اثر هنری انتزاعی یا حتی یک QR Code رنگارنگ به نظر میرسد، برای کامپایلر در واقع یک برنامه کامپیوتری است.
از طرف دیگر، Quine به برنامهای گفته میشود که بدون دریافت ورودی خارجی، نسخهای دقیق از کد منبع خودش را تولید میکند. نکته مهم این است که برنامه نباید صرفاً فایل خودش را بخواند و آن را کپی کند؛ بلکه خروجی باید از منطق خود برنامه به دست بیاید و در نهایت با کد اولیه مو به مو یکسان باشد.
حالا این دو مفهوم را با هم ترکیب کنید تا به یک تصویر که خودش برنامه است و برنامهای که باید تصویر خودش را دوباره تولید کند برسید! نتیجه این کار در واقع همان Piet Quine است.
یک تصویر ۲۵۲×۱۸۹ پیکسلی که خودش را دوباره میسازد
اجرای این برنامه در نگاه اول چندان شبیه اجرای یک نرمافزار معمولی نیست. مفسر Piet ابتدا تصویر GIF را به عنوان برنامه دریافت میکند و سپس بخشهای مختلف آن، از جمله اطلاعات هدر فایل و پالت رنگها را پردازش میکند.
اما کار به همین سادگی نیست. فایل GIF علاوه بر اطلاعات تصویری، دادههای باینری، فشردهسازی و ساختار داخلی مخصوص خود را دارد. بنابراین برنامه باید طوری طراحی شود که هم این اطلاعات را به عنوان بخشی از ساختار فایل در نظر بگیرد و هم بتواند در نهایت همان فایل را دوباره تولید کند.
Endoh میگوید نخستین نمونه از این پروژه را در سال ۲۰۰۹ ساخته بود، اما نسخه اولیه بسیار بلند و عمودی بود و از نظر بصری چندان جذاب به نظر نمیرسید.
او برای بازسازی و کوچکتر کردن این پروژه حتی از Claude Code کمک گرفت تا نسخه قدیمی را تحلیل و بازسازی کند و سپس آن را به یک طراحی افقی تبدیل کرد. با این حال رسیدن به نسخه نهایی همچنان به تلاش زیادی برای کوچککردن عناصر گرافیکی و بهینهسازی ساختار برنامه نیاز داشت.
نتیجه نهایی یک تصویر GIF با ابعاد ۲۵۲×۱۸۹ پیکسل و نسبت تصویر ۴:۳ است که از بیرون یک گرافیک رنگارنگ ساده به نظر میرسد، اما در واقع یک برنامه کامل در دل خود دارد.
در نهایت باید گفت گاهی یک برنامهنویس عمداً خودش را در چارچوبی بسیار عجیب قرار میدهد و بعد تلاش میکند غیرممکنترین راهحل ممکن را پیدا کند؛ درست مثل ساختن تصویری که برای انسان یک GIF است، اما برای کامپیوتر یک برنامه و در نهایت خروجی همان برنامه است.













نظر خود را اضافه کنید.
برای ارسال نظر وارد شوید
ارسال نظر بدون عضویت در سایت