Écrire du code en russe. Avantages et inconvénients d'un tel programme.

 
Chers programmeurs, je voudrais discuter avec vous d'un sujet plutôt étrange - la programmation en russe. Les anglophones écrivent des programmes dans leur langue maternelle, alors que cette pratique n'existe pas chez les programmeurs russophones. Mais la langue maternelle est toujours plus claire et plus pratique. La langue que nous utilisons dans un programme influence inévitablement la qualité du développement et même si une personne ne le remarque pas, une fois qu'elle essaie d'écrire dans sa langue maternelle, elle ne souhaite plus revenir à l'anglais. La lisibilité du code est le facteur le plus important lorsqu'on travaille avec un programme. Dans ce cas, pourquoi la pratique de la programmation en anglais est-elle devenue si courante, même lorsqu'il n'existe pas d'équipes de programmation internationales et que chacun écrit pour lui-même ? Pourquoi tout le monde doit-il suivre cette règle a priori et que se passe-t-il si nous brisons ce stéréotype ?
 

Il ne s'agit pas d'un stéréotype mais de la taille de la communauté. De plus, l'anglais est beaucoup plus succinct que le russe.

Ce n'est pas la bonne catégorie de poids pour rivaliser avec la langue mondiale.

 
Комбинатор:

Il ne s'agit pas d'un stéréotype mais de la taille de la communauté. De plus, l'anglais est beaucoup plus succinct que le russe.

Ce n'est pas la bonne catégorie de poids pour rivaliser avec la langue mondiale.

C'est peut-être plus concis, mais pour qui ? Par exemple - pouvez-vous facilement reformuler votre message en anglais ? Pour nous, vous et moi, l'anglais est moins concis, car il est moins compréhensible. Donc je pense...

Et en parlant de "langue mondiale"... Le russe n'est pas pire.

J'ai deux questions à vous poser :

1. Depuis combien d'années programmez-vous ?

2. Avez-vous déjà essayé (par vous-même) d'écrire un programme en russe ?


La question est de savoir s'il existe un stéréotype et si nous n'en sommes pas les otages ?

 
Реter Konow:
Que se passe-t-il si nous brisons ce stéréotype ?

Puis-je avoir votre réponse ? Détruisez-le - aucun doute là-dessus, faisons-le maintenant. Qu'est-ce qui devrait suivre dans la pratique ?

 
Alexander Puzanov:

Puis-je avoir votre réponse ? Détruisez-le - aucun doute là-dessus, faisons-le maintenant. Qu'est-ce qui devrait suivre dans la pratique ?

C'est le but. Ma réponse : je suis depuis longtemps étonné par la pratique de l'écriture des programmes en général. L'inefficacité est très souvent constatée. Même la POO (inventée par quelqu'un) n'est jamais remise en question. Ne peut-il pas y avoir une approche meilleure et plus efficace ? Je suis convaincu qu'il existe une approche meilleure et plus efficace et que la programmation dans une langue maternelle est bien plus pratique. Tout cela est vérifié par mes trois années de pratique et prouvé par mon succès en programmation.

Si vous brisez le stéréotype, vous pouvez devenir plus libre, proposer une nouvelle approche, augmenter l'efficacité, compresser le code... De nouveaux horizons de possibilités s'ouvrent à nous.

Je peux donner des exemples d'une approche alternative. Bien sûr, elle doit être développée davantage, mais le début a été posé. Je pensais écrire un article à ce sujet. Dans l'ensemble, un brillant avenir logiciel nous attend dans la pratique).

Voici ma réponse.

 
Vous pouvez coder en russe en 1C. Et seulement parce que 1C est un développement purement russe. La plupart des langages de programmation et des compilateurs n'ayant pas été développés en Russie, la langue utilisée n'était pas le russe.
 
Vitalii Ananev:
En 1C, vous pouvez coder en russe.
1С ? Qu'est-ce que c'est ?
 
Реter Konow:
1С ? Qu'est-ce que c'est ?
En bref, il s'agit d'un logiciel de comptabilité, mais il peut être utilisé pour plus que cela. Ils ont de nombreuses configurations différentes basées sur la même plateforme. Le code source est ouvert et vous pouvez le modifier comme bon vous semble ou écrire le vôtre.
 
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;
 //-----------------------------------
Voici un petit exemple de code de mon programme. Ici, je combine le russe et l'anglais, mais avec une nette prépondérance du russe. Tout est très clair et lisible.
 
Реter Konow:
Voici un court exemple du code de mon programme. Ici, j'ai un mélange de russe et d'anglais, mais avec une grande prépondérance du russe. Tout est très clair et lisible.

Et vous parlez d'écrire les noms des fonctions personnalisées et des variables en russe. Personne ne les écrit de cette façon. Il y a longtemps, les programmeurs ont développé certaines règles d'étiquette. Comment formater correctement le code source pour qu'il soit facile à lire non seulement pour vous mais aussi pour les autres. C'est comme les règles de l'étiquette en société.

En 1C, par contre, tout est écrit entièrement en russe. Par exemple, la fonction () ..... endfunction. boucle ... fin du cycle si ... fin si. etc. etc.

 
Реter Konow:

En général, un brillant avenir logiciel nous attend dans la pratique).

Un avenir brillant pour les seuls Anglais est un double standard, sans aucun doute. Mais il est gênant que les Chinois et les Japonais commencent eux aussi à briser le stéréotype... Je suppose que personne ne vous demande le code source ?
Raison: