Código de redação em russo. Prós e contras de um programa desse tipo.

 
Caros programadores, gostaria de discutir com vocês um tópico bastante estranho - a programação em russo. Os falantes de inglês escrevem programas em sua língua nativa, enquanto não existe tal prática entre os programadores que falam russo. Mas a língua nativa é sempre mais clara e mais conveniente. O idioma que usamos em um programa influencia inevitavelmente a qualidade do desenvolvimento e mesmo que uma pessoa possa não notar, mas uma vez que tente escrever em seu idioma nativo, não há desejo de voltar ao inglês. A legibilidade do código é o fator mais importante quando se trabalha com um programa, neste caso - por que a prática da programação em inglês se tornou tão comum, mesmo onde não há equipes internacionais de programação e cada um escreve por si mesmo? Por que todos devem seguir esta regra a priori e o que acontece se quebrarmos este estereótipo?
 

Não se trata de um estereótipo, mas do tamanho da comunidade. Além disso, o inglês é muito mais sucinto do que o russo.

Não é a classe de peso certa para competir com a língua mundial.

 
Комбинатор:

Não se trata de um estereótipo, mas do tamanho da comunidade. Além disso, o inglês é muito mais sucinto do que o russo.

Não é a classe de peso certa para competir com a língua mundial.

Pode ser mais conciso, mas para quem? Por exemplo - você pode recontar facilmente sua mensagem em inglês? Para nós, você e eu, o inglês é menos conciso, porque é menos compreensível. Então eu acho que...

Sim, e em geral falando de "língua mundial"... O russo não é pior.

Tenho duas perguntas para você:

1. Quantos anos você tem programado?

2. Você já tentou (para si mesmo) escrever um programa em russo?


A questão é se existe um estereótipo e se não somos reféns dele?

 
Реter Konow:
O que acontece se quebrarmos este estereótipo?

Pode me dar sua resposta? Destrua-o - sem dúvida, vamos fazê-lo agora. O que na prática deve seguir?

 
Alexander Puzanov:

Pode me dar sua resposta? Destrua-o - sem dúvida, vamos fazê-lo agora. O que na prática deve seguir?

Essa é a questão. Minha resposta: há muito tempo estou surpreso com a prática de escrever programas em geral. A ineficácia é muitas vezes vista com muita freqüência. Mesmo o OOP (inventado por alguém) nunca é questionado. Não pode haver uma abordagem melhor e mais eficiente? Eu digo com confiança que existe uma abordagem melhor e mais eficiente e que a programação em uma linguagem nativa é muitas vezes mais conveniente. Tudo isso é verificado por meus três anos de prática e comprovado por meu sucesso em programação.

Se você quebrar o estereótipo, você pode se tornar mais livre, inventar uma nova abordagem, aumentar a eficiência, comprimir o código... Novos horizontes de possibilidades se abrem para nós mesmos.

Posso dar exemplos de uma abordagem alternativa. É claro que precisa ser mais desenvolvido, mas o início já foi estabelecido. Eu estava pensando em escrever um artigo sobre o assunto. Em resumo, um futuro brilhante de software nos espera na prática).

Aqui está minha resposta.

 
Você pode codificar em russo em 1C. E somente porque 1C é um desenvolvimento puramente russo. Como a maioria das linguagens de programação e compiladores não foram desenvolvidos na Rússia, a linguagem utilizada não era o russo.
 
Vitalii Ananev:
Em 1C você pode codificar em russo.
1С? O que é isso?
 
Реter Konow:
1С? O que é isso?
Em resumo, é um software de contabilidade, mas pode ser usado para mais do que isso. Eles têm muitas configurações diferentes com base na mesma plataforma. O código fonte é de código aberto e você pode editá-lo como quiser ou escrever o seu próprio código fonte.
 
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;
 //-----------------------------------
Aqui está um pequeno código de amostra do meu programa. Aqui eu combino russo e inglês, mas com uma clara preponderância do russo. Tudo é muito claro e legível.
 
Реter Konow:
Aqui está um pequeno exemplo do código do meu programa. Aqui eu tenho uma mistura de russo e inglês, mas com uma grande preponderância de russo. Tudo muito claro e legível.

E você está falando em escrever os nomes das funções e variáveis personalizadas em russo. Ninguém os escreve dessa maneira. Há muito tempo, os programadores desenvolveram certas regras de etiqueta. Como formatar corretamente o código fonte para que fosse fácil de ler não apenas para você, mas também para os outros. É como as regras de etiqueta na sociedade.

Em 1C, por outro lado, tudo está escrito inteiramente em russo. Por exemplo, a função () ..... endfunction. loop ... fim do ciclo, se ... terminar se. etc. etc.

 
Реter Konow:

Em geral, um futuro brilhante de software nos espera na prática).

Um futuro brilhante apenas para os ingleses é um padrão duplo, sem dúvida. Mas é embaraçoso que chineses e japoneses também comecem a quebrar o estereótipo... Acho que ninguém está exigindo de você o código fonte?
Razão: