Старославянский СиЪ

Опубликовано 12.12.2010 в 12:46 в разделе ,

Язык программирования C/C++ является самым гибким языком в мире, его в чём-то можно даже назвать языком-мазохистом, поскольку он позволяет извращать себя всеми доступными способами, даже делая похожим на любые другие языки программирования, кроме разве что LISP’а, и то не факт.

Издевательства над языком бывают разными. Сейчас мне в голову пришло сотворить из C этакий старославянский недо-Бэйсик, ночной кошмар любого программиста на 1С-диалекте. Получилась смесь старославянского, церковно-славянского, некоего диалекта Упячки и чего-то странного ещё …

Встречайте, Старославянский СиЪ! Твёрдый знак — для важности …

Чтобы сделать из своего любимого языка такую дребедень, нам понадобится один особый файлик — ancientslavic.h — код которого представлен ниже.

// Файл: ancientslavic.h - переопределение языка

// Мелочи жизни
#define поболе >=
#define помене <=
#define боле >
#define мене <
#define аки ==
#define стане =
#define да +
#define без -
#define раз *
#define дели /
#define ъ ;
#define право true
#define бреше false
#define дулю 0

// if () { } else if () { } else { }
#define коли if( 
#define пущай ){
#define ежели }else if(
#define либо }else{
#define аминь }
// коли а аки 1 пущай в стане 1 ежели а аки 2 пущай в стане 4 либо стане 0 аминь

// while () {} do{} while() for {}
#define покуда while(
#define твори do{
#define доколе }while(
#define буде );
#define откель for(
#define ступай goto
#define вон exit
#define 
// покуда а мене 10 пущай а стане а да 1 аминь
// твори а стане а без 1 доколе а поболе 0 буде

// int float char etc
#define цело int
#define дробно float
#define передробно double
#define азъ char
#define непотребо void

// I/O
#define молви printf
#define поведай scanf

// Процедура - это функция, которая нам ничего не даёт, отсюда:
#define молитва int 
#define мольба void 
#define отченаш main(){
#define воздати return
// молитва отченаш воздати 0 ъ аминь

Оговорюсь — я даже и помыслить не могу, что это будет работать! Я не тестировал, и боюсь, что не буду тестировать этот код. Систему он точно не повесит, но для его запуска гарантированно надо тонко настроить компилятор.

Ради интереса, попробуем написать элементарную программку, которая будет печатать таблицу значений функции y=x+2 от нуля до введённой пользователем границы …

#include <stdio.h>
#include "ancientslavic.h"

молитва отченаш

  цело x, y, xmax ъ

  молви ( "Введите предел по икс (5-15): " ) ъ
  поведай ( "%d", &x ) ъ

  x стане дулю ъ
  покуда х помене xmax пущай
    у стане х да 2 ъ
    молви ( "y (%d) = %d\n", x, y ) ъ
    х стане х да 1 ъ
  аминь

  молви ( "Готово" ) ъ
  воздати дулю ъ

аминь

Вот такая красотень и муть!

С нетерпением жду Ваших примеров и доработок! ;)