Я пиарюсь → Археология в языках программирования
Сегодня исполняется четыре года энциклопедии языков программирования Прогопедия — проекту, в котором я участвую уже почти два года.
К юбилею Прогопедия достигла приятной округлости не только дат, но и цифр: сейчас в ней описано ровно 100 языков! Сотым языком стал гастрономический Chef. Нормальные мейнстрим-языки в энциклопедии тоже есть, их даже больше, чем эзотерических. Но лично мне интереснее писать о последних, чем я и занимаюсь, в частности, на Хабре — ведь стать экспертом по Hanoi Love гораздо быстрее и проще, чем по Haskell ;-)
Вообще задача даже поверхностного изучения языков становится нетривиальной, как только они уходят в сторону от мейнстрима. Умирают сайты, посвященные языкам, и даже их зеркала и архивы, теряются во мраке времен авторские реализации, от когда-то используемого языка остаются только строчки в каком-нибудь словаре. Бывают и совсем курьезные случаи.
К юбилею Прогопедия достигла приятной округлости не только дат, но и цифр: сейчас в ней описано ровно 100 языков! Сотым языком стал гастрономический Chef. Нормальные мейнстрим-языки в энциклопедии тоже есть, их даже больше, чем эзотерических. Но лично мне интереснее писать о последних, чем я и занимаюсь, в частности, на Хабре — ведь стать экспертом по Hanoi Love гораздо быстрее и проще, чем по Haskell ;-)
Вообще задача даже поверхностного изучения языков становится нетривиальной, как только они уходят в сторону от мейнстрима. Умирают сайты, посвященные языкам, и даже их зеркала и архивы, теряются во мраке времен авторские реализации, от когда-то используемого языка остаются только строчки в каком-нибудь словаре. Бывают и совсем курьезные случаи.
Ненормальное программирование → 10 противоестественных способов вычисления чисел Фибоначчи
Задача вычисления первых двух десятков чисел Фибоначчи давно потеряла практическую ценность для программистов и используется преимущественно для иллюстрации базовых принципов программирования — рекурсии и итерации. Я же использую ее для демонстрации нескольких языков программирования, в которых она приобретает необычный и местами даже нездоровый вид.
Итак, мой рейтинг десяти наиболее противоестественных способов вычисления чисел Фибоначчи из написанных мной за последние полгода в рамках проекта Progopedia. Для уточнения задачи потребуем, чтобы выводом программы были первые 16 чисел в виде
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987,…
Визуальный язык программирования, в котором все элементы языка представлены в виде элементарных блоков, из которых составляется собственно «код», именуемый диаграммой потоков (flowgram). Место в рейтинге этот язык заслужил размером диаграмм (два, ну три десятка элементов — максимум, который можно использовать на одной диаграмме без скроллинга и окончательного запутывания в связях между блоками) и неудобством использования ключевых структур языка (каждый цикл или условный переход требует для своего описания одной или нескольких отдельных диаграмм, которые мгновенно загромождают логику программы многоуровневой вложенностью и передачей глобальных переменных в виде параметров цикла). Ну, и собственно визуальностью — программа не пишется, а рисуется, и клавиатура как таковая используется только для ввода значений констант и (опционально) переименования элементарных блоков и написания комментариев.

Главная диаграмма потоков
Итак, мой рейтинг десяти наиболее противоестественных способов вычисления чисел Фибоначчи из написанных мной за последние полгода в рамках проекта Progopedia. Для уточнения задачи потребуем, чтобы выводом программы были первые 16 чисел в виде
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987,…
10. Sanscript
Визуальный язык программирования, в котором все элементы языка представлены в виде элементарных блоков, из которых составляется собственно «код», именуемый диаграммой потоков (flowgram). Место в рейтинге этот язык заслужил размером диаграмм (два, ну три десятка элементов — максимум, который можно использовать на одной диаграмме без скроллинга и окончательного запутывания в связях между блоками) и неудобством использования ключевых структур языка (каждый цикл или условный переход требует для своего описания одной или нескольких отдельных диаграмм, которые мгновенно загромождают логику программы многоуровневой вложенностью и передачей глобальных переменных в виде параметров цикла). Ну, и собственно визуальностью — программа не пишется, а рисуется, и клавиатура как таковая используется только для ввода значений констант и (опционально) переименования элементарных блоков и написания комментариев.

