Наталья Кайда 20 февраля 2024

🐱🎨🙏🤖 10 самых странных языков программирования, о которых вы никогда не слышали

Эзотерические языки разрабатывают в концептуальных, экспериментальных и развлекательных целях. Их общая черта – максимально запутанный и странный синтаксис, понятный только посвященным. В этой подборке – языки, которые выбрали бы Ходор, доктор Лектер, Малевич, Джеймс Бонд, Терминатор и Луи Армстронг, если бы решили войти в айти.
🐱🎨🙏🤖 10 самых странных языков программирования, о которых вы никогда не слышали

Brainfuck, пожалуй, самый известный язык из эзотерических: о нем слышали даже непосвященные. Однако Brainfuck – не первый шуточный ЯП, и далеко не единственный: энциклопедия Esolang уже насчитывает 4611 эзотерических языков, а самым первым прикольным языком был INTERCAL, созданный в далеком 1972 году.

INTERCAL – язык вежливых программистов

Язык программирования INTERCAL
Язык программирования INTERCAL

Программа на INTERCAL состоит из списка инструкций. Перед каждой инструкцией можно (опционально) указывать метку строки в скобках, а за меткой следует ключевое слово DO (ВЫПОЛНЯЙ), PLEASE (ПОЖАЛУЙСТА) или PLEASE DO (ПОЖАЛУЙСТА, ВЫПОЛНЯЙ). Это идентификатор инструкции.

В INTERCAL есть правило вежливости – от 1/3 до 1/5 всех инструкций должны содержать вежливые идентификаторы PLEASE, PLEASE DO, или особо элегантный вариант – PLEASEN'T. В то же время инструкции DON'T (НЕ ВЫПОЛНЯЙ) или PLEASE DON'T (ПОЖАЛУЙСТА, НЕ ВЫПОЛНЯЙ) ничего не выполняют, пока не будут восстановлены командой REINSTATE. Можно указать шанс выполнения инструкции в процентах – DO %50.

Если у инструкции нет метки, и она не похожа на исполняемые инструкции INTERCAL, она вообще никогда ничего не делает. Так создаются комментарии – PLEASE NOTE.

INTERCAL обладает Тьюринг-полнотой, так что при желании на нем можно писать вполне себе прикладные приложения. Есть, например, рабочий веб-фреймворк на основе INTERCAL, с командами типа ick (компилирует код) и gross (запускает сервер). За долгие годы своего существования INTERCAL обзавелся преданным сообществом поклонников, множеством интерпретаторов/компиляторов и новыми командами COME FROM и DO COME FROM.

Вот пример вычисления чисел Фибоначчи на INTERCAL:

            DO .9 <- #16
    DO .10 <- #0
    DO .11 <- #1

(1) PLEASE READ OUT .11
    DO .1 <- .10
    DO .2 <- .11
    PLEASE (1009) NEXT
    DO .10 <- .11
    DO .11 <- .3

    DO (3) NEXT
    DO (1) NEXT

(3) DO (4) NEXT
    PLEASE GIVE UP

(4) DO .1 <- .9
    DO .2 <- #1
    PLEASE (1010) NEXT
    DO .9 <- .3
    DO .1 <- '.9~.9'~#1
    PLEASE (1020) NEXT
    DO RESUME .1
    

Результат выводится в римских цифрах (ведь INTERCAL не ищет легких путей!):

        I

I

II

III
V
VIII
XIII
XXI
XXXIV

LV
LXXXIX
CXLIV
CCXXXIII
CCCLXXVII
DCX
CMLXXXVII
    
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека программиста»

Malbolge – самый сложный язык программирования в мире

Язык программирования Malbolge
Язык программирования Malbolge

Malbolge – язык для виртуальной машины, работающей в троичной системе счисления. Он не имеет стандартной синтаксической структуры, команды в нем выполняются произвольно, код зашифрован, а вся свободная память интерпретатора заполняется пустыми данными. Названный в честь восьмого круга Ада, Malbolge оправдывает свое имя на 100%: он настолько сложен, что даже его создатель не смог написать на нем ни одной программы.

Разработка первой Hello, World на Malbolge заняла 2 года и потребовала использования другой программы (на Lisp), выполнившей поиск по множеству возможных вариантов кода:

        (=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<
    

Сейчас для написания кода на Malbolge энтузиасты используют более практичные подходы – подробная инструкция изложена здесь, есть и слегка более понятная версия языка (wimpmode) – Dis. Появился даже Тьюринг-полный диалект языка, Malbolge Unshackled, который во многих смыслах страшнее оригинала – вот пример программы Hello, World, которая работает на оригинальном Malbolge и на диалекте Malbolge Unshackled:

        bCBA@?>=<;:9876543210/.-,I*)(E~%$#"RQ}|{zyxwvutsrD0|nQl,+*)(f%dF"a3_^]
\[ZYXWVUTSRQJmNMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#dc~}|_^yrwZu
tsrqpinPlOjihgf_dcEaD_^]\UZYX:V9TSRQPONGLK.IHGF?DCB$@#>=<;4987w/v3210/
.-,+$k('&%|#"!~w`{zyxwputslUponmlkjiKgf_Hcba`_^]\[ZYXWP9TSRQPONMFKJCHA
*EDCBA@?>=<|:98y6543210).-,%*#j'&%$#"!~}|^ty\wvutslkTonmlkjcLafedc\aD_
X]\[TY<WVOTSLQ4ONMFKDC,GFEDC<A$9>=<;49z765.3,+r/.-,l*)(!h%$#"!~}|{zyxw
vunWrqponmlkjihgfed]Fa`_^]\[ZYXW9UTSRK4ONMLKJIHGFEDCBA@?8!<;:987654321
0/.-,%l)('&%$#"!~}|^t]xqvYnsrqpinQlejihafIdc\a`Y^A\[ZSXQ:8NSRQJ3NMLKJI
HGFEDC%;$?8=<}49876543210qp',+*)('&%$#"!b}`{zyrwpuXmrqpohmlOdihgfedcba
`_^]\?=S<WPU8SRQJOHM0EJIHG@ED'<A@?>=<;:987654us+r/(-,m*#('&%$#"!~a`{ty
xwvutsrqpoRmPkjibg`eHcb[`_X]@UZYXWPUT7RKPONMLKJIHGFED'%;$?8=~;:387054u
2+0/.-,+*)('&%$ecyb}v{z]xwputsrqponQPkjchgfedcba`_B]@[ZSXWPU8SLQPOHML/
JIBGFEDCBA@?>=<}{3z705v321*/(om%*)j'&}$#"!~}|{zyxwZXnWrkpoRmlkdihgfedc
FE`_^W\[ZYXWVUT7R5PONGLEJ-HG@ED=B%@9>=<5:9z765.3210/.-,+*)jh~g${"c~}v{
zsxwZutslqponmlkjihgJH^Gb[`_B]\[ZSXWVUTS65PONMFKJIHGFED'B%@?>7<5:9z765
4-210/.-,+*)jh~g${dbx}|_zyxwputsrqponmlOMcLg`edGba`_^W\[ZYX;:UTSRQJONM
LKJI,G*EDC<A:?"=<5:927x5.321*/p',+*)"'&g$#"!~w|{zyxwvutWUkTohmlOjihgf_
dcba`_^]\?=S<WPUT7RQPONMLEJIH+*EDCBA@?8=<;:9z7x543,1*/.o,+*)('&}$#"!~}
|_]s\wputWrqponmlejihgfedGE[D_X]\?ZYXWVUTSLQP32MLKJIHGF?DCBA$?"=<;4927
x54-21*/p-&+*)"'h}$#"!x}|_zyxwvutslqponmlOMcLg`edGba`_^]\[TYXWVUT75K4O
HML/JIHGFEDCBA@9"=~;:987654321*/p-n+*)"'~%f#"y~}v{^sxwvunsrUponmlkjihg
f_dcbECYB]V[>YXQVUNSR5PONMLKJIHGF?DCB%#9"=6;:{876543210/.-&m*)j'&%$#"!
~}|{zs\wZutslqjoRmfkjibgfIdcba`_^]\[ZYRWV97M6QJ31GLK.IHGFEDCBA@?>7<;|z
2y6/43t10/.-,+*)('&%|e"!~a|{zyxwvutsrqpiRmlOjibgf_dGb[`_^W\[>YXWVUTSRQ
PONMFK.,B+F?DC&A@?>=<;:98765.3tr*q.',+l)('&%$#"!~}|{zs\wvutWrqponmlkji
hgfe^Gba`C^]\UZSX;VUNSRKP3HMLKJCHG*EDCBA@?>=<;:981xv.u2+0/p-,+*)('&%$#
"!~w`^t]xqvuXsrqponmlkjihgfe^Gba`_^A\[ZYXWVUTSRQPONG0KJIH+FED=B;@?"=<;
:9876543210/(o,l$k(!hf|#"c~}|{zyxwvutsrqpiRmOeNibgfIdcba`_^]\[ZYXWVUN7
RQPONM0KJIHGFEDCBA@?>=<5|98765v3,10/(-n%*)('~%$e"!~}|{zyxwvutsrqjSnmOe
NibgJe^cbaZ_^A\[ZYXWVUTSRQPONMF/JI+A*E>CB%@?>=<;:9876543210)p-,+*)('h%
$#"!~}|{zyxwvutslUponmlkNihg`e^cbE`_^]\[ZYXWVUTSRQPI2MLK-C,G@E(CB;@?8=
~;498705v-210/(om%*)j'&%$#"!~}|{zyxwvunWrqpRhQlejiLgfedcba`_^]\[ZYXWVO
87RQ4ONMLKJIHGFEDCBA@?>7~}:{876/4-2s0/(-,%*k"'&%${"!b}|{zyxwvutsrqponm
leNihgfH^Gb[`C^]V[ZSXW:UTSRQPONMLKJIHGFED=&A@?>~6}:387x543210/.-,+*)('
&%$#zc~a|{^yxwvutsrqponmlkjihg`IdGbE`_X]\UZ=XQVUTMRQ4ONMLKJIHGFEDCBA@?
>=6}:9876v.u2+0q.-,%*#jh~%$e"!~}|{zyxwvutsrqpongPkjihgI_Hc\a`C^]\?TY<W
VUTSR5PO2MLK.CH+FEDCBA$?"=<;4927x54-21*/p-&+*)"'h}$#"!x}|_zyx[puXsrqpo
nmlkjLbKf_dGba`Y^W\?ZSXWVOTS6QPO2GL/JIHGFEDCBA#9"=6;:{876w4321*/.o,+*)
('&%$#"c~}`{zy\wvutmrqTonmlkjihgfeHcFa`_X]V[>YRWVUNS6KPONMFKJ-HGF)DCBA
:?>!<;:9876543210/.n&m*#('h%$#d!~}|uzy\wvutsrqponmlkjiKaJe^cbED_XA\[ZY
XWVUTSR5PO21LE.IHGFEDCBA@?"=~;:92705v32+0/(-n%*)('~%$ed!xa|{zyxwvutsrq
ponPfOjchgJId]Fa`_^]\[ZYXWVUTS5K4OHML/.IHA*EDCBA@?>=<;:{87xw43,s0/.-,+
*)('&%f#"cb}|u^yxwvutsrqponmlkjLbKf_dcFE`_XA\[ZYXWVUTSRQPONM/E.IBGF)(C
BA:#>=<;:98765432s0/po,+*#j'&%$#"!~}|{zy\wZunsrqjoRglkjibgfIHcbaZC^]\[
ZYXWVUTSRQPON0F/JCH+F?DCB;@?"!<;:3z76543210/.-,+*)('g}f#z!~a`{zyxqvuts
rqponmlkjihKfeHGba`_X]\[ZYXWVUTSRQPO2M0KJCHG@E(=BA@?8=<}|9876/43210/.-
,+*)('&%$#"bxa|uzy\[vutslqponmlkjihgfedcba`_AW@[TYX;:UTSRQJONMLKJIHGFE
DCB%@?"!<;:9816543210/.-,+*)j'h%$#z!x}`uzyxwputWVqponmfkjihgfedcba`_^]
\[Z<R;VOT7RQPINGL/DIHGF?DC&%@?>=<5:9876543210/.-,+*)i!h%|#"cb}|{zyxqvu
tsrqponmlkjMhgJIdcba`_X]\[ZYXWVUTSRQ4O2MLKDIBG*ED=BA:?"7<;:9276wv3210/
.',+*)('&%$#"!~}|{z\r[votWrqjonglkNMhgfedc\a`_^]\[ZYXWVUTSRQ3I2MFKJ-,G
FEDCBA:?>=<;:987654u21rq.-,+*)(!&%$#"!~}|{zy\wZutmrqjoRmfkjibgfIHcba`_
^]V[ZYXWVUTSRQPONML.D-HAF)DCB;@9"~6;:{z7654321*/.-,+*)('&%$#"!~`v_zsxw
vutmVqponmlkjihgJedcbaZC^]\[ZYXWVUT7R5PONGLEJ-HG@ED=B%@9>=<5:{27654-21
0/.'n+*)('&%$#"!~}|{]s\wpuXsrqjohmPkdihg`edcbaZC^]\[ZYXWVUTSRQP2H1LEJI
HGFEDCBA:#>=<;:98765432+r/.-,+*)('&%$#zc~`v_zs\ZputsrqponmleNiKaJe^cba
`_^]\[ZYRWVUTSRQPONMLKJIHGFEDCBA@?>=<;:98y65432s0/.-,+*)('&}$#"!~}|{zy
xwvutsrqponmlkjihgfedcFa`_^]@[>YXWPUNSRQPONMLKJIBGFEDCBA@?>=<;:9876543
210/.-,+*)(i&%$#"!~}|^t]xqvutsrqponmlejihgfedcba`_^]\[ZYXWVUTSRQPONMLK
.IHGFEDCBA#9"=6;:9876543210/(-,+*)('&%$#"!~}|{zyxwvutsrqponQlkjihKfedc
ba`_^]\[ZSXWVUTSRQPONMLKJIHGFEDCBA@?>=<;|98765v3t10).-&+l)"'&%|#dy~}|{
tyxwvutsrqponmfkjihgfedcba`_^]\[ZYXWVUTSRQPON1LKJIHGFED&<%@9>!<;49816w
4-210).-,+*)('&%$#"y~}|{zyxwvutsrqponmlkjihgfedcbaD_^]\[ZYXW9O8SLQPONM
LKJIHGFED=BA@?>=<;:9876543210/.-,+*)('&g$#"!~a|{zyxwvutsrqpohmlkjihgfe
dcba`_^]\[ZYXWVUTSRQ4ONMLK.I,GFE>C<A$?8=<;49z16543,10/.-,+*)('&%${"!~}
|{zyxwvutsrqponmlkjihgfedGba`_^]\[Z<R;VOT7RQPINGL/JCHGF?DCBA@?>=<;:987
0543210/.-,+*)('&%$#"!~}|{zyxwZutsrqponmOeNibgfedcba`_^]\[ZYRWVUTSRQPO
NMLKJIHGFEDCBA@?>=<}:9876w43210/.-,+*)('&}$#"!~}|{zyxwvutsrqponmlkjihg
JedcbaD_^]\[ZYXWVUTSRQJONMLKJIHGFEDCBA@?>=<;:987654u210/.-,+*j"i&}$e"y
~}|uz]rwvutmVTjonmlkjihgfedcbaZ_^]\[ZYXWVUTSRQPONMLKJIHGFED'BA@?>=<;:z
2y6/43210q(-,+*)('&%$#"!~}|{zyxwvutsrqTonmlkNihgfeH]ba`_^]\[ZYXWVUTSRQ
PONMLKJIH+FEDCB%@#>=6;:387654u,10/.-,+*)('&%$#"!~}|{zyxwvuXsrqponmlkMc
Lg`eHc\a`_X]@UZYXWP97MRQPON1FKJIHGFEDCBA@?>=<;:987654321r/.-,+*)('g}f#
z!~}|{^yrwvutsrqponmlkjihgfedcba`_^A\[ZYX;VUTSR5PINMLKJIHGFEDCBA@?>=<;
:98765v3210/p-,+*)j'~%$#"!~}|{zyxwvutsrqponmlkjMhgfedcba`BXA\UZ=XWPUTM
R5JONMLE.,BGFEDC&A:?>=<;:9876543210/.-,+*)('&g$#"!~}|{z\r[votsrqpSnmfk
jihgfedcba`_^]\[ZYXWVUTS6QPONM0KJIHG*ED=BA@?>=<;:9876543210/.-,+*k('&%
$e"c~}v{zsx[votsrkponmlOjibgfedcba`_^]\[ZYXWVUTSRQPO2MLKJIHGFE'=&A:?"=
6;:9276543t10).-,+*)('&%$#"!~}|{zyxwvutWrqponmlkjLbKf_dcba`C^]\UZYXWVU
TSRQPONMLKJIHGFEDC&A@?>=~;:987x543,10/.-,+*)('&%$#"!~}|{zyx[vutsrUponm
lOjihafedcba`_^]\[ZYXWVUTSRQPO2MLKJIHGFE'=&A:?"=<;4927x5.321*/p',+*)"i
g}$#"!~a|{zsxwvutsrqponmlkjihgfedcbaD_^]\[ZYXW9O8SLQPONM0KJIHGFEDCB;@?
>=<;:9876543210q.-,+*k('&%$e"!~}|{zyxwputsrqponmlkjihgfeHcba`_B]@[ZYRW
PU8SRKPOHM0KDIHG@E(=BA@?8=<;:9z76543210/.',+*)('&%$#"!~}|{z]xwvutsrqpR
hQlejMhg`ed]bE`Y^]\UZ=RWVUTMRQPON1LKJIHGFEDC<A@?>=<;:987654321r/.-,+*)
('g}f#z!~}|{^yxwvutsrUjonmlkjihgfedcbE`_^]\?ZYXWV9TSRQPONM0EJIHGFEDCBA
@?>=~;:987x5v321*/(-n+$)('~%f{"!~}v{zyxwZutsrqponQfkjihgfedcba`_^A\[ZY
XWVUT6L5PIN1LKJCHAF)D=BA@9>=<;:{87654321r).-,+*)('&%$#"!b}|{zyxwvuWmVq
jonmPeNihgfedcba`_^]\[ZY<WVUTS6QPO2G0KJIHGFEDCBA@?>=<;|98765v3t10/(-&+
l)"'&%|#dy~}|{tyxwZoXsrqponmlkjihgfedcFa`_^]\[ZY;Q:UNSRQ4I2MLKJIHGFEDC
BA@?>=~;:9876543s+r/(-,+l)"'h%$#"!~}|{zyxwvutsVqponmPkjiLg`eHcba`_^]\[
ZYXWVUTS6QPONM0K.IHG@E>C&A:?>=6;|38765.321r/(-n+*)('&%$#"!~}|{zy\wvuts
rqpoQgPkdihgJe^cFa`_^]\[ZYXWVUTSRQ4ONMLKJIHG)?(C<A@?"=<5|9876543210/.-
,+*)j'&%$#d!~}`{zs\wvutsrqponmlkjihgJedcbaD_B]\UZYRW:OTSRQJONM0KJC,GFE
DCBA@?>=<;:987x543210/.-m%l)"'h}$#"!x}|{^yxqZutsrqponmlkjihgfeHcba`_^]
\[=S<WPUTS6QPOHM0KJIHGFEDCBA@?>=<;|98765v321r/.-&+l)('&%$#"!~}|{zyxwZu
tsrqToRmlkdibgJed]baZ_BW\[ZYRWVU8SRQJO2MLKJIHGFEDCBA@?>=~;:9876543s+r/
(-,+l)('~%f#"!~}|{zyxwvutsrqTonmlkjihgI_Hc\a`_B]\[ZYRW:UTSRQPONMLKJIHG
FE(CBA@?"=<;|98765.3t10/.-,+*)('&%$#"!b}|{zy\wZunsrqjoRglkjibgfeHcba`_
X]@[ZYXWVUTSRQPONMLK.IHGFEDCBA#9"=6;|92765.321r/.-,+$)j'&%$#"!~}|{zyxw
vuXsrqponmlkMcLg`edcFa`_^]\U>YXWVUTSRQPONMLKJI,GFEDC&A@?"=<;:981x54321
0/.-,+*)('&%f#"!~}`{^yxwpunsVqpinmfkNchgfe^cbaD_^]\[ZS<WVUTSRQPONMLKJI
HG*EDCBA@?>=}5|92765v3210/.'n+*)('&%$#"!~}|{zy\wvutsrqpoQgPkdihgJedcba
`_^W@[ZYXWVUTSRQPONMLK.IHGFE(CBA$?>=<;:981x543210/.-,+*)('&%f#"!~}`{^y
rwvunsVkponmfkjiLgfedcba`YB]\[ZYXWVUTSRQPONM0KJIHGFEDC%;$?8=~;49870543
t10/.-,+*#j'&%$#"!~}|{zyxwvuXsrqponmlkMcLg`edcFa`_^]\[ZYRW:UTSRQPONMLK
JIHGFE(CBA@?"=<;|987654321*/p-,+*)('&%$#"!~}|{^yxwvuXsVqpohmfkNihafe^c
F[`_^]V[ZY<WVUTSRQPOHM0KJIHGFEDCBA@?>=<;|987654321q)p-&+*)j'&%$#"!~}v{
^yxwvutsrqponmlkjiLgfedcba`_AW@[TYXW:UTSRQPONMLKDI,GFEDCBA@?>=<;:987x5
4321r/.-n+*)('&%$#"!x}`{zyxwvutsrqponmlkNihgfeHcFaZ_^]V[>SXWVUNSRQ4ONM
LKJIHGFE>C&A@?>=<;:987654321r/.-,+*)('g}f#z!b}v{zyrwvuXsrqponmlkjibgJe
dcba`_^]\[ZYXWVU8SRQPONMLK-C,G@EDC&A@?>=<;:9876/v3210/.-,+*)('&%$#d!~}
|{^yxwZutsrqponmlkjcLgfedcba`_^]\[ZYXW:UTSRQ4O2MLKDIBG*ED=BA:?"7<;:927
65v3210/.-,+*)(!h%$#"!~}|{zyxwvutsVqponmlkjiKaJe^cbaD_^]\[ZYXWVUTM6QPO
NMLKJIHGFEDCBA$?>=<;:987w/v3,10/p-,+*)('&%$#"!x}`{zyxwvutsrqponmlkNihg
feHcbaD_^]\[ZYXWVUTSLQ4ONMLKJIHGFEDCBA@?"=<;:9z765v3210/.-,+*)('~%f#"!
~}|{zyxwvutsrqTonmlkjihgI_Hc\ECY^]\?ZYXWVUTSRQPONGL/JIHGFEDCBA@?>=<;:{
876543210p(o,%*)(i&%$#"!~}|{zyxwpYtsrqponmlkjihgfedGba`_^A\[Z=XWVUTSRQ
PONMLKD-HGFEDCBA@?>=<;:98y65432s0q.',+*#(i~%$#"y~}|_zyxwvutsrqponmfOji
hgfedcba`_^]\[Z=XWVUTSRQP2H1LEJ-HAFED=BA@#>=<;:987654321*q.-,+*)('&%$#
"!~}|_zyxwvutsrTjSnglkjMhgfedcba`_^]\[ZSX;VUTSRQPONMLKJIHGF)DCBA@#>=<}
:9876543210/.-,%*k('&%$#"!~}|{zyxwvYtsrqpSnQlkdihafI^cba`Y^]\?ZYXWVUTS
RQPONMLEJ-HGFEDCBA@?>=<;:98y6543210/.n&m*#('&g$#"!~}|{zyxwvutmrUponmlk
jihgfedcba`C^]\[ZYXWV8N7RKPON1LKJIHGFEDCBA@?>=6}:9876543210/.-,+*k('&%
$e"!~a|{zyxwvutsrqponmfOjihgfedcba`_^]\[Z=XWVUT7R5PONGLEJ-HG@ED=B%:?>=
<5:98y6543210/.-,+*)('~g$#"!~}|{zyxwvutsrUponmlkjihJ`Id]bE`_X]\UZYX;VU
TSRQPONMLKJIHG@)DCBA@?>=<;:987654u210/.-,+*j"i&}$#"c~}|{zyxwvutsrqpong
lOjihgfedcba`_^]\[Z=XWVUT7RQP3NMLKJIHGFEDCBA@?>7<}:9876543210/.-,+*k('
&%$e"c~}|uzsx[votsrkponQlkjihgfedcba`_^]\UZ=XWVUTSRQPONMLKJIH+FEDCBA@?
>~6}:3zx0543t10/.-,+*)('&%$#"!x}`{zyxwvutsrqponmlkNihgfedcbaCYB]V[ZY<W
VUTSRQPONMLKJIHGFEDCBA@?>=<;:98765432+r/.-,+*)('&%$#"!~}`{zyxwZutsVqpo
nmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLE.IHGFEDCBA@?>=<;:9z76543t1r/.-&+$)
j'~%$#z!bw|{zyrwvuXsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONG0KJIHGFEDCBA
@?>=<;|987654321q)p-&+l)('~%|#d!x}|{ty\qvutslqpoRmlkjihgfedcba`_^]\[ZY
XWVUTSRQPONMLKJIHA*EDCBA@?>=<;:98765v3210/.-,+k#j'~%$#d!~}|{zyxwvutsrq
ponmlkjihgfedcba`_^]\[ZYRW:UTSRQPONMLKJIHGFE(CBA@?"=<;|9876543210/.-,+
*)('&%$#"!~}|{zyxwvutsrqjoRmlkjihgfedcba`_^]@[ZYXW:U8SRQJOHM0KDIHG@E(=
BA@?8=<;|9876543210/.-,+*)('&%$#"!~}|{zyxwvutsrqjoRmlkjihgfedcba`_^]@[
ZYXWVUTS5K4OHMLK.IHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#z!b}|{zyxwvuts
rqponmPkjihgfedcE[D_X]\[>YXWVUTSRQPONM0E.IHGFEDCBA@?>=<;:9z76543t10/p-
,+*)('&%$#"!bw`{zyxwvutsrqponmlkNihgfeHcFa`_X]V[>YRWVUNS6KPONMFKJI,GFE
DCBA@?>=<;|3z76543210/.-,+*)('h%$#"!~}|{]s\wputsVqponmlkjihgfeH]Fa`_^]
\[ZYXWVUTSRQ4ONMLKJIHG)?(C<A@?"=<;:987654321r/(-n+*)('&%$#"!~}|{zy\wvu
tsVqpoRmlkjihgfedcbaD_X]@[ZYXWVUTSRQPONMLK.IHGFE(C&A@?8=6;|92765.3t+0/
.-&+*)j'&%$#"!~}|{zy\wpuXsrqponmlkjihgfedcFa`_^]\[ZY;Q:UNSRQ4ONMLKJIHG
FEDC&A:?"=<;:9876543210/.-n+*)('&%$#cyb}v{zy\wvutsrqponmlkNihaJedcba`_
^]\[ZYXWVU8SRQPO2MLK.IHGFEDCBA@?>=~;:3z76543210/.-,+*)('h%$#"!b}`{zyrw
puXslqpohmPejihg`edcFa`_^]\[ZYXWVU8SRK4ONMLKJIHGFEDCBA@?"=<;:98765u-t1
*/p-,+$)"'h%|#"!x}`uzyxwputsVqponmlkjihgfeHcb[D_^]\[ZYXWVUTSRQPO2MLKJI
HGFE'=&A:?>=~;:9876543210/p-,+$)j'&%$#"!~}|{zyxwvuXsrqpoRmlkNihgfedcba
`_^]@[ZYRW:UTSRQPONMLKJIHGFE(CBA@?"=~;:92705v3,10/(-n%*)('~%$#d!~}|{zy
xwvutsVqpohmPkjihgfedcba`_^]\[>YXWVUTSRQ3I2MFKJI,GFEDCBA@?>=<;|98705v3
210/.-,+*)('&%$#d!~}|{zyxwYoXslqpoRmlkjihgfedcbaD_^]\U>YXWVUTSRQPONMLK
JI,GFEDC&A@?"=<;:987654321r/.-,%l)('&%$#"!~}|{zyxwZutsrqToRmlkdibgJe^c
baZ_BW\[ZYRWVU8SRQPONMLKJIHG*EDCB;$?>=<;:9876543210/p-,+*)('&%e{d!x}|{
^yxwvutsrqponmPkjihaJedcba`_^]\[ZYXWVU8SRQPONMLK-C,G@EDC&A@?>=<;:98765
v3210/(-n+*)('&%$#"!~}|{zy\wvutsVqpoRmlkjihgfedcbaD_^]\[TY<WVUTSRQPONM
LKJIHG*EDCBA$?"=<;4927x5.321*/p',+*)"'&%f#"!~}|{zyxwvuXsrqpohmPkjihgfe
dcba`_^]\[>YXWVUTSRQ3I2MFKJI,GFEDCBA@?>=<;|98765.3t10/.-,+*)('&%$#"!b}
|{zyxwvuWmVqjonmPkjihgfedcba`_B]\[ZYXQ:UTSRQPONMLKJIHGFE(CBA@?"=<;|987
6543210/.-n+*)('&}f#"!~}|{zyxwvutsrqTonmlkNiLgfe^c\aD_X]\[TY<QVUTSLQPO
2MLKJIHGFEDCBA$?>=<;:3z76543210/.-,+*)('h%$#"!~}|{]s\wputsVqponmlkjihg
feHcba`_^W@[ZYXWVUTSRQPONMLK.IHGFEDCBA#9"=6;:9z76543210/.-,+l)('&%$#z!
b}|{zyxwvutsrqponmPkjihgJedcFa`_^]\[ZYXWVU8SRQPONMFK.IHGFEDCBA@?>=<;:9
z76543t1r/.-&+$)j'~%$#z!bw|{zyrwvuXsrqponmlkjihgJedcba`_X]@[ZYXWVUTSRQ
PONMLK.IHGFEDCBA#9"=6;:9z76543210/.-,+l)('&%$#z!b}|{zyxwvutsrqponmPkji
hgfedcE[D_X]\[>YXWVUTSRQPONM0KJIHGFED=&A@?>=<;:987654321r/.-,+l)('h%$#
"!~}|{zyxwZutsrqpongPkjihgfedcba`_^]\[>YXWVU8S6QPOHMFK.IBGFE>C&;@?>=6;
:9z76543210/.-,+l)('&%$#"yb}|{zyxwvutsrqponmPkjihgfedcE[D_X]\[>YXWVUTS
RQPONM0KJIHGFED=&A@?>=<;:987654321r/.-,+*)('g}f#z!~}`{zyxwvutsrqpoRmlk
jihgfe^cFa`_^]\[ZYXWVUTSRQ4ONMLK.IHG*EDCBA@?>=<;:9z76543210/(-n+*)('&%
$#"!~}|{zy\wvutsVqTonmfkdiLgf_dc\aD_X]\[TY<QVUTSLQPO2MLKJIHGFEDCBA$?>=
<;:98705v3210/.-,+*)('&%$#d!~}|{zyxwYoXslqpoRmlkjihgfedcbaD_^]\[ZYXWPU
8SRQPONMLKJIHGFEDC&A@?>=<;:9y1x5.321r/.-,+*)('&%$#d!~}|{zyxwvoXsrqponm
lkjihgfedcFa`_^]@[ZY<WVUTSRQPONMLK.IHGFEDCBA@9"=<;:9876543210/.-n+*)('
h%f#"y~}v{^sxwvunsrqTonmlkjihgfedcFa`_^]\[ZYXQ:UTSRQPONMLKJIHGFE(CBA@?
>=<;{3z70543t10/.-,+*)('&%f#"!~}|{zyxqZutsrqponmlkjihgfeHcba`_^]\[=S<W
PUTS6QPONMLKJIHGFE(CBA@?>=<;:927x543210/.-,+*)('&%f#"!~}`{zy\wvutsrqpo
nmlkNihgfedcba`_X]@[ZYXWVUTSRQPONMLK.IHGFE(C&A@?8=6;|98165.3t1*/.-&+l#
('&%|#"!b}|{zyxwvutsrqTonmlkjihgfe^cFa`_^]\[ZYXWVUTSRQ4ONMLKJIHG)?(C<A
@?"=<;:987654321r/.-,+*)('&%|#d!~}|{zyxwvutsrqpoRmlkjihgfeG]FaZ_^]@[ZY
XWVUTSRQPO2MLKJIHGFEDCBA@9"=<;:9876543210/.-n+*)('h%$#d!~}|{zyxwvutsVq
ponmlkjihgfed]Fa`_^]\[ZYXWVUTSRQ4ONMLK.I,GFE>C<A$?>7<;49z70543,1r).-,+
$)('h%$#"!~}|{zyxwZutsrqponmlkjihaJedcba`_^]\[ZYXWVU8SRQPONMLK-C,G@EDC
&A@?>=<;:98765v3210/.-,+*)('&}f#"!~}|{zyxwvutsrqTonmlkjihgI_Hc\a`_B]\[
ZYXWVUTSRQ4ONMLKJIHGFEDCBA@?8=~;:9876543210/.-,+l)('&%f#"!b}|{zyxwvuts
rqTonmlkjihgfedcba`_X]@[ZYXWVUTSRQPONMLK.IHGFE(CBA$?>=<;:9876543t10/.-
,+*)('&%$#"!x}`{zyxwvutsrqponmlkNihgfedcbaCYB]V[>YXQVUNS6QJONMFK.CHGFE
>'%;@?>!<;:9876543210q.-,+*)('&%$#"!~}|uz]xwvutsrqponmlkjihKfedcba`_^@
V?ZSXWV9TSRQPONMLKJIH+FEDCBA@?>=<;:98765.u210/.-,+*)('&%$#"c~}|{z]xwvY
tsrqponmlkjihKfedcba`_^]\[ZYXWVUN7RQPONMLKJIHGFEDCB%@?>=<}:{876/4-2s*/
.-,%*)(i&%$#"!~}|{zyx[vutsrqponmlkjihgfe^Gba`_^]\[ZYXWVUTSR5PONMLKJIH*
@)D=B%:?>=<5:98y6543210/.-,+*k('&%$#"!~}|{zyxwvunWrqponmlkjihgfedcbE`_
^]\[ZYX:P9TMRQP3NMLKJIHGFEDCB%@?>=<;:9876543210/.',m*)('&%$#"!~}|{zyx[
vutsrUponQlkjihgfedcba`C^]\[ZYXWVUTSRQPONMLEJ-HGFEDCBA@?>=<;:98y65432s
0q(-,+*#('&g$#"!~}|{zyxwvYtsrqponmlkjihgfedcb[`C^]\[ZYXWVUTSRQPON1LKJI
HGFED&<%@9>!6;:981654u210/.-,+*)('&g$#"!~}|{zyxwvutsrqpinQlkjihgfedcba
`_^]\?ZYXWVUTSR4J3NGLKJ-HGFEDCBA@?>=<}:9876543210/.-,+*)('~g$#"!~}|{zy
xwvutsrUponmlOjihKfedcba`_^]\[Z=XWVUTSRQPONMLKJIHGFE>'BA@?>=<;:9876543
2s0/.-,m*k('&}${"c~}v{zsxwvYtsrqponmlkjihKfedcba`_^]\[ZYXWVUTSL5PONMLK
JIHGFEDCBA@#>=<;:9876v.u2+rp(-,+l)('&%$#"!~}|{^yxwvutsrqponmlkjihgf_Hc
ba`_^]\[ZYXWVUTS6QPONMLKJI+A*E>CBA$?>=<;:9876543t10/.-,+*)('&%$#"!~}|{
ty\wvutsrqponmlkjihgJedcbaD_^]@[ZYXWVUTSRQPO2MLKJIHGFEDCBA@?>=<;:927x5
43210/.-,+*)('&%f#"!~}`{^yxwpunsVqjonmfkjiLgfedcba`_^]\[>YXWVUTSRQPONM
LKJIHGFE>C&A@?>=<;:987654321r/.-,+*)('g}f#z!b}|uzyr[YotsrUponmlkjihgfe
dGba`_^]\[ZYXWVUTSRQPONGL/JIHGFEDCBA@?>=<;:{876543210p(o,%*)(i&%$#"!~}
|{zyx[vutsrqponmlkjihgfedcbaZC^]\[ZYXWVUTSRQPON1LKJIH+FED'BA@?>=<;:987
6w43210/.-,+*)('&%$#"!~}v_zyxwvutsrqponmlkjMhgfedGbE`_^W\UZYX;VUTSRQPO
NMLKJ-HGFEDCBA@?>=<;:9876543,s0/.-,+*)('&%$#"!~a|{zyxwvutVlUpiRPfkjiLg
fedcba`_^]\[>YXWVUTSRQPONMLKJIHGFED=&A@?>=<;:987654321r/.-,+*)('g}f#z!
~}`{zyxwvutsrqpoRmlkjihgfedcba`_^]\[ZYXWPU8SRQPONMLKJIHGFEDC&A@?>=~;:9
z76543210/.-,+l)('&%$#"!~}|{zyxwvutsrqjoRmlkjihgfedcba`_^]@[ZYXW:UTS6Q
PONMLKJIHGFE(CBA@?>=<;:9876543210/.-&+l)('&%$#"!~}|{zyxwZutsrqponmOeNi
bgJedc\aZCAW\[Z=XWVUTSRQPONML/JIHGFEDCBA@?>=<;:987654-2s0/.-,+*)('&%$#
"!~a|{zyxwvutVlUpinmlOjihgfedcba`_^A\[ZYXWVUTSRQPONMLKJIHGFE>'BA@?>=<;
:98765432s0/.-,m*)(i&%$#"!~}|{zyx[vutsrqponmlkjihgfedcba`_XA\[ZYXWVUTS
RQPONML/JIHGF)DCB%@?>=<;:987654u210/.-,+*)('&%$#"!~}|{zyr[vutsrqponmlk
jihgfIdcba`_^]\>T=XQV9TSLQPIN1LEJIHAF)>CBA@9"~6;:9z76543210/.-,+l)('&%
$#"!~}|{zyxwvutsrqpiRmlkjihgfedcba`_^]@[ZYXWVUTS5K4OHMLK.IHGFEDCBA@?>=
~;:9876543210/.-,+*)('&%$#z!b}|{zyxwvutsrqponmPkjihgJedcFa`_^]\[ZYXWVU
8SRQPONMLKJIHGFEDCBA@?>=<;49z76543210/.-,+*)('h%$#"!b}|{^yxwvutsrqponm
Pkjihgfedcba`_^]\[ZYXWVUTSLQ4ONMLKJIHGFEDCBA@?"=<;:98765u-t1*/.-n+*)('
&%$#"!~}`{zyxwvutsrqponmlkjihgfedc\aD_^]\[ZYXWVUTSRQPO2MLKJIHGFE'=&A:?
>=~;:9876543210/p-,+*)('&%$#"!~}|{zyxwvutsrkTonmlkjihgfedcba`_B]\[ZY<W
VU8SRQPONMLKJIHG*EDCBA@?>=<;:9876543210/.-,%l)('&%$#"!~}|{zyxwZutsrqTo
RmlkdibgfeHcba`_^]\[ZYXW:UTSRQPONMLKJIHGFEDCBA@?>=<5|9876543210/.-,+*)
j'&%$#"!~}_u^yrwZutmrqjoRmfkjibgJ_dcbaZCAW\[Z=XWVUTSRQPONML/JIHGFEDCBA
@?>=<;:987654321*q.-,+*)('&%$#"!~}|_zyxwvutsrTjSnglkjMhgfedcba`_^]\?ZY
XWVUTSRQPONMLKJIHGFEDCBA@9>!<;:9876543210/.-,m*)('&g$#"c~}|{zyxwvutsrU
ponmlkjihgfedcba`_^]\[ZYXWVOT7RQPONMLKJIHGFEDCB%@?>=<}:{876/4-2s*/.-,%
*)(i&%$#"!~}|{zyx[vutsrqponmlkjihgfedcba`_^]\UZ=XWVUTSRQPONMLKJIH+FEDC
BA@?>~6}:38y654-2+0q(-,+*#('&g$#"!~}|{zyxwvYtsrqponmlkjihgfedcba`_^]\[
ZSX;VUTSRQPONMLKJIHGF)DCBA@?>=<|4{81654u210/.-,+*)('&g$#"!~}|{zyxwvuts
rqponmlkjihg`Idcba`_^]\[ZYXWVUT7RQPON1LKJ-HGFEDCBA@?>=<}:9876543210/.-
,+*)('&%$#"!~}v_zyxwvutsrqponmlkjMhgfedGbE`_X]\UZ=RWVUTMRQP3NMLKJIHGFE
DCB%@?>=<;:9876543210/.-,+*)('&%|e"!~}|{zyxwvutsrqpSnmlkjihgfH^Gb[`_^A
\[ZYXWVUTSRQP3NMLKJIHGFEDCBA@?>=<;:9876543,s0/.-,+*)('&%$#"!~a|{zyxwvu
tVlUpinmlOjihgfedcba`_^A\[ZYXWVUTSRQPONMLKJIHGFEDCBA@9>!<;:9876543210/
.-,m*)('&g$#"c~}|{zyxwvutsrUponmlkjihgfedcba`_^]\[ZYXWVUTMR5PONMLKJIHG
FEDCBA@#>=<;:{8y654-2+0q.-&+*#(i~%$#"y~}|_zyxwvutsrqponQlkjihgfedcba`_
^]\[ZYXWVUTSRQPIN1LKJIHGFEDCBA@?>=<}:98765432r*q.',m*)"'&}$#"c~}|{zyxw
vutsrUponmlkjihgfedcba`_^]\[ZYXWVUTMR5PONMLKJIHGFEDCBA@#>=<;:9876v.u2+
0/.o,+*)('&%$#"!~a|{zyxwvutsrqponmlkjihgfedcba`_XA\[ZYXWVUTSRQPONML/JI
HGF)DCB%@?>=<;:987654u210/.-,+*)('&%$#"!~}|{zyxwvutslUponmlkjihgfedcba
`C^]\[Z=X;VUTMRKP3NMFKJCH+F?DCB;@?>!<;:9876543210q.-,+*)('&%$#"!~}|{zy
xwvutsrqpohQlkjihgfedcba`_^]\?ZYXWVUTSR4J3NG0.DIHG*EDCBA@?>=<;:9z76543
210/.-,+*)('&%$#"!~}|{zyxqZutsrqponmlkjihgfeHcba`_^]\[=S<WPUTS6QPONMLK
JIHGFE(CBA@?>=<;:9876543210/.-,+*)('&%|#d!~}|{zyxwvutsrqpoRmlkjiLgfeHc
ba`_^]\[ZYXW:UTSRQPONMLKJIHGFEDCBA@?>=<;:98705v3210/.-,+*)('&%$#d!~}|{
^y\wvotslqTinmlkdihgJedcba`_^]\[ZY<WVUTSRQPONMLKJIHGFEDCBA@?>=<;:927x5
43210/.-,+*)('&%f#"!~}|{zy[qZunsrqTonmlkjihgfedcFa`_^]\[ZYXWVUTSRQPONM
LKJIHGFEDC<A$?>=<;:9876543210/p-,+*)('&%e{d!x}|{^yxwvutsrqponmPkjihgfe
dcba`_^]\[ZYXWVUTSRQPONMLE.IHGFEDCBA@?>=<;:9z76543t10/p-,+*)('&%$#"!b}
|{zyxwvutsrqponmlkjihgfedcba`_^W@[ZYXWVUTSRQPONMLK.IHGFE(C&A@?8=6;|981
65.3t+0/.-&+*)j'&%$#"!~}|{zy\wvutsrqponmlkjihgfedcba`_^]\[ZYXQ:UTSRQPO
NMLKJIHGFE(CBA@?>=<;{3z705v32+0/(-,+l)('&%$#"!~}|{^yxwvutsrqponmlkjihg
fedcba`_^]\[ZS<WVUTSRQPONMLKJIHG*EDCBA@?>=}5|92765v3210/.-,+*)('h%$#"!
~}|{zyxwvutsrqponmlkjihgfedc\aD_^]\[ZYXWVUTSRQPO2MLKJI,GFE(CBA@?>=<;:9
87x543210/.-,+*)('&%$#"!~}|{zyxwvutslqTonmlkjihgfedcba`_B]\[ZY<WVU8SRQ
PONMLKJIHG*EDCBA@?>=<;:9876543210/.-,+*)('&%|#d!~}|{zyxwvutsrqpoRmlkji
hgfeG]FaZ_B]\UZYRW:OTSRQJ31GLKJ-HGFEDCBA@?>=<}:9876543210/.-,+*)('&%$#
"!~}|{zyxqvYtsrqponmlkjihgfedGba`_^]\[Z<R;VOTSR5PONMLKJIHGFED'BA@?>=<;
:9876543210/.-,+*)('&%$#"!xa|{zyxwvutsrqponmlOjihgfIdcbE`_^]\[ZYXWVUT7
RQPONMLKJIHGFEDCBA@?>=<;:987654321*q.-,+*)('&%$#"!~}|_zyxwvYtWrqjonglO
dihgf_dcbE`_^]\[ZYXWVUT7RQPONMLKJIHGFEDCBA@?>=<;:987654321*q.-,+*)('&%
$#"!~}|_zyxwvutsrTjSnglkjMhgfedcba`_^]\?ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=
<;:92y6543210/.-,+*)('&g$#"!~}|{z\r[votsrUponmlkjihgfedGba`_^]\[ZYXWVU
TSRQPONMLKJIHGFEDCBA@9>!<;:9876543210/.-,m*)('&g$#"c~}|{zyxwvutsrUponm
lkjihgfedcba`_^]\[ZYXWVUTSRQPONGL/JIHGFEDCBA@?>=<;:{87654u2s0/.',%*k('
~%${"cx}|{zsxwvYtsrqponmlkjihKfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFED=B%@?
>=<;:9876543210q.-,+*)('&f|e"y~a|{tyxqvutWrqponmlkjihgfIdcba`_^]\[ZYXW
VUTSRQPONMLKJIHGFEDCB;@#>=<;:9876543210/.o,+*)('&%$dzc~w|{z]xwvutsrqpo
nmlOjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHG@)DCBA@?>=<;:987654u210/.o,+*k
('&%$#"!~}|{z]xwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUN7RQPONMLKJIHGFEDCB%
@?>=<}:98y6543210/.-,+*k('&%$#"!~}|{zyxwvutsrqponmlkjihgfedc\E`_^]\[ZY
XWVUTSRQP3NMLKJIHGF(>'B;@#>=<5:38y6/432+0q(-,+*#jh~%$#d!~}|{zyxwvutsVq
ponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONG0KJIHGFEDCBA@?>=<;|98765v3210/.-,+
*)('&%$#"caa|{zyxwvutWUUponmlkjihKIIdcba`_^]\?==XWVUTSRQP311LKJIHGFED'
%%@?>=<;:98yww43210/.-,mkk('&%$#"!~a__zyxwvutsrUSSnPlkjiLaJedcba`CXA\>
ZS<QV97ML53O20FE.,,**((&&$$">=~5|9y70w.32s*q.n,+*)('h}f#"!~}|{z]r[vXtm
VkpSQgfOMiLJ`_HFbECYXA??==;;99775Q42HG0.JIHG*?(C%A:#8=~|43zx6wu-,sqqoo
mmkkiig%fdzyb`|{zy\qZutsrqponmlO*ihgfedcba`_^]\[ZYXWVUTS6QPONML/--gGFE
DCBA@#!!<;:987654uss0/.-,+*)(igg$#"!~}|{z][[vutsrqponQOOjihgfedcbECC^]
\[ZYXWV977RQPONMLKJ-++FEDCBA@?>!}}:98765432sqq.n,+*)j!h%$#"!~av_z\xqZo
tWUkjSQQOkNLbaJHHFbECYXA??==;;997SR5J3N0LE.CH+)?>'%%##!!}}{98y0w4t210/
.-n%l)('&%$#"cxa|^zs\qvYWmlUSoRPfeNLLJJHdGE[ZCA]@>TS<::88664P31GF/-IHG
F)>'B$@9"7<}{32ywwuussqqo-nl$#jhhffddb~a_ut][wvutWlUponmlkjihgJ%dcba`_
^]\[ZY<WVUTSR533mMLKJIHGF)''BA@?>=<;:{yy6543210/.omm*)('&%$#"caa|{zyxw
vutWUUponmlkjihKIIdcba`_^]\?==XWVUTSRQP311LKJIHGFED'%%@?>=<;:98yww4t21
0/p'n+*)('&g|e"b~w`uz][qpYWsVTjiRPPNNLLJJHdcF[D_A]V?TY<:PO86R53IH1//--
++))'CB%:#>~<;:987x/v3210/.-,m$k(h&}f{"cawv_]y\ZpoXVrUSihQOkNLbaJHHFFD
`CAWV?==;;9U86LK42NMLK.C,G)E>'<A$"87~||zzx6wu-,sqqoom+lj"!hf$#"!bw`{zy
xwvutsrU0onmlkjihgfedcba`_B]\[ZYX;99srRQP3NMLKJIHG*((CBA@?>=<;|zz76543
210/pnn+*)('&%$#dbb}|{zyxwvuXVVqponmlkjiLJJedcba`_^]@>>YXWVUTSRQ422MLK
JIHGFE(&&A@?>=<;:9zxx5u3210q(o,+*)('h}f#c!xav{^\rqZXXVrUSihQOkNLbaJHHF
FDDBB@\[>S<W9UN7LQ42HG0..,H+)?>'%A$"87~||zzxxvvt21r)p-m+*)('&g|e"!~}|{
zy\qZuWslUjoRPfeNLhKI_^GEaDBXW@>Z=;QP97S64JI20L/-CB+))''%A$"87~|:987x/
v3s1*q(-nl$#jhhf$ecyxa_{^\rqZXXVVTpSQgfOMihgfI^Gba`_^]\[ZY<uVUTSRQPONM
LKJIHGFED'BA@?>=~||X87654321rpp-,+*)('&%fdd!~}|{zyxwZXXsrqponmlkNLLgfe
dcba`_B@@[ZYXWVUTS644ONMLKJIHG*((CBA@?>=<;|zz76543210/pnn+*)('&%$#dbb}
_{zyx[pYtsrqpoRgPkMibK`eHF\[DB^A?UT=;W:8NM64P31GF/--++))''%%#?>!6}:z81
x/4us+*qo-nl$#jhhffddbb``^zy\qZuWsrqponQfOjihgfedcF[D_A]V?TY<:PO8664P3
1GF/-I,*@?(&&$@#!76}{{yyw5vt,+rp.-,+l#j'g%|ez!b`vu^\\ZvYWmlUSoRPfeNLLJ
JHHFFD`CAWV?=YXWV9N7RQPONMLKJI,eFEDCBA@?>=<}:98765vttP0/.-,+*)jhh%$#"!
~}|{^\\wvutsrqpoRPPkjihgfedcFDD_^]\[ZYXW:88SRQPONMLK.,,GFEDCBA@?"~~;:9
876543trr/.-,+*)('hff#"!~}|{zy\ZZuWsrqpShQlkjihgJ_HcEaZCX]@>TS<:V97ML5
331M0.DC,**((&&$$""~<;|3z7w5.u,1rp('nllj(ig}|eccaa__]][[YutWlUpRnmlkji
LaJedcba`_^AV?Z<XQ:OT75KJ311//--+G*(>=&$@#!76}{{yyw5vt,+rp.-,+l#j'g%|e
z!b`vu^\xwvuXmVqponmlkjihK&edcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;
:987x543210qooK+*)('&%$ecc~}|{zyxwvYWWrqponmlkjMKKfedcba`_^A??ZYXWVUTS
R533NMLKJIHGF)''BA@?>=<;:{yy6543210/.omm*)('&%$#"caa|{zyxwvutWUUpRnmlk
NcLgfedcbEZC^@\U>SX;9ON7553O20FE.,H+)?>'%A$"87~||zzxxvvt21r)p-m+$k"'hf
|{db~a_ut][wZXnmVTTRRPPNNLhgJ_HcEa`_^]\?T=XWVUTSRQ4I2M/KD-BG*(>=&$@#!7
6}{9zx0/vt2sq)(om+lj"!hffddb~a_ut][[YuXVlkTRnmlkNcLgIe^G\aDBXW@>><X;9O
N755331M0.DC,**(D'%;:#!=<;:{2y6543210/.-nI*k('&%$#dbb>|{zyxwvuXVVqponm
lkjiLJJedcba`_^]@>>YXWVUTSRQ422MLKJIHGFE(&&A@?>=<;:9zxx543210/.-nll)('
&%$#"!b``{zyxwvutsVTTonmlkjihgJHHcEa`_^AV?ZYXWVU8M6Q3OH1FK.,BA*((&B%#9
8!};|z21xvvttrrppn,+l#j'g%|ez!b`vu^\\ZvYWmlUSoRPfeNLLJJHHFFD`_BW@[=YXW
VUT7L5PONMLKJI,A*E'C<%:?"~65|zzx6wu-,sqqo-nl$#jhhf$ecyxa_{zyx[pYtVrkTi
nQOedMKKIeHF\[DB^]\[>S<WVUTSRQPON1jKJIHGFEDCBA@?>=<;:9876543210/.-,+*)
('&%$#"!~}|_zyxwvuXVV2ponmlkjiLJJedcba`_^]@>>YXWVUTSRQ422MLKJIHGFE(&&A
@?>=<;:9zxx543210/.-nll)('&%$#"!b``{zyxwvutsVTTonmlkjihgJHHcba`_^]\[><
<W9UTSR5J3NMLKJI,A*E'C<%:?"~65|zzx6wu-,sq/pn&%ljjhhffddb~}`u^y[wpYnsVT
jiRPlOMcbKIIGGEECCA]\?T=X:VUTSRQ4I2MLKJIHGF)>'B$@9"7<}{32yw5vt,+rppn,m
k#"igge#dbxw`^z][qpYWWUqTRhgPNjihgJ_HcEaZCX]@>TS<:V97ML5331M0.DC,*FEDC
&;$?>=<;:9876wR3210/.-,+*)('&%$#"!~}`{zyxwvYWW3qponmlkjMKKfedcba`_^A??
ZYXWVUTSR533NMLKJIHGF)''BA@?>=<;:{yy6543210/.omm*)('&%$#"caa|{zyxwvutW
UUponmlkjihKIIdcba`_^]\?==X:VUTS6K4ONMLKJ-B+F(D=&;@#!76}{9zx0/vttrrppn
nl*)j!h%e#zcx}`^ts\ZvYWmlUSSQQOOMMKgfI^GbD`_^]\[>S<WVUTSRQP3H1L.JC,AF)
'=<%#?"~65|z8yw/.us1rp('nllj(ig}|ec!b`vu^\x[YonWUUSoRPfeNLhgfeH]FaC_XA
V[><RQ:8866442N1/ED-+G*(>=&$$">!}54{y7654u,s0/.-,+*)('hC$e"!~}|{^\\8vu
tsrqpoRPPkjihgfedcFDD_^]\[ZYXW:88SRQPONMLK.,,GFEDCBA@?"~~;:9876543trr/
.-,+*)('hff#"!~}|{zy\ZZutsrqponmPNNihgfedcbaDBB]?[ZYX;P9TSRQPO2G0K-IB+
@E(&<;$""~<}{32ywwu3tr*)pnnlljjhhf$#dyb}_{t]rwZXnmVTTRRPPNjMKa`IGGEECC
AA?[Z=R;V8TSRQPO2G0KJIHGFED'<%@">7~5:{y10wu3tr*)pn,mk#"igge#dbxw`^z][q
pYWWUqTRhgPNjihgJ_HcEaZCX]@>TS<::8866442N1/ED-++)E(&<;$">=<;|3z7654321
0/.oJ+*)('&%$#"!~}|{zyxwvutsrqponmPkjihgfIGG#a`_^]\[Z=;;VUTSRQPON1//JI
HGFEDCB%##>=<;:9876wuu210/.-,+*kii&%$#"!~}|_]]xwvutsrqpSQQlkjihgfedGEE
`_^]\[ZYX;99TSRQPONML/--H*FEDC&;$?>=<;:{2y6v4-t+0qo'&mkki'hf|{dbb``^^\
\ZZXtsVkToQmfOdiLJ`_HFFDDBB@@>><XW:O8S5QPONML/D-HGFEDCBA$9"=};4{27xv.-
trrp.om%$ki'hf|{db~a_ut][wZXnmVTpSQgfOMMKgJH^]FD`_^]@U>Y;WP9NS64JI200.
J-+A@)'C&$:9"~~||z8yw/.ussq/pn&%lj('&%f{d!~}|{zyxwvY4srqTonmlkjMKK'edc
ba`_^A??ZYXWVUTSR533NMLKJIHGF)''BA@?>=<;:{yy6543210/.omm*)('&%$#"caa|{
zyxwvutWUUponmlkjihKIIdcba`_^]\?==XWVUTSRQP311L.JIHG*?(CBA@?>!6}:z81x/
4us+*qoom+lj"!hffddbb``^^\\ZvuXmVqSohQfkNLbaJHHFbECYXA??==;;9977553ON1
F/J,HGFEDC&;$?>=<;:98y0w4t2+r).om%$kiiggeec!b`vu^\\ZvYWmlUSSQmPNdcLJfe
dcF[D_A]V?TY<:PO86644220L/-CB+))''%%#?"~65|z8765v-t10/.-,+*)(iD%$#"!~}
|{zyxwvutsrqpoRmlkjihKII%pba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:987
654RQ
    

WhiteSpace – язык для спецагентов

Язык программирования WhiteSpace
Язык программирования WhiteSpace

WhiteSpace был изобретен для агентов спецслужб: код, написанный на этом языке, совершенно невидим, потому что состоит исключительно из пробелов, табуляции и переводов строк. «Увидеть» его можно только после выделения мышью. При этом любой видимый текст интерпретатор считает комментариями. Вот пример Hello, World на WhiteSpace:

        Hello,[Space]world![Space][Space][Tab][Space][Space][Tab][Space][Space][Space][LF]
[Tab][LF][Space][Space]
[Space][Space][Space][Tab][Tab][Space][Space][Tab][Space][Tab][LF]
[Tab][LF][Space][Space]
[Space][Space][Space][Tab][Tab][Space][Tab][Tab][Space][Space][LF]
[Tab][LF][Space][Space]
[Space][Space][Space][Tab][Tab][Space][Tab][Tab][Space][Space][LF]
[Tab][LF][Space][Space]
[Space][Space][Space][Tab][Tab][Space][Tab][Tab][Tab][Tab][LF]
[Tab][LF][Space][Space]
[Space][Space][Space][Tab][Space][Tab][Tab][Space][Space][LF]
[Tab][LF][Space][Space]
[Space][Space][Space][Tab][Space][Space][Space][Space][Space][LF]
[Tab][LF][Space][Space]
[Space][Space][Space][Tab][Tab][Tab][Space][Tab][Tab][Tab][LF]
[Tab][LF][Space][Space]
[Space][Space][Space][Tab][Tab][Space][Tab][Tab][Tab][Tab][LF]
[Tab][LF][Space][Space]
[Space][Space][Space][Tab][Tab][Tab][Space][Space][Tab][Space][LF]
[Tab][LF][Space][Space]
[Space][Space][Space][Tab][Tab][Space][Tab][Tab][Space][Space][LF]
[Tab][LF][Space][Space]
[Space][Space][Space][Tab][Tab][Space][Space][Tab][Space][Space][LF]
[Tab][LF][Space][Space]
[LF][LF][LF]
    

А так выглядит код с «подсветкой синтаксиса»:

WhiteSpace – выбор Джеймса Бонда и Человека-невидимки
WhiteSpace – выбор Джеймса Бонда и Человека-невидимки

Ook! – язык для орангутангов

Язык программирования Ook!
Язык программирования Ook!

Ook! – Brainfuck'оподобный язык, практически клон; единственное отличие в том, что в ЯП для орангутангов есть команда «дай указателю памяти банан»:

Сравнение синтаксиса Brainfuck и Ook!
Сравнение синтаксиса Brainfuck и Ook!

Hello, World на Ook! выглядит так:

        Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook.
Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.
    

И если этот код напомнил вам о чем-то из «Игры престолов», то спешим заверить: в честь Ходора создали несколько одноименных языков, вот один из них. Так, например, на языке Hodor выглядит запуск сервера:

        $HODOR: hodor? Hodor?!? HODOR. rhodor? Hodor Hodor  = rhodor? Hodor!?! hodor!? Hodor? rhodor? ('hodor? Hodor?!? HODOR. rhodor? Hodor Hodor ');
$HODOR: HODOR HODOR. HODOR.  = hodor? Hodor?!? HODOR. rhodor? Hodor Hodor ();

HODOR HODOR. HODOR. .hodor! hodor? hodor. ('/', HoDoRHoDoR (rhodor? Hodor!?! , rhodor? Hodor ) {
  rhodor? Hodor .Hodor hodor? HODOR? d('Hhodor? Hodor!? Hodor!? o Hooodorrhodor orHodor!? d!');
});

$HODOR: Hodor hodor? rHodor?! hodor? r = HODOR HODOR. HODOR. .Hodor!? Hodor? Hodor hodor. hodor? HODOR? (3000, HoDoRHoDoR () {

  $HODOR: hoHodor hodor.  = Hodor hodor? rHodor?! hodor? r.HODOR ddrhodor? Hodor Hodor ().HODOR ddrhodor? Hodor Hodor ;
  $HODOR: HODOR. orhodor.  = Hodor hodor? rHodor?! hodor? r.HODOR ddrhodor? Hodor Hodor ().HODOR. orhodor. ;

  hodor.hod('HooodorrHodor Hodor?!? HODOR Hodor. HODOR. Hodor!? hodor?  HODOR HODOR. HODOR.  Hodor!? Hodor? Hodor hodor. hodor? HODOR? Hodor? HODOR? hodor!  HODOR hodor.  hhodor. hodor. HODOR. ://%Hodor :%Hodor ', hoHodor hodor. , HODOR. orhodor. );

});
    

Chef – язык программирования для настоящих гурманов

Язык программирования Chef
Язык программирования Chef

Программы на Chef выглядят как кулинарные рецепты. Код программы состоит из отдельных блоков с перечнем переменных и их значений, а также инструкций по обработке. Переменные во всех случаях обозначаются именами реальных продуктов. Язык достаточно функционален и подходит для написания сложных программ. Chef – отличный вариант для всех, увлеченных нетривиальной кулинарией – этот код для Hello, World! при желании можно испечь, и результат будет вкусным:

        Hello World Cake with Chocolate sauce.

This prints hello world, while being tastier than Hello World Souffle. The main
chef makes a " world!" cake, which he puts in the baking dish. When he gets the
sous chef to make the "Hello" chocolate sauce, it gets put into the baking dish
and then the whole thing is printed when he refrigerates the sauce. When
actually cooking, I'm interpreting the chocolate sauce baking dish to be
separate from the cake one and Liquify to mean either melt or blend depending on
context.

Ingredients.
33 g chocolate chips
100 g butter
54 ml double cream
2 pinches baking powder
114 g sugar
111 ml beaten eggs
119 g flour
32 g cocoa powder
0 g cake mixture

Cooking time: 25 minutes.

Pre-heat oven to 180 degrees Celsius.

Method.
Put chocolate chips into the mixing bowl.
Put butter into the mixing bowl.
Put sugar into the mixing bowl.
Put beaten eggs into the mixing bowl.
Put flour into the mixing bowl.
Put baking powder into the mixing bowl.
Put cocoa  powder into the mixing bowl.
Stir the mixing bowl for 1 minute.
Combine double cream into the mixing bowl.
Stir the mixing bowl for 4 minutes.
Liquify the contents of the mixing bowl.
Pour contents of the mixing bowl into the baking dish.
bake the cake mixture.
Wait until baked.
Serve with chocolate sauce.

chocolate sauce.

Ingredients.
111 g sugar
108 ml hot water
108 ml heated double cream
101 g dark chocolate
72 g milk chocolate

Method.
Clean the mixing bowl.
Put sugar into the mixing bowl.
Put hot water into the mixing bowl.
Put heated double cream into the mixing bowl.
dissolve the sugar.
agitate the sugar until dissolved.
Liquify the dark chocolate.
Put dark chocolate into the mixing bowl.
Liquify the milk chocolate.
Put milk chocolate into the mixing bowl.
Liquify contents of the mixing bowl.
Pour contents of the mixing bowl into the baking dish.
Refrigerate for 1 hour.
    

Piet – язык программирования для абстракционистов

Язык программирования Piet
Язык программирования Piet

Piet – визуальный язык для ценителей абстрактного искусства. Создан и назван в честь художника-абстракциониста Пита Мондриана. Код пишется с помощью цветных блоков, каждый блок может состоять из 20 оттенков, и каждый цвет обрабатывается по-своему.

Цвета, которые использует Piet
Цвета, которые использует Piet

Компилятор отмечает различие между соседними цветами внутри каждого блока, затем перебирает оттенки цвета и обрабатывает каждый цвет отдельно. Блоки отделены друг от друга черным или белым цветом и могут иметь разное количество пикселей.

Любопытно, что Hello, World! на Piet выглядит скорее как Goodbye, World:

Увеличенная версия Hello, World! на Piet
Увеличенная версия Hello, World! на Piet

Существуют более продвинутые диалекты языка – Piet++ и 🅿🅸🅴🆃.

LOLCODE – язык для тех, у кого лапки

Язык программирования LOLCODE
Язык программирования LOLCODE

Сначала мемные котики обзавелись полноценным языком (здесь опубликовано лингвистическое исследование LOLspeak в pdf) и «священным писанием», а затем, естественно, им понадобился собственный язык программирования. Синтаксис LOLCODE основан на кошачьем сленге, и одновременно пародирует Cobol. Есть несколько онлайн IDE, исполняющих LOLCODE, и туториалов по «разработке» на мемном языке тоже хватает.

🐱🎨🙏🤖 10 самых странных языков программирования, о которых вы никогда не слышали

ArnoldC – язык для поклонников Терминатора

Язык программирования ArnoldC
Язык программирования ArnoldC

ArnoldC написан на Scala, и все команды в нем основаны на лаконичных цитатах из фильмов легендарного губернатора. Hello, World на ArnoldC выглядит так:

🐱🎨🙏🤖 10 самых странных языков программирования, о которых вы никогда не слышали

Синтаксис языка впечатляет:

Синтаксис языка ArnoldC
Синтаксис языка ArnoldC

Java2k – для тех, кто считает Java сложным языком

Язык программирования Java2k
Язык программирования Java2k

Java2k – язык вероятностный: даже встроенные функции на нем могут выполняться, а могут и нет. По оценке автора языка, вероятность возврата корректного результата встроенными функциями не превышает 90%. IDE для запуска кода на Java2k называется, логично, DIE. Написанные на Java2k программы выдают непредсказуемый результат при каждом запуске, и могут завершаться случайным образом – так автор реализовал сборку мусора. Hello, World на Java2k выглядит почти так же страшно, как и на Malbolge:

Hello, World на Java2k
Hello, World на Java2k

Velato – язык программирования для поклонников джаза

Язык программирования Velato
Язык программирования Velato

Velato предоставляет уникальную возможность: писать музыку и программный код одновременно. В качестве исходного кода Velato использует MIDI-файлы, и поскольку язык отличается большой гибкостью, этот код действительно может звучать как вполне гармоничная музыка с оттенком альтернативного джаза. Так выглядит Hello, World на Velato:

Hello, World на Velato
Hello, World на Velato

А так он звучит:

Команды Velato определяются интервалами между нотами: тактовый размер, тональность, длительность нот и другие аспекты MIDI-файла игнорируются компилятором. Если две ноты играются как аккорд без паузы между ними, то сначала интерпретируется та, что идeт первой в MIDI-файле. Чтобы код на Velato звучал более естественно и гармонично, можно изменять тональность между любыми двумя командами с помощью специального ключевого слова: это позволяет программисту выбрать начальную высоту тона, которая лучше впишется в мелодию.

Есть и другие языки, использующий музыкальные ноты, например Fugue и Musical notes, но Velato пока остается самым продвинутым.

А вы когда-нибудь программировали на эзотерическом языке? Или, возможно, даже пробовали создать собственный? Расскажите в комментариях!

Комментарии

ВАКАНСИИ

Добавить вакансию
Разработчик C++
Москва, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