آیا در مورد Chicken ،Whitespace و LOLOCODE هیچ شناختی دارید یا چیزی شنیدهاید؟ اینها اسامی چند زبان برنامهنویسی عجیب و غریب هستند که به راحتی از صحنهٔ روزگار حذف شدند. زبانهای برنامهنویسی معمولاً به شکلی طراحی میشوند که کار را برای برنامهنویس راحتتر کنند اما این زبانها آنقدر سخت و نامتعارف بودهاند که اشک را از چشمان برنامهنویس جاری میساختند!
این دسته از زبانهای برنامهنویسی به عنوان زبانهای ایزوتریک و گیجکننده شناخته شده اند (زبانهای ایزوتریک آن دسته از زبانها هستند که برای گروه کوچکی از افراد جهت استفاده یا یادگیری طراحی شدهاند). حتی گاهیاوقات آنها را زبانهای برنامهنویسی بیگانه یا ترسناک هم خطاب میکنند که به نظر میرسد این هم بیدلیل نیست.
نگاهی به 10 زبان برنامهنویسی زیر بندازید و مطمئناً شما هم در مورد ترسناک بودن این زبانها با ما موافق خواهید بود (همچنین اگر علاقمند اینگونه زبانها هستید، میتوانید به مقالهٔ 5 زبان برنامهنویسی که یادگیریشان بسیار دشوار است! نیز مراجعه نمایید که در آن ۵ زبان برنامهنویسی بسیار دشوار را معرفی کردهایم).
Taxi
تاکسی نام یک زبان برنامهنویسی است که بیشتر شبیه به زبان نقشهکشی و مسیریابی است و برای یک مسافر مناسبتر است تا یک کدنویس! این زبان پیشرفتهٔ نقشه-محور، زبان رسمی مورد استفاده برای شهر Townsville استرالیا است که در آن زبانهای برنامهنویسی رایج با یک زبان مدرن نقشه-محور جایگزین شدهاند. متغیرها (Variables)، کلاسها (Classes) و توابع (Functions) در این زبان جایی ندارند و به جای آنها از مکانها (Places) یا شهرها (Cities) استفاده میشود.
شما در این زبان وظیفه دارید مسافری را که سوار تاکسی شده از مکانی به مکان دیگر انتقال دهید و با استفاده از دستورات برنامهنویسی مسیر انتقال را مشخص کنید. تاکسی برای حرکت به سوخت نیاز دارد لذا شما از مسافرین کرایه دریافت کرده و برای سوختگیری آن را خرج میکنید. به عنوان نمونه برنامهٔ Hello World نوشته شده با زبان Taxi داریم:
"Hello, World!" is waiting at the Writer's Depot.
Go to Writer's Depot: west 1st left, 2nd right, 1st left, 2nd left.
Pickup a passenger going to the Post Office.
Go to the Post Office: north 1st right, 2nd right, 1st left.
Go to the Taxi Garage: north 1st right, 1st left, 1st right.
ZOMBIE
زامبی یک زبان برنامهنویسی است که برای ساحرهها یا پیشگوها طراحی شده است (کسانی که در مورد مرگ، آینده و غیره پیشگویی میکنند). این زبان امکاناتی را برای برنامهنویس فراهم میآورد که با استفاده از آن میتواند اجساد مرده بسازد (چیزی شبیه به آبجکتها در زبانهای برنامهنویسی شییٔگرا)، آنها را به حرکت درآورد، روح آنها را کنترل کند و با استفاده از آن مسائل محاسباتی را حل کند. عدم همپوشانی در حافظهٔ سیستم و دسترسی غیرمجاز موجودات ترسناک به حافظه سیستم، در این زبان تضمین شده است.
در این زبان نیز از تعریف موجودیات (Entity) بهره گرفته خواهد شد. خطاهای دستوری بینهایت خطرناک خواهند بود چرا که ممکن است موجودات پلید از حوزهٔ استحفاضی CPU فرار کرده و در جهان خرابی و ویرانی به بار آورند! مقدار دادهها هیچگونه وابستگی به فرمت خاصی اعم از عدد صحیح، اعشاری، رشتهای و ... ندارند و میتوان از قواعد ریاضیاتی در مورد آنها استفاده کرد. به عنوان نمونه برنامهٔ Hello World نوشته شده با زبان ZOMBIE داریم:
HelloWorld is a zombie
summon
task SayHello
say "Hello, World!"
animate
animate
BIT
بیت زبان سطح پایین (نزدیک به زبان ماشین) و قدرتمندی است که به برنامهنویس دسترسی کامل را به استانداردهای کدگذاری ASCII و ساختارهای ماشینی دادهها میدهد. دسترسی و دستکاری دادهها در این زبان نسبت به زبانهای سطح بالا (نزدیک به زبان انسان) از پیچیدگی کمتری برخوردار است و میتوان از توابع مخصوص به این کار استفاده کرد. دو نوع داده در این زبان وجود دارد که عبارتند از:
- بیت
- آدرس بیت
مقدار دادهها در زبان بیت میتواند توسط دستورات و عملوندها تغییر یابند. نوع داده در این زبان در هنگام تعریف باید مشخص باشد و حتی این زبان از دستور GOTO پشتیبانی میکند و میتوان از تعداد نامحدود Whitespace یا Break Line در بین دستورات استفاده کرد. به عنوان نمونه برنامهٔ Hello World نوشته شده با زبان BIT داریم:
LINE NUMBER ZERO CODE PRINT ZERO GOTO ONE ONE ZERO ONE
LINE NUMBER ONE CODE PRINT ZERO GOTO ONE ZERO
LINE NUMBER ONE ONE CODE PRINT ZERO GOTO ONE ZERO ZERO ONE ZERO
LINE NUMBER ONE ZERO CODE PRINT ONE GOTO ONE ONE
LINE NUMBER ONE ONE ONE CODE PRINT ONE GOTO ONE ZERO ONE
LINE NUMBER ONE ZERO ONE CODE PRINT ZERO GOTO ONE ONE ZERO
LINE NUMBER ONE ONE ZERO CODE PRINT ONE GOTO ONE ZERO ZERO
LINE NUMBER ONE ZERO ZERO CODE PRINT ONE GOTO ONE ONE ONE ONE
LINE NUMBER ONE ONE ONE ONE CODE PRINT ZERO GOTO ONE ZERO ONE ONE
LINE NUMBER ONE ZERO ONE ONE CODE PRINT ZERO GOTO VARIABLE ONE
LINE NUMBER ONE ONE ZERO ONE CODE PRINT ONE GOTO ONE ONE ONE ZERO
LINE NUMBER ONE ONE ONE ZERO CODE PRINT ZERO GOTO ONE ZERO ZERO ONE
LINE NUMBER ONE ZERO ZERO ONE CODE PRINT ZERO GOTO ONE ZERO ONE ZERO
LINE NUMBER ONE ZERO ONE ZERO CODE PRINT ONE GOTO ONE ONE ZERO ZERO
LINE NUMBER ONE ONE ZERO ZERO CODE PRINT ZERO GOTO ONE ZERO ZERO ZERO
LINE NUMBER ONE ZERO ZERO ZERO CODE PRINT ZERO GOTO ONE ONE ONE ONE ONE
LINE NUMBER ONE ONE ONE ONE ONE CODE PRINT ZERO GOTO ONE ZERO ONE ONE ONE
LINE NUMBER ONE ZERO ONE ONE ONE CODE PRINT ZERO GOTO ONE ONE ZERO ONE ONE
LINE NUMBER ONE ONE ZERO ONE ONE CODE PRINT ONE GOTO ONE ONE ONE ZERO ONE
LINE NUMBER ONE ONE ONE ZERO ONE CODE PRINT ONE GOTO ONE ONE ONE ONE ZERO
LINE NUMBER ONE ONE ONE ONE ZERO CODE PRINT ZERO GOTO ONE ZERO ZERO ONE ONE
LINE NUMBER ONE ZERO ZERO ONE ONE CODE PRINT ZERO GOTO ONE ZERO ONE ZERO ONE
LINE NUMBER ONE ZERO ONE ZERO ONE CODE PRINT ONE GOTO ONE ZERO ONE ONE ZERO
LINE NUMBER ONE ZERO ONE ONE ZERO CODE PRINT ZERO GOTO ONE ONE ZERO ZERO ONE
LINE NUMBER ONE ONE ZERO ZERO ONE CODE PRINT ONE GOTO ONE ONE ZERO ONE ZERO
LINE NUMBER ONE ONE ZERO ONE ZERO CODE VARIABLE ONE EQUALS ONE ONE ONE ZERO ZERO GOTO ONE
LINE NUMBER ONE ONE ONE ZERO ZERO CODE VARIABLE ONE EQUALS ONE ZERO ZERO ZERO ONE GOTO ONE
LINE NUMBER ONE ZERO ZERO ZERO ONE CODE VARIABLE ONE EQUALS ONE ONE ONE ONE ZERO ONE GOTO ONE ONE
LINE NUMBER ONE ZERO ZERO ONE ZERO CODE PRINT ONE GOTO ONE ZERO ONE ZERO ZERO
LINE NUMBER ONE ZERO ONE ZERO ZERO CODE PRINT ONE GOTO ONE ONE ZERO ZERO ZERO
LINE NUMBER ONE ONE ZERO ZERO ZERO CODE PRINT ZERO GOTO ONE ZERO ZERO ZERO ZERO
LINE NUMBER ONE ZERO ZERO ZERO ZERO CODE PRINT ONE GOTO ONE ONE ONE ONE ONE ONE
LINE NUMBER ONE ONE ONE ONE ONE ONE CODE PRINT ONE GOTO ONE ZERO ONE ONE ONE ONE
LINE NUMBER ONE ZERO ONE ONE ONE ONE CODE PRINT ONE GOTO ONE ONE ZERO ONE ONE ONE
LINE NUMBER ONE ONE ZERO ONE ONE ONE CODE PRINT ONE GOTO ONE ONE ONE ZERO ONE ONE
LINE NUMBER ONE ONE ONE ZERO ONE ONE CODE PRINT ZERO GOTO VARIABLE ONE
LINE NUMBER ONE ONE ONE ONE ZERO ONE CODE PRINT ZERO GOTO ONE ONE ONE ONE ONE ZERO
LINE NUMBER ONE ONE ONE ONE ONE ZERO CODE PRINT ZERO GOTO ONE ZEROZERO ONE ONE ONE
LINE NUMBER ONE ZERO ZERO ONE ONE ONE CODE PRINT ONE GOTO ONE ZERO ONE ZERO ONE ONE
LINE NUMBER ONE ZERO ONE ZERO ONE ONE CODE PRINT ZERO GOTO ONE ZERO ONE ONE ZERO ONE
LINE NUMBER ONE ZERO ONE ONE ZERO ONE CODE PRINT ZERO GOTO ONE ZERO ONE ONE ONE ZERO
LINE NUMBER ONE ZERO ONE ONE ONE ZERO CODE PRINT ZERO GOTO ONE ONE ZERO ZERO ONE ONE
LINE NUMBER ONE ONE ZERO ZERO ONE ONE CODE PRINT ZERO GOTO ONE ONE ZERO ONE ZERO ONE
LINE NUMBER ONE ONE ZERO ONE ZERO ONE CODE PRINT ZERO GOTO ONE ONE ZERO ONE ONE ZERO
LINE NUMBER ONE ONE ZERO ONE ONE ZERO CODE PRINT ZERO GOTO ONE ONE ONE ZERO ZERO ONE
LINE NUMBER ONE ONE ONE ZERO ZERO ONE CODE PRINT ONE GOTO ONE ONE ONE ZERO ONE ZERO
LINE NUMBER ONE ONE ONE ZERO ONE ZERO CODE PRINT ONE GOTO ONE ONE ONE ONE ZERO ZERO
LINE NUMBER ONE ONE ONE ONE ZERO ZERO CODE PRINT ONE GOTO ONE ZERO ZERO ZERO ONE ONE
LINE NUMBER ONE ZERO ZERO ZERO ONE ONE CODE PRINT ZERO GOTO ONE ZERO ZERO ONE ZERO ONE
LINE NUMBER ONE ZERO ZERO ONE ZERO ONE CODE PRINT ONE GOTO ONE ZERO ZERO ONE ONE ZERO
LINE NUMBER ONE ZERO ZERO ONE ONE ZERO CODE PRINT ONE GOTO ONE ZERO ONE ZERO ZERO ONE
LINE NUMBER ONE ZERO ONE ZERO ZERO ONE CODE PRINT ONE GOTO ONE ZERO ONE ZERO ONE ZERO
LINE NUMBER ONE ZERO ONE ZERO ONE ZERO CODE VARIABLE ONE EQUALS ONE ZERO ONE ONE ZERO ZERO GOTO ONE ONE
LINE NUMBER ONE ZERO ONE ONE ZERO ZERO CODE PRINT ZERO GOTO ONE ONE ZERO ZERO ZERO ONE
LINE NUMBER ONE ONE ZERO ZERO ZERO ONE CODE PRINT ONE GOTO ONE ONE ZERO ZERO ONE ZERO
LINE NUMBER ONE ONE ZERO ZERO ONE ZERO CODE PRINT ONE GOTO ONE ONE ZERO ONE ZERO ZERO
LINE NUMBER ONE ONE ZERO ONE ZERO ZERO CODE PRINT ONE GOTO ONE ONE ONE ZERO ZERO ZERO
LINE NUMBER ONE ONE ONE ZERO ZERO ZERO CODE PRINT ZERO GOTO ONE ZERO ZERO ZERO ZERO ONE
LINE NUMBER ONE ZERO ZERO ZERO ZERO ONE CODE PRINT ZERO GOTO ONE ZERO ZERO ZERO ONE ZERO
LINE NUMBER ONE ZERO ZERO ZERO ONE ZERO CODE PRINT ONE GOTO ONE ZERO ZERO ONE ZERO ZERO
LINE NUMBER ONE ZERO ZERO ONE ZERO ZERO CODE PRINT ZERO GOTO ONE ZERO ONE ZERO ZERO ZERO
LINE NUMBER ONE ZERO ONE ZERO ZERO ZERO CODE VARIABLE ONE EQUALS ONE ONE ZERO ZERO ZERO ZERO GOTO ONE
LINE NUMBER ONE ONE ZERO ZERO ZERO ZERO CODE PRINT ZERO GOTO ONE ONE ONE ONE ONE ONE ONE
LINE NUMBER ONE ONE ONE ONE ONE ONE ONE CODE PRINT ONE GOTO ONE ZERO ZERO ZERO ZERO ZERO
LINE NUMBER ONE ZERO ZERO ZERO ZERO ZERO CODE PRINT ONE GOTO ONE ZERO ONE ONE ONE ONE ONE
LINE NUMBER ONE ZERO ONE ONE ONE ONE ONE CODE PRINT ZERO GOTO ONE ONE ZERO ONE ONE ONE ONE
LINE NUMBER ONE ONE ZERO ONE ONE ONE ONE CODE PRINT ZERO GOTO ONE ONE ONE ZERO ONE ONE ONE
LINE NUMBER ONE ONE ONE ZERO ONE ONE ONE CODE PRINT ONE GOTO ONE ONE ONE ONE ZERO ONE ONE
LINE NUMBER ONE ONE ONE ONE ZERO ONE ONE CODE PRINT ZERO GOTO ONE ONE ONE ONE ONE ZERO ONE
LINE NUMBER ONE ONE ONE ONE ONE ZERO ONE CODE PRINT ZERO GOTO ONE ONE ONE ONE ONE ONE ZERO
LINE NUMBER ONE ONE ONE ONE ONE ONE ZERO CODE PRINT ZERO GOTO ONE ZERO ZERO ONE ONE ONE ONE
LINE NUMBER ONE ZERO ZERO ONE ONE ONE ONE CODE PRINT ZERO GOTO ONE ZERO ONE ZERO ONE ONE ONE
LINE NUMBER ONE ZERO ONE ZERO ONE ONE ONE CODE PRINT ONE GOTO ONE ZERO ONE ONE ZERO ONE ONE
LINE NUMBER ONE ZERO ONE ONE ZERO ONE ONE CODE PRINT ZERO GOTO ONE ZERO ONE ONE ONE ZERO ONE
LINE NUMBER ONE ZERO ONE ONE ONE ZERO ONE CODE PRINT ZERO GOTO ONE ZERO ONE ONE ONE ONE ZERO
LINE NUMBER ONE ZERO ONE ONE ONE ONE ZERO CODE PRINT ZERO GOTO ONE ONE ZERO ZERO ONE ONE ONE
LINE NUMBER ONE ONE ZERO ZERO ONE ONE ONE CODE PRINT ZERO GOTO ONE ONE ZERO ONE ZERO ONE ONE
LINE NUMBER ONE ONE ZERO ONE ZERO ONE ONE CODE PRINT ONE
Unlambda
آنلامدا زبانی مرکب از نمونه توابع مبهم و عجیب است. در این زبان هر چیزی به صورت تابع (Function) تعریف میشود حتی دادهها و بسیاری از ویژگیها در این زبان حذف شدهاند. برای مثال، در این زبان نمیتوان دادهها را ذخیره کرده و یا متغیر تعریف کرد. بدتر از آن، شما در این زبان میتوانید تابعی دلخواه بسازید اما نمیتوانید آن را نامگذاری و ذخیره کنید!
آنلامدا فقط با توابع سر و کار دارد. هر تابع به عنوان ورودی یا آرگومان، تابع دیگری را دریافت و در خروجی نیز تابع دیگری را برمیگرداند. در این زبان به شما اجازهٔ کار با دیتا استراکچر و چیزهای شبیه به آن داده میشود اما باید همه اینها را به عنوان توابع همهکاره تعریف کنید. خلاصهٔ کلام این که هر چیزی در این زبان یک تابع است و بس! به عنوان نمونه برنامهٔ Hello World نوشته شده با زبان Unlambda داریم:
```s``sii`ki
``s``s`ks
``s``s`ks``s`k`s`kr
``s`k`si``s`k`s`k
`d````````````.H.e.l.l.o.,. .W.o.r.l.d.!
k
k
`k``s``s`ksk`k.*
Java2K
Java2K یک زبان احتمالات است که بر پایهٔ قوانین طبیعت و سرشت جهان ساخته شده است؛ یعنی هیچ چیز مطلقی وجود ندارد و هر چیزی احتمال دارد. این زبان آنچه را که شما صراحتاً میخواهید انجام نمیدهد حتی توابعی که برای این زبان در نظر گرفته شده است به صورت کاملاً عجیب و غریبی اجرا میشوند؛ مثلاً اگر شما قرار است با استفاده از تابع ()Pow عددی را به توان 2 برسانید، ممکن است یا احتمال دارد که نتیجه چیزی غیر از انتظار شما باشد.
برنامهٔ شما در این زبان همواره از دو آرگومان استفاده میکند (حتی اگر شما به یک آرگومان نیاز داشته باشید). در این زبان دو نوع عدد وجود دارد: یکی عدد مرتبط با آبجکت، دومی مقدار صحیح آن. برای تمام توابع در Java2K دستورات مختلفی وجود دارد و در هنگام Call (کال به معنی فراخوانی) و اجرا، به صورت تصادفی یکی از آنها انتخاب شده و نتیجه را به شما میدهد؛ نتیجهای که بر اساس احتمال و تصادف خواهد بود.
محدودیتهای زیادی بر روی کلمات کلیدی یا رزرو شده و توابع وجود دارد. همچنین این زبان از Garbage Collector همانند جاوا برای آزادسازی حافظهٔ اشغال شده بهره میگیرد. به عنوان نمونه برنامهٔ Hello World نوشته شده با زبان Java2K داریم:
1 1 /125 /131 /119 /125 /11 6/*/_\/_\/125 /13 2
/*/_\/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2
/*/_\/_\\/119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/
_\/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/
_\/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/
_\/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/
_\/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/
_\/_\\/119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\
\\\\\\\/*\1 1 /125 /119 /11 6/*/_\/13 2/*/_\\/
125 /131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\\
/125 /131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_
\/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_
\/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_
\/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_
\/_\\/119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\
\\\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\\
\\\\\\\/*\1 1 /125 /131 /119 /125 /11 6/*/_\/_\
/125 /13 2/*/_\/_\\/119 /125 /11 6/*/_\/_\/
125 /13 2/*/_\/_\\\/125 /131 /119 /125 /11 6/*/
_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*/
_\/_\/125 /13 2/*/_\/_\\/119 /125 /11 6/*/_\/_\
/125 /13 2/*/_\/_\\\\/125 /131 /119 /125 /11 6/
*/_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/
*/_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/
*/_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/
*/_\/_\/125 /13 2/*/_\/_\\/119 /125 /11 6/*/_\/
_\/125 /13 2/*/_\/_\\\\\\/131 /119 /125 /11 6/*
/_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*
/_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*
/_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*
/_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*
/_\/_\/125 /13 2/*/_\/_\\/119 /125 /11 6/*/_\/_
\/125 /13 2/*/_\/_\\\\\\\\\\/*\1 1 /125 /131 /
119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/119 /
125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\\/125 /
131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/
131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/
119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\\\/
125 /131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\\
\\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/
_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/
_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/
_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/
_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/
_\\/119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\\\
\\\\\\/*\1 1 /125 /119 /11 6/*/_\/13 2/*/_\\/
125 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/
125 /131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\\
/125 /131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_
\/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_
\/_\\/119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\
\\/125 /131 /119 /125 /11 6/*/_\/_\/125 /13 2/*
/_\/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*
/_\/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*
/_\/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*
/_\/_\\/119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_
\\\\\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/
_\/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/
_\/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/
_\/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/
_\/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/
_\/_\\/119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\
\\\\\\\\\\\/*\1 1 /125 /131 /119 /125 /11 6/*/_
\/_\/125 /13 2/*/_\/_\\/119 /125 /11 6/*/_\/_\/
125 /13 2/*/_\/_\\\/125 /131 /119 /125 /11 6/*/
_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*/
_\/_\/125 /13 2/*/_\/_\\/119 /125 /11 6/*/_\/_\
/125 /13 2/*/_\/_\\\\/131 /119 /125 /11 6/*/_\/
_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*/_\/
_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*/_\/
_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*/_\/
_\/125 /13 2/*/_\/_\\/119 /125 /11 6/*/_\/_\/
125 /13 2/*/_\/_\\\\\\\\/*\1 1 /131 /119 /125 /
11 6/*/_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /
11 6/*/_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /
11 6/*/_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /
11 6/*/_\/_\/125 /13 2/*/_\/_\\/119 /125 /11 6/
*/_\/_\/125 /13 2/*/_\/_\\\\\\/*\1 1 /125 /
119 /11 6/*/_\/13 2/*/_\\/125 /119 /125 /11 6/*
/_\/_\/125 /13 2/*/_\/_\\/125 /131 /119 /125 /
11 6/*/_\/_\/125 /13 2/*/_\/_\\/119 /125 /11 6/
*/_\/_\/125 /13 2/*/_\/_\\\/125 /131 /119 /
125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/131 /119 /
125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/131 /119 /
125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/119 /125 /
11 6/*/_\/_\/125 /13 2/*/_\/_\\\\\/131 /119 /
125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/131 /119 /
125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/131 /119 /
125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/131 /119 /
125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/131 /119 /
125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/119 /125 /
11 6/*/_\/_\/125 /13 2/*/_\/_\\\\\\\\\\\/*\
1 1 /125 /119 /11 6/*/_\/13 2/*/_\\/125 /119 /
125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/125 /131 /
119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/119 /
125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\\/125 /
131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/
131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/
119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\\\/
125 /131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\\
\\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/
_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/
_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/
_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/
_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/
_\\/119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\\\
\\\\\\\\/*\1 1 /125 /119 /125 /11 6/*/_\/_\/
125 /13 2/*/_\/_\\/125 /131 /119 /125 /11 6/*/_
\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*/_
\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*/_
\/_\/125 /13 2/*/_\/_\\/119 /125 /11 6/*/_\/_\/
125 /13 2/*/_\/_\\\\\/125 /131 /119 /125 /11 6/
*/_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/
*/_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/
*/_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/
*/_\/_\/125 /13 2/*/_\/_\\/119 /125 /11 6/*/_\/
_\/125 /13 2/*/_\/_\\\\\\/131 /119 /125 /11 6/*
/_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*
/_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*
/_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*
/_\/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*
/_\/_\/125 /13 2/*/_\/_\\/119 /125 /11 6/*/_\/_
\/125 /13 2/*/_\/_\\\\\\\\\\/*\1 1 /125 /131 /
119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/119 /
125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\\/125 /
131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/
131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\/
119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\\\/
125 /131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\
/_\\/119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\\
\\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/
_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/
_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/
_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/
_\\/131 /119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/
_\\/119 /125 /11 6/*/_\/_\/125 /13 2/*/_\/_\\\\
\\\\\\/*\1 1 /125 /131 /119 /125 /11 6/*/_\/_\/
125 /13 2/*/_\/_\\/119 /125 /11 6/*/_\/_\/125 /
13 2/*/_\/_\\\/125 /131 /119 /125 /11 6/*/_\/_\
/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*/_\/_\
/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*/_\/_\
/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*/_\/_\
/125 /13 2/*/_\/_\\/119 /125 /11 6/*/_\/_\/
125 /13 2/*/_\/_\\\\\\/131 /119 /125 /11 6/*/_\
/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*/_\
/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*/_\
/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*/_\
/_\/125 /13 2/*/_\/_\\/131 /119 /125 /11 6/*/_\
/_\/125 /13 2/*/_\/_\\/119 /125 /11 6/*/_\/_\/
125 /13 2/*/_\/_\\\\\\\\\/*\
Deadfish
Deadfish زبانی تفسیری است که تنها در چند ساعت با استفاده از زبان برنامهنویسی C نوشته شده است. Deadfish در کل 4 دستور دارد و همهٔ دستورات خروجی هستند و هیچگونه دستور ورودی ندارد؛ برای همین آن را زبانی مفرد مینامیم. همچنین این زبان Case-Sensitive است؛ یعنی به کوچکی و بزرگی حروف حساس است.
اگرچه این زبان هر نوع دستوری را نمیپذیرد اما هیچ گونه گزارش خطایی را هم در معرض دید دولوپر قرار نمیدهد و فقط به عنوان خروجی به ازای هر خطا یک خط جدید برگشت داده میشود. نام این زبان Deadfish (ماهی مرده) انتخاب شده است چرا که برنامهنویسی با این زبان آنقدر ناخوشایند است که شما احساس میکنید در حال خوردن ماهی مردهٔ فاسد و گندیدهای هستید! به عنوان نمونه برنامهٔ Hello World نوشته شده با زبان Deadfish داریم:
iisiiiisiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiooiiio
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddo
dddddddddddddddddddddsddoddddddddoiiioddddddoddddddddo
Emmental
ایمنتال یک زبان خود-تغییر بوده و این زبان از نوع زبانهای پشتهای (Stack-based) است که فقط 13 دستور دارد و استکها شامل کارکترهای ASCII هستند. اگرچه به صورت مستقیم در این زبان شرطی تعریف نشده است، اما با استفاده از دستور eval یا ? میتوان قابلیت دستورات شرطی را به آن افزود.
اگرچه به نظر میرسد این زبان نسبت به سایر زبانهای این لیست پیچیدهتر و عجیبتر است اما دستورات زبان انگلیسی آن از پیچیدگی کمتری نسبت به سایر زبانها برخوردار است. شما میتوانید محاسبات منطقی انجام دهید، پشته یا استک تعریف کنید و همچنین از صف نیز استفاده کنید. به عنوان نمونه برنامهٔ Hello World نوشته شده با زبان Emmental داریم:
;#58#126#63#36!;#46#36#!;#0#1!;#0#2!;#0#3!;#0#4!;#0#5!;#0#6!;#0#7!#0#33#100#108#114#111#119#32#44#111#108#108#101#72$
Whenever
Whenever یک زبان برنامهنویسی است که هیچ دنبالهای از دستورات را به صورت عادی اجرا نمیکند و هر وقت دوست داشته باشد آنها را اجرا میکند و هیچگونه ربطی به مکان دستور نوشته شده توسط برنامهنویس ندارد. تصور کنید که ایمیل با غلطهای املایی بسیاری را برای رئیس خود فرستادهاید بدونه اینکه آن را بازبینی و اصلاح کنید. این کابوس تنها و تنها با استفاده از زبان Whenever میتواند اتفاق افتد!
Whenever هیچگونه اهمیتی به متغیرها (Variable) و دیتا استراکچرها نمیدهد چون اصلاً هیچ توجهی به روند اجرای دستورات و ترتیب آنها ندارد. اما جالب آن است که از Constructor پشتیبانی میکند و همچنین برخلاف بعضی از زبانهای این لیست، میتوان در آن از رشتههای متنی (String) و دستورات مرکب استفاده کرد. به عنوان نمونه برنامهٔ Hello World نوشته شده با زبان Whenever داریم:
1 print("Hello, World!");
INTERCAL
اینترکال زبانی است که به صورت همزمان چند زبان دیگر را مورد انتقاد قرار میدهد. اینترکال با استفاده از دستورات بیمعنی، برنامهنویس را گیج میکند؛ دستوراتی مانند PLEASE ،FORGET ،IGNOR و غیره. برنامهنویس به نشانهٔ ادب باید از دستور PLEASE استفاده کند که در غیر این صورت کامپایلر خطا گزارش میدهد.
اینترکال به صورت کلی با زبانهای معرفی شده در این لیست تفاوت دارد اما برخلاف برخی از آنها، از دستورات کنترلی، عملوندها و دیتا استراکچرها پشتیبانی میکند. اما باز هم پیچیدگی عجیب و غریب خود را برای اینگونه از دستورات دارد. به عنوان برنامهٔ Hello World نوشته شده با زبان INTERCAL داریم:
DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #238
DO ,1 SUB #2 <- #108
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
DO ,1 SUB #7 <- #48
PLEASE DO ,1 SUB #8 <- #22
DO ,1 SUB #9 <- #248
DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #162
PLEASE READ OUT ,1
PLEASE GIVE UP
Orthogonal
آخرین زبان عجیب و غریب این لیست Orthogonal است که در آن شما میتوانید دستورات را با هر ترتیبی که دوست دارید، اجرا کنید. محیط آن شامل دو آبجکت است: آبجکت Grid (توری) و آبجکت Stack (پشته). گرید معادل آرایهها (Array) است و پشته هم که مانند Stack در زبانهای شناخته شده است و احتمالاً در مورد آن شنیده باشید.
Orthogonal برخلاف زبانهای کامپیوتری مختلف، یک زبان دوبعدی است و دستورات آن در دستههای عملوندها و مسیرها قرار میگیرد. این زبان راهنماهای بیشتر به نسبت سایر زبانهای معرفی شده در این لیست در اختیار برنامهنویس قرار میدهد و همچنین از مقادیر دادهای و متغیرها نیز پشتیبانی میکند. به عنوان برنامهٔ Hello World نوشته شده با زبان Orthogonal داریم:
0 'd' 'l' 'r' 'o' 'w' ' ' ',' 'o' 'l' 'l' 'e' 'h' s 0 c 0 ret
آیا شما حاضرید با چنین زبانهای برنامهنویسی کدنویسی کنید و آیا به غیر از زبانهای فوق الذکر، زبان برنامهنویسی عجیب و غریب دیگری میشناسید؟ نظرات و دیدگاههای خود را با ما و سایر کاربران سکان آکادمی به اشتراک بگذارید.