Главная диаграмма потоков
Персональные блоги → Эзотерический язык программирования под названием «… твою мать»
Забавный эзотерический язык программирования создали наши китайские коллеги.
Проект расположен на code.google.com и его название звучит примерно как «ё* твою мать».
Почему такое название? Один из дико популярных интернет-мемов в китайском интернете — выражение 草泥马 (цао ни ма, буквально «лошадка травяной грязи», см. словарь китайского сленга).
Юмор в том, что «цао ни ма» звучит в точности как китайское выражение «ё* твою мать», главное китайское ругательство, которое произносится точно так же, но записывается по-другому. По популярности этот мем сравнится, пожалуй, разве что с нашим «преведом», который в свое время знали практически все люди, общающиеся в интернете.
В языке программирования «Цао ни ма» допустимы лишь четыре лексемы, а все остальные символы рассматриваются как комментарии:
— 草 (цао; «трава», звучит как «е***ь»);
— 泥 (ни; «грязь», звучит как «твою»);
— 马 (ма; «лошадь», звучит как «мать»);
— 河蟹 (хэсе; «речной краб», звучит как «гармонизировать», что на сленге означает «подвергнуть цензуре»). Означает конец программы.
Пример программы, выполняющей цикл от 1 до 10:
Проект расположен на code.google.com и его название звучит примерно как «ё* твою мать».
Почему такое название? Один из дико популярных интернет-мемов в китайском интернете — выражение 草泥马 (цао ни ма, буквально «лошадка травяной грязи», см. словарь китайского сленга).
Юмор в том, что «цао ни ма» звучит в точности как китайское выражение «ё* твою мать», главное китайское ругательство, которое произносится точно так же, но записывается по-другому. По популярности этот мем сравнится, пожалуй, разве что с нашим «преведом», который в свое время знали практически все люди, общающиеся в интернете.
В языке программирования «Цао ни ма» допустимы лишь четыре лексемы, а все остальные символы рассматриваются как комментарии:
— 草 (цао; «трава», звучит как «е***ь»);
— 泥 (ни; «грязь», звучит как «твою»);
— 马 (ма; «лошадь», звучит как «мать»);
— 河蟹 (хэсе; «речной краб», звучит как «гармонизировать», что на сленге означает «подвергнуть цензуре»). Означает конец программы.
Пример программы, выполняющей цикл от 1 до 10:
| Текст программы | Как звучит | Что выполняет |
|---|---|---|
| 草-草 草泥马 | ё* — ё* ё* твою мать | Записать в стек единицу |
| 马-草草 草泥草草草草泥泥马 | мать — ё* ё* ё* твою ё* ё* ё* ё* твою твою мать | Установить метку в этой точке |
| 草-马草 | ё* — мать ё* | Дублировать верхний элемент стека |
| 泥马-草泥 | твою мать — ё* твою | Вывести текущее значение |
| 草草 草泥草泥草马 | ё* ё* ё* твою ё* твою ё* мать | Поместить в стек 10 и символ перевода строки) |
| 泥马-草草 | твою мать — ё* ё* | Вывести новую строку |
| Продолжение примера программы на code.google.com. |
Ненормальное программирование → Программирование на языке Piet для сусликов
Добрый день.
Кризис, мало заказов, появилось немного свободного времени? Самое время научиться писать важные и полезные программы на эзотерическом языке Piet, который использует разноцветные изображения в качестве операторов. Я написал вот такую:

С ее помощью суслики(и не только) могут узнать, с какой скоростью им следует размножаться, чтобы удвоить свою численность за X лет. Работать с программой очень просто: вводишь X, получаешь %, на который стоит увеличивать свою популяцию за год.
Кризис, мало заказов, появилось немного свободного времени? Самое время научиться писать важные и полезные программы на эзотерическом языке Piet, который использует разноцветные изображения в качестве операторов. Я написал вот такую:

С ее помощью суслики(и не только) могут узнать, с какой скоростью им следует размножаться, чтобы удвоить свою численность за X лет. Работать с программой очень просто: вводишь X, получаешь %, на который стоит увеличивать свою популяцию за год.