Writing code in Russian. Pros and cons of such a programme.

 
Dear programmers, I would like to discuss with you a rather strange topic - programming in Russian. English-speaking people write programs in their native language, while there is no such practice among Russian-speaking programmers. But the native language is always clearer and more convenient. The language we use in a program inevitably influences the development quality and even if a person might not notice it but once he or she tries to write in his or her native language there is no wish to return to English. Readability of the code is the most important factor when working with a program, in this case - why the practice of programming in English has become so common, even where there is no international programming teams and everyone writes for himself? Why must everyone follow this rule a priori and what happens if we break this stereotype?
 

It is not a stereotype but the size of the community. Besides, English is much more succinct than Russian.

It is not the right weight class to compete with the world language.

 
Комбинатор:

It is not a stereotype but the size of the community. Besides, English is much more succinct than Russian.

It's not the right weight class to compete with the world language.

It may be more concise, but for whom? For example - can you easily retell your message in English? For us, you and I, English is less concise, because it is less comprehensible. So I think...

Yes, and generally speaking about "world language"... Russian is not any worse.

I have two questions for you:

1. How many years have you been programming?

2. Have you ever tried (for yourself) to write a program in Russian?


The question is whether there is a stereotype and whether we are not hostages to it?

 
Реter Konow:
What happens if we break this stereotype?

May I have your answer? Destroy it - no question about it, let's do it now. What in practice should follow?

 
Alexander Puzanov:

May I have your answer? Destroy it - no question about it, let's do it now. What in practice should follow?

That's the point. My answer: I have long been astonished at the practice of writing programs in general. Ineffectiveness is often seen very often. Even the OOP (invented by somebody) is never questioned. Can't there be a better and more efficient approach? I confidently say that there is a better and more efficient approach and that programming in a native language is many times more convenient. All this is verified by my three-year practice and proven by my success in programming.

If you break the stereotype, you can become freer, come up with a new approach, increase efficiency, compress code... New horizons of possibilities open up for ourselves.

I can give examples of an alternative approach. Of course, it needs to be developed further, but the beginning has been laid. I was thinking to write an article about it. All in all, a bright software future awaits us in practice).

Here's my answer.

 
You can code in Russian in 1C. And only because 1C is a purely Russian development. Since most programming languages and compilers were not developed in Russia, the language used was not Russian.
 
Vitalii Ananev:
In 1C you can code in Russian.
1С? What is it?
 
Реter Konow:
1С? What is it?
In short, it is accounting software, but it can be used for more than that. They have many different configurations based on the same platform. The source code is open source and you can edit it as you like or write your own.
 
void Сдвинуть_панель_задач(int Расстояние)
{
 G_CORE[_TASKBAR][_MAIN_FRAME][_Y] += Расстояние;
 Явление_панели = 1;
 Объект(_TASKBAR);
 Явление_панели = 0;
}
//--------------------------------------
//--------------------------------------
//--------------------------------------

//---------------------------------------------------------------
//---------------------------------------------------------------
//---------------------------------------------------------------
void Явление_таскбара()
{
 int Номер_кнопки = 4;
 //------------------------
 int Позиция_этой_кнопки = 1;
 //----------------------------------------------------------
 //Цикл по окнам, которые представлены на таскбаре кнопками.
 //----------------------------------------------------------
 for(int a = 41; a < 61; a++)
  {
   if(G_CORE[_TASKBAR][_W_Properties][a] == 0)break;
   //-----------------------------------
   if(G_CORE[_TASKBAR][_W_Properties][a])
     {
      //-------------------------------------
      //---------------------------------------------------------------
      //---------------------------------------------------------------
      int Номер_представленного_окна = G_CORE[_TASKBAR][_W_Properties][a];
      //--------------------
      G_CORE[Номер_представленного_окна][_W_Properties][_WINDOW_REPRESENTED_BY_TASKBAR_BUTTON_NUMBER] = Номер_кнопки + 1; 
      //--------------------
      Установить_номер_вызываемого_окна_для_кнопки_таскбара(Номер_кнопки,Номер_представленного_окна);
      //--------------------
      Установить_лейбл_окна_на_кнопке_таскбара(Номер_кнопки + 1,G_CORE[_TASKBAR][_W_Properties][a]);
      //--------------------
      Установить_текст_подсказки_для_кнопки_таскбара(Номер_представленного_окна,Номер_кнопки + 1);
      //-------------------------------
      Расставить_черточки_кнопок_таскбара(Номер_кнопки);
      //-------------------------------

      Последняя_кнопка_ряда_таскбара = Позиция_этой_кнопки;//G_CORE[_TASKBAR][Номер_кнопки_по_позиции(Позиция_этой_кнопки)][_GROUP_COPY_NUMBER];
     // Alert("Явление_таскбара  Последняя_кнопка_ряда_таскбара   ",Последняя_кнопка_ряда_таскбара);
      //-------------------------------
      
      //-------------------------------
      //-------------------------------
      Позиция_этой_кнопки ++;
      //-------------------------------
     }
   //-----------------------------------  
   Номер_кнопки += 5;  
  }
 //-----------------------------------------------------------
 //От последней явленной иконки, прячем все остальные иконки.
 //-----------------------------------------------------------
Alert("Номер_кнопки  ",Номер_кнопки - 5);
 for(int a1 = Номер_кнопки; a1 < 500; a1++)
   {
    if(G_CORE[_TASKBAR][a1][_NAME] == 0)break;
    //--------------------------
    if(G_CORE[_TASKBAR][a1][_OBJECT_GROUP] == _TASKBAR_BUTTON_1)
      {
       G_CORE[_TASKBAR][a1][_OBJECT_HIDE] = 1;
      }
    //--------------------------  
   }
// Явление_окон(_WINDOW_OPEN,_TASKBAR);//таскбар
}/**/

//---------------------------------------------------------------
//---------------------------------------------------------------
//---------------------------------------------------------------
void Минимизировать_окно()
{
 Явление_окон(_WINDOW_CLOSE,ОКНО);
 //-------------------------------
 int Высота_текста = 11, заголовок = 2;
 //----------------------------------------------------
 //Номер первой кнопки как объекта на таскбаре.--------
 //----------------------------------------------------
 int Позиция_этой_кнопки,
     Исходная_позиция = 56;
 //---------------------------------------------------- 
 for(int a = 41; a < 61; a++)
   {
    if(G_CORE[_TASKBAR][_W_Properties][a] == ОКНО)
      {
       Явление_черточки_на_кнопке_таскбара(DELETE);
      // Alert("Минимизировать_окно которое уже есть");
       return;
      } 
    }  
 //---------------------------------------------------- 
 for(int a1 = 41; a1 < 61; a1++)
   {
    if(a1 == 41)Позиция_этой_кнопки = Исходная_позиция;
    else Позиция_этой_кнопки += 46;
   // Alert("Позиция_этой_кнопки  ",Позиция_этой_кнопки);
    //-------------------------------------------------
    if(G_CORE[_TASKBAR][_W_Properties][a1] == 0)
      {
       int Свободная_кнопка_справа = Номер_кнопки_по_позиции(Позиция_этой_кнопки);
       int Номер_копии_свободной_кнопки = G_CORE[_TASKBAR][Свободная_кнопка_справа][_GROUP_COPY_NUMBER];
       //---------------------------------------------------------------
       Последняя_кнопка_ряда_таскбара = Номер_копии_свободной_кнопки;
       //---------------------------------------------------------------
      // Alert("Свободная кнопка справа  ",Свободная_кнопка_справа,"  Позиция свободной кнопки справа   ",G_CORE[_TASKBAR][Свободная_кнопка_справа][_X]);
       //----------------------------------------------
       G_CORE[_TASKBAR][_W_Properties][a1] = ОКНО;   
       G_CORE[ОКНО][_W_Properties][_WINDOW_REPRESENTED_BY_TASKBAR_BUTTON_NUMBER] = Свободная_кнопка_справа + 1; 
       //----------------------------------------------
       //Записываем атрибуты окна.---------------------
       //----------------------------------------------
       Установить_номер_вызываемого_окна_для_кнопки_таскбара(Свободная_кнопка_справа + 1, ОКНО);
       //------------------------
       Установить_текст_подсказки_для_кнопки_таскбара(ОКНО,Свободная_кнопка_справа + 1);
       //----------------------------------------------
       Установить_лейбл_окна_на_кнопке_таскбара(Свободная_кнопка_справа + 1);
       //----------------------------------------------
       //Являем кнопку таскбара.
       //----------------------------------------------
       Явление_объектов(CREATE,_TASKBAR, 0,_TBB1,_GROUP_COPY_NUMBER,Номер_копии_свободной_кнопки);
       //----------------------------------------------
       Явление_черточки_на_кнопке_таскбара(DELETE);
       //----------------------------------------------
       break;
      }
    //------------------------------------------------------------------------  
   }
}
//---------------------------------------------------------------
//---------------------------------------------------------------
//---------------------------------------------------------------
void Стереть_кнопку_таскбара(int Номер_кнопки = 0)
{
 int Номер_копии_стираемой_кнопки;
 //---------------------------------------------------------------
 if(!Номер_кнопки)Номер_копии_стираемой_кнопки = G_CORE[_TASKBAR][ОБЪЕКТ][_GROUP_COPY_NUMBER];
 else Номер_копии_стираемой_кнопки = G_CORE[_TASKBAR][Номер_кнопки][_GROUP_COPY_NUMBER]; 
 //--------------------------------------------------------------- 
 Явление_объектов(DELETE,_TASKBAR, 0,_TBB1,_GROUP_COPY_NUMBER,Номер_копии_стираемой_кнопки);
 //---------------------------------------------------------------
 if(Открыто_окно[_TOOLTIP_WINDOW])Закрыть_окно_Tooltip(); 
 //---------------------------------------------------------------
 //Alert("Номер_копии_стираемой_кнопки   ",Номер_копии_стираемой_кнопки);
 //---------------------------------------------------------------
 Сместить_номера_представленных_окон(Номер_кнопки);
 //---------------------------------------------------------------
 if(Номер_копии_стираемой_кнопки != Последняя_кнопка_ряда_таскбара)
   {
    Ротация_кнопок_таскбара(Номер_копии_стираемой_кнопки);
   } 
 //--------------------------------------------------------------
} 
//---------------------------------------------------------------
//---------------------------------------------------------------
//---------------------------------------------------------------
//---------------------------------------------------------------
int Номер_кнопки_по_номеру_копии(int Номер_копии)
{
 //-------------------------
 for(int a1 = 4; a1 < 500; a1 += 5)
   {
    if(G_CORE[_TASKBAR][a1][_NAME] == 0)break;
    //---------------------------
    if(G_CORE[_TASKBAR][a1][_GROUP_COPY_NUMBER] == Номер_копии)return(a1);
   }
 //-------------------------
 return(0);
}
//---------------------------------------------------------------
int Номер_кнопки_по_позиции(int Позиция)
{
 //-------------------------
 for(int a1 = 4; a1 < 500; a1 += 5)
   {
    if(G_CORE[_TASKBAR][a1][_NAME] == 0)break;
    //---------------------------
    if(G_CORE[_TASKBAR][a1][_X] == Позиция)return(a1);
   }
 //-------------------------
 return(0); 
}
//---------------------------------------------------------------
//---------------------------------------------------------------
//---------------------------------------------------------------
void Ротация_кнопок_таскбара(int Номер_копии_стираемой_кнопки)
{
 int Шаг = 46;
 int Номер_последней_кнопки;
 int q;
 int Номер_кнопки;
 int Номер_стираемой_кнопки = Номер_кнопки_по_номеру_копии(Номер_копии_стираемой_кнопки);
 int Позиция_стираемой_кнопки = G_CORE[_TASKBAR][Номер_стираемой_кнопки][_X];
 int Исходная_позиция = Позиция_стираемой_кнопки + Шаг; 
 //Alert("  Позиция_стираемой_кнопки   ",Позиция_стираемой_кнопки,"   Исходная_позиция   ",Исходная_позиция,"   Номер_стираемой_кнопки  ",Номер_стираемой_кнопки);
 //-----------------------------------------------------------
 for(int Позиция = Исходная_позиция; Позиция < 3000; Позиция += Шаг)
   {
    Номер_кнопки    = Номер_кнопки_по_позиции(Позиция);
    //------------------------------------------------
    if(G_CORE[_TASKBAR][Номер_кнопки][_OBJECT_HIDE])
      {
       //-------------------
       G_CORE[_TASKBAR][Номер_стираемой_кнопки][_X]     = G_CORE[_TASKBAR][Номер_последней_кнопки][_X];
       G_CORE[_TASKBAR][Номер_стираемой_кнопки + 1][_X] = G_CORE[_TASKBAR][Номер_последней_кнопки + 1][_X];
       G_CORE[_TASKBAR][Номер_стираемой_кнопки + 2][_X] = G_CORE[_TASKBAR][Номер_последней_кнопки + 2][_X];
       G_CORE[_TASKBAR][Номер_стираемой_кнопки + 3][_X] = G_CORE[_TASKBAR][Номер_последней_кнопки + 3][_X];
       G_CORE[_TASKBAR][Номер_стираемой_кнопки + 4][_X] = G_CORE[_TASKBAR][Номер_последней_кнопки + 4][_X];
       //-------------------
       //Alert("Ротация_кнопок_таскбара  -  новая Позиция стертой кнопки   ",G_CORE[_TASKBAR][Номер_стираемой_кнопки][_X]);
       break;
      }
    //------------------------------   
    Alert("Ротация_кнопок    Номер_кнопки   ",Номер_кнопки);
    //------------------------------
    if(G_CORE[_TASKBAR][Номер_кнопки][_OBJECT_GROUP] == _TASKBAR_BUTTON_1)
      {
       //------------------------------
       Поведение_объектов(_STOPABLE_SINGLE_PLAY_MODE, _USER_EVENT, _TASKBAR, Номер_кнопки, Номер_ячейки_SCENARIO(_SC35));
       Поведение_объектов(_STOPABLE_SINGLE_PLAY_MODE, _USER_EVENT, _TASKBAR, Номер_кнопки + 1, Номер_ячейки_SCENARIO(_SC35));
       Поведение_объектов(_STOPABLE_SINGLE_PLAY_MODE, _USER_EVENT, _TASKBAR, Номер_кнопки + 2, Номер_ячейки_SCENARIO(_SC35));
       Поведение_объектов(_STOPABLE_SINGLE_PLAY_MODE, _USER_EVENT, _TASKBAR, Номер_кнопки + 3, Номер_ячейки_SCENARIO(_SC35));
       Поведение_объектов(_STOPABLE_SINGLE_PLAY_MODE, _USER_EVENT, _TASKBAR, Номер_кнопки + 4, Номер_ячейки_SCENARIO(_SC35));

      /* Поведение_объектов(_STOPABLE_SINGLE_PLAY_MODE, _USER_EVENT, _TASKBAR, Номер_кнопки, Номер_ячейки(_SC35));
       Поведение_объектов(_STOPABLE_SINGLE_PLAY_MODE, _USER_EVENT, _TASKBAR, Номер_кнопки + 1, Номер_ячейки(_SC35));
       Поведение_объектов(_STOPABLE_SINGLE_PLAY_MODE, _USER_EVENT, _TASKBAR, Номер_кнопки + 2, Номер_ячейки(_SC35));
       Поведение_объектов(_STOPABLE_SINGLE_PLAY_MODE, _USER_EVENT, _TASKBAR, Номер_кнопки + 3, Номер_ячейки(_SC35));
       Поведение_объектов(_STOPABLE_SINGLE_PLAY_MODE, _USER_EVENT, _TASKBAR, Номер_кнопки + 4, Номер_ячейки(_SC35));*/

       //------------------------------
       Список_перемещенных_объектов[q]     = Номер_кнопки;
       Список_перемещенных_объектов[q + 1] = Номер_кнопки + 1;
       Список_перемещенных_объектов[q + 2] = Номер_кнопки + 2;
       Список_перемещенных_объектов[q + 3] = Номер_кнопки + 3;
       Список_перемещенных_объектов[q + 4] = Номер_кнопки + 4;
       //------------------------------
       Номер_последней_кнопки = Номер_кнопки;
       //------------------------------ 
       q += 5;
      } 
   }
 //------------------------------------  
 //------------------------------------ 
 Отложенный_вызов = 1;
 Индекс_отложенного_вызова_функции = 1;
 Пауза_в_периодах_таймера = 10;
 //------------------------------------
}   
//---------------------------------------------------------------
//---------------------------------------------------------------
//---------------------------------------------------------------
void Сместить_номера_представленных_окон(int Номер_кнопки = 0)
{
 int Номер_этой_кнопки;
 //-----------------------------------
 if(Номер_кнопки == 0)Номер_этой_кнопки = ОБЪЕКТ;
 else Номер_этой_кнопки = Номер_кнопки;
 //-----------------------------------
 int Номер_окна_стираемой_кнопки = G_CORE[_TASKBAR][Номер_этой_кнопки][_WON];
 //-----------------------------------
 G_CORE[Номер_окна_стираемой_кнопки][_W_Properties][_WINDOW_REPRESENTED_BY_TASKBAR_BUTTON_NUMBER] = 0;
 //-----------------------------------
Here is a small sample code of my programme. Here I combine Russian and English, but with a clear preponderance of Russian. Everything is very clear and readable.
 
Реter Konow:
Here is a short example of my program code. Here I have a mix of Russian and English, but with a large preponderance of Russian. All very clear and readable.

And you're talking about writing the names of custom functions and variables in Russian. No one writes them that way. A long time ago programmers developed certain rules of etiquette. How to properly format the source code so that it was easy to read not only for you but for others as well. It is like the rules of etiquette in society.

In 1C, on the other hand, everything is written entirely in Russian. For example function () ..... endfunction. loop ... end of cycle if ... end if. etc. etc.

 
Реter Konow:

In general, a bright software future awaits us in practice).

A bright future for the English alone is a double standard, no question. But it is embarrassing that Chinese and Japanese will start to break the stereotype too... I guess nobody is demanding source code from you?
Reason: