FALSE
FALSE — езотерична мова програмування, яку створив 1993 року Ваутер ван Ортмерссен з двома, за його словами, цілями:
FALSE став однією з перших езотеричних мов програмування, зокрема він став джерелом натхнення для автора знаменитої мови Brainfuck. Вважають, що саме з FALSE почалася мода на езотеричні мови програмування. Разом з тим FALSE — достатньо практична мова програмування. Хоча її й відрізняє непрочитний синтаксис, мова підтримує розумний набір операцій, на відміну від Brainfuck, який є реалізацією варіанту машини Тюрінга, не кажучи вже про такі «жахливі» мови як INTERCAL і Malbolge. Джерелом ідей для FALSE була мова Forth, її синтаксис також нагадує синтаксис відомого калькулятора dc для UNIX (зі зворотною польською нотацією). Одним з основних джерел складності під час програмування на FALSE є використання екзотичних знаків пунктуації (не розділюваних пропусками) замість форт-слів. Базові операціїАрифметичні операції Досить екзотичний синтаксис у FALSE мають стекові операції:
Змінні і підпрограмиЗмінні у FALSE позначаються однією малою латинською літерою (a-z), всі змінні глобальні. Для присвоювання змінній значення (взятого з вершини стека) використовується операція двокрапка Однак, оскільки FALSE — стекова мова, змінні рідко бувають потрібні для зберігання звичайних числових значень. Найчастіше їх використовують як функції — в них зберігають лямбда-вирази, наприклад: [1+]i: Це визначення функції інкремент, і їй дається назва i (все, що міститься між '[' і ']' — це і є лямбда-вираз). Для виконання лямбда-виразу використовується операція Керувальні конструкціїУ FALSE є дві керувальні конструкції if (позначається a;1=[3b:]? — якщо a=1, присвоїти b значення 3. [a;1=][2f;!]# — поки a=1, застосовувати функцію f до значення 2. Ввід/вивідРядки у FALSE — це все, що укладено між двома лапками a;1=["одиниця"]? Для виведення цілого числа використовується операція крапка ПрикладПриклад визначення функції факторіал мовою FALSE: [$1=$[\%1\]?~[$1-f;!*]?]F: РеалізаціяFALSE реалізовано як написаний на асемблері для процесорів 68000 компілятор розміром 1024 байти і переносний інтерпретатор, написаний на Сі (на сайті доступна виконувана версія для DOS). Є також реалізація інтерпретатора і компілятора для 386 DOS на ANSI Forth. Доступна також реалізація FALSE на JavaScript. Варіанти FALSEЄ написаний на ML функціональний варіант мови Strictly False [Архівовано 9 квітня 2020 у Wayback Machine.]. Ще одне функціональне розширення FALSE — мова F [Архівовано 14 березня 2021 у Wayback Machine.] (Functional False), написана на K (і реалізація «чистої» FALSE тією ж мовою[2]). owlРозвитком ідей FALSE є мова owl (англ. Obfuscated Weird Language), яку розробив Antonio Maschio між 2005 і 2006. Від FALSE її відрізняє значна практична спрямованість, розширений набір операцій (з іншим символьним позначенням), наявність роботи з рядками тощо. Зокрема, owl розрізняє цілі змінні і змінні-функції. Перші позначаються великими літерами, другі малими. Для присвоювання значень і тим, і іншим використовується кома Як if і while використовують символи Операції
Символи дужок використовують для введення-виведення: owl також дозволяє підключати inc файли У owl (що більш ніж незвично для езотеричних мов) навіть можна вставляти в програму коментарі: рядкові, що починаються з Кросплатформовий інтерпретатор owl написано на Сі. Під Windows не підтримуються можливості налагодження і профілювання, не працює функція Тепер розглянемо програму виведення простих чисел на FALSE і її переклад на owl:
999 9 [1-$][\$@$@$@$@\/*=[1-$$[%\1-$@]?0=[\$.' ,\]?]?]#
999 9[1-%][$%2'%2'%2'%2'$/*=[1-%%[;$1-%2']?0=[$%.32)$]?]?]! Наступний приклад — програма обчислення факторіала^ %0>~[?!]?"Factorial of "%." is "%1=[;1.][%1-[%1=~][%2'*$1-]!;.] Див. такожПриміткиПосилання
|