Язык программирования РПЦ++

Дамы и господа! Сегодня, в честь прошедшего дня программиста, мы анонсируем новую, инновационную отечественную технологию! Российскими учеными из Сколково совместно со специалистами из 1С, ALT Linux, Роснано, а также при поддержке партии Единая Россия и с благословления РПЦ был разработан новейший язык программирования - РПЦ ++ !

Данный язык представляет собой не только мощнейшее средство разработки, не имеющее аналогов в мире, его уникальность заключается также в том, что сама суть языка учитывает современные Российские реалии, а также новые веяния недалекого будующего, благодаря чему РПЦ++ можно рассмартивать и с точки зрения средства социализации, приобщения к Великой Русской Культуре! Это открывает перед языком новые горизонты, в частности возможность использования в качестве универсального средства образования: школьники имеют уникальную возможность изучать одновременно программирование и обществознание что позволяет отменить оба эти предмета и сэкономить на зарплате учителям

А теперь, в сторону слова, давайте посмотрим код!

Живой код
Программа на РПЦ++ ...Кэп кагбэ комментирует...
ДарБожий "Речь"
ДарБожий "Письменность"
ДарБожий "Слово"
Все мы грешные;

Святой число ПОБОЙСЯ_БОГА это 1;

РабБожий Писец:
своё:
    Пергамент записка;
общее:

    РодилсяПисец(строка имя_записки):
        Новый записка(имя_записки);
    Аминь!
    
    Повинность писать(строка изречение):
        Ежели записка.открыта Быть по сему:
            записка.дописать(изречение);
        Аминь!
    Аминь!
    
    СмертьПисец:
        Ежели записка.открыта Быть по сему:
            записка.закрыть;
        Аминь!
        Казнить записка;
    Аминь!
Аминь!

РабБожий Холоп:
своё:
    Писец Тришка;
общее:
    ПозватьПисца(Писец)
        Тришка это Писец;
    Аминь!
    
Аминь!

РабБожий Глашатай, холоп Писец:
своё:
    Уста глас;
общее:
    РодилсяГлашатай(строка имя_записки)
        Новый глас(имя_записки);
    Аминь!
    
    Повиность читать:
        Ежели глас.не_нем Быть по сему:
            строка изречение;
            Покуда глас.глаголит Быть по сему:
                изречение прибавить это глас.изречь;
            Аминь!
            Тришка.писать("Барин мысль изрек");
            Огласить изречение;
        Аминь!
        Тришка.писать("Барин изволил молчать");
        Огласить "тишина";
    Аминь!
Аминь!

РабБожий Граматей, холоп Писец:
своё:
    Пергамент записка;
    
общее:
    РодилсяГраматей(строка имя_записки):
        Новый записка(имя_записки);
    Аминь!
    
    Повинность раздумье(строка мысль):
        
        ТакЛи ЕстьСотона это нет;
        
        молиться:
            ЕстьСотона это мысль.искать("Сотона");
            Ежели ЕстьСотона Быть по сему:
                КараГосподня ПОБОЙСЯ_БОГА;
            Аминь!
        каяться:
            Тришка.писать("Прости, Господи!");
            Тришка.писать("Отче наш.......");
        Аминь!
        
        строка что_надумал это "Боярин "+мысль.число_буквиц+" буквиц изречь изволил"ж
        записка.дописать(что_надумал);
        записка.закрыть;
        Огласить ЕстьСотона;
    Аминь!
Аминь!

ВоляЦаря()
    строка что_зачитать это "сообщение.текст";
    Глашатай Морозов(что_зачитать);
    
    строка куда_записать это "записка.текст";
    Граматей Петька(куда_записать);
    
    строка где_летопись это "летопись.текст";
    Писец Тришка(где_летопись);
    
    Глашатай.ПозватьПисца(Тришка);
    Граматей.ПозватьПисца(Тришка);
    
    строка изречение это Глашатай.читать;
    строка вывод это Граматей.раздумье(изречение);
    Огласить вывод;
    
Аминь!
 

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

const int MAIN_EXCEPTION = 1;

class Logger
{
private:
    ofstream* f_out;
public:
    Logger(string filename)
    {
        f_out=0;
        f_out = new ofstream(filename.c_str());
    }
    
    void log(string message)
    {
        if(f_out!=0)
        {
            if(f_out->is_open())
            {
                *f_out<<message<<endl;
            }
        }
    }
    
    ~Logger()
    {
        if(f_out!=0)
        {
            if(f_out->is_open())
            {
                f_out->close();
            }
            delete f_out;
        }
    }
};

class Base
{
protected:
    Logger *logger;
public:
    void setLogger(Logger* l)
    {
        logger=l;
    }
    
};

class Reader:public Base
{
private:
    ifstream* f_in;
public:
    Reader(string filename)
    {
        f_in = new ifstream(filename.c_str());
    }
    
    string readFile()
    {
        if(f_in->is_open())
        {
            string data;
            while(!f_in->eof())
            {
                data += f_in->get();
            }
            logger->log("read success!");
            return data;
        }
        logger->log("read fail!");
        return "error";
    }
};

class Analyser :public Base
{
private:
    ofstream* f_out;
    
public:
    Analyser(string filename)
    {
        f_out = new ofstream(filename.c_str());
    }
    
    bool analyse(string data)
    {
        bool has_sotona=false;
        try {
            int pos=data.find("Sotona");
            if(pos != -1)
                throw MAIN_EXCEPTION;
        }
        catch(int v)
        {
            logger->log("Sotona detected!!!");
            logger->log("molitva");
            has_sotona=true;
        }
        char msg[100];
        sprintf(msg,"there are %i chars in string.",data.length(),data.c_str());
        *f_out<<msg;
        f_out->close();
        return has_sotona;
    }
};

int main(int argc,char** argv)
{
    string file_to_read = "message.txt";
    Reader r(file_to_read);
    
    string file_to_save="description.txt";
    Analyser c(file_to_save);
    
    string log_file="log.txt";
    Logger l(log_file);
    
    r.setLogger(&l);
    c.setLogger(&l);
    
    return c.analyse(r.readFile());
}
 

Уверен, вы оценили простоту, понятность и гибкость РПЦ++! Теперь немного теории. Основным принципом языка, заложенным в самую его основу, является "Молиться, поститься, слушать радио "Рапдонеж". Несложно заметить, что духом этих принципов пронизана каждая строчка кода. Что дают эти принципы на практике? 

  1. Усердная молитва ускоряет разработку, повышает качество кода, скорость компиляции, и даже оказывает влияние на качество работы флагов оптимизации. Специалистами РПЦ также доказано,что программа, написанная с молитвой, содержит меньше ошибок, работает стабильнее и быстрее.
  2. Пост как состояние души программиста позволяет отвлечься от всего мирского, посвятить себя полностью программированию и, что ещё важнее, - служению Господу и земным наместникам Его.
  3. Радио "Радонеж", как доказано учеными из РПЦ,не только помогает обрести духовную чистоту, но и надежно защищает компьютер от вирусов и прочих нечистых сил, особенно если применяется совместно с постом и молитвой. Кроме того, если Вы одержимы нечистым и молитва с постом Вам недоступны, регулярное употребление радио "Радонеж" может в корне изменить ситуацию.

Одним из важных достоинств языка является его переносимость. В этой области РПЦ++ также достиг непревзойденных высот, благодаря использованию технологий [email protected] в компиляторе! Compile once, run anywhere! 

К сожалению, программисты не успели выпустить релиз к своему профессиональному празднику, по той богоугодной причине, что весь день напролет истово молились за Премьера и Президента Его. К тому же, поскольку милостыня была получена давно, а все подати уплачены, все программисты соблюдают строгий пост, что также накладывает незначительные ограничения на их возможности. 

Но, с Божъей помощью, на базе РПЦ++ мы планитуем выпустить РПЦ ОС, которая позволила бы мирянам эффективно выполнять повинности, уплачивать подати, отправлять царю челобитные и контролировать расходы полученной милостыни. Планируется тесная интеграция ОС с такими социальными сервисами как ФСБ (Федеральная Служба Багрепортов), МВД (Министерство Всепрощения и Духовности), и многими другими! 

А пока... молитесь, поститесь, слушайте радио "Радонеж"!  И всех с прошедшим праздником!
 Аминь!