Скачать MetaTrader 5

Написание кода на русском языке. Плюсы и минусы такой программы.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Задействуй с пользой свободные компьютеры. Подключись к MQL5 Cloud Network!
Реter Konow
1971
Реter Konow 2016.10.02 15:13 
Уважаемые программисты, хочу обсудить с Вами довольно странную тему - программирование на русском языке. Англоязычные люди пишут программы на родном языке, а среди русскоязычных программистов отсутствует такая практика. Однако, родной язык всегда понятней и удобней. Используемый нами в программе язык неизбежно сказывается на качестве разработки, и хотя человек может и не замечать этого, но стоит попробывать писать на родном языке и к английскому уже не хочется возвращаться. Читабельность кода является важнейшим фактором в работе с программой, в таком случае - почему практика программирования на английском стала такой распостраненной даже там, где нет международных комманд программистов и каждый пишет для себя? Почему априори все должны следовать этому правилу, и что будет если мы разрушим этот стереотип?
Комбинатор
15922
Комбинатор 2016.10.02 15:21  

Это не стереотип, а размер комьюнити. Кроме того, английский язык намного лаконичнее русского.

Не та весовая категория чтобы с мировым языком тягаться. 

Реter Konow
1971
Реter Konow 2016.10.02 15:29  
Комбинатор:

Это не стереотип, а размер комьюнити. Кроме того, английский язык намного лаконичнее русского.

Не та весовая категория чтобы с мировым языком тягаться. 

Возможно он лаконичнее, но для кого? Например, - можете ли Вы без труда пересказать Ваше сообщение по английски? Для нас с Вами английский менее лаконичен, потому что менее понятен. Так я думаю...

Да и вообще заявления о "мировом языке"... Русский не хуже ничуть.

У меня к Вам 2 вопроса:

1. Сколько лет Вы программируете?

2. Вы пробывали хоть раз (для себя) писать программу на русском?


Вопрос в том, существует ли стереотип и не являемся ли мы его заложниками?

Alexander Puzanov
29607
Alexander Puzanov 2016.10.02 15:34  
Реter Konow:
что будет если мы разрушим этот стереотип?

Можно ваш вариант ответа? Разрушить - не вопрос, прям щас и разрушим. Что на практике должно за этим последовать?

Реter Konow
1971
Реter Konow 2016.10.02 15:43  
Alexander Puzanov:

Можно ваш вариант ответа? Разрушить - не вопрос, прям щас и разрушим. Что на практике должно за этим последовать?

Вот в том то и дело. Мой вариант ответа: Я давно поражен практикой написания программ в целом. Неэффективность видна сплошь и рядом. Даже ООП (придуманный кем то) никогда не ставится под сомнение. А разве не может существовать подхода лучше и эффективней? Я с уверенностью говорю, что подход лучше и эффективней есть, а программировать на родном языке в разы удобнее. Это все проверено моей трехлетней практикой и доказано моими успехами в программировании.

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

Я могу привести примеры альтернативного подхода. Конечно его нужно и дальше разрабатывать, но начало заложено. Думал написать об этом статью... В общем, на практике нас ждет светлое программное будущее.)

Вот мой ответ.

Vitalii Ananev
8136
Vitalii Ananev 2016.10.02 15:58  
В 1С можно на русском кодить. И только по тому, что 1C чисто российская разработка. А так как по большей части языки программирования и их компиляторы разработаны не в России то и язык использовался не русский.
Реter Konow
1971
Реter Konow 2016.10.02 16:00  
Vitalii Ananev:
В 1С можно на русском кодить.
1С? А что это?
Vitalii Ananev
8136
Vitalii Ananev 2016.10.02 16:03  
Реter Konow:
1С? А что это?
Если коротко то ПО для бухгалтерского учета, но можно использовать не только для этого. У них есть множество различных конфигураций базирующихся на одной платформе. Исходный код открытый можно править по своему усмотрению или полностью написать что то свое.
Реter Konow
1971
Реter Konow 2016.10.02 16:05  
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;
 //-----------------------------------
Вот небольшой пример кода моей программы. Здесь я сочетаю русский и английский язык, но с явным перевесом русского. Все очень понятно и читабельно.
Vitalii Ananev
8136
Vitalii Ananev 2016.10.02 16:09  
Реter Konow:
Вот небольшой пример кода моей программы. Здесь я сочетаю русский и английский язык, но с явным перевесом русского. Все очень понятно и читабельно.

А вы про то что бы писать названия пользовательские функции и переменные на русском. Так ни кто не пишет. Уже давным давно программистами выработались некие правила хорошего тона. Как правильно оформлять исходный код, что бы его было удобно читать не только вам но и другим. Это как правила этикета в обществе.

В 1С же, все полностью пишется на русском. Например  функция () ..... конецфункции.  цикл  ... конеццикла  если ... конецесли. и тд. и тп.

Alexander Puzanov
29607
Alexander Puzanov 2016.10.02 16:09  
Реter Konow:

В общем, на практике нас ждет светлое программное будущее.)

Светлое будущее для одних тока англов - это двойные стандарты, нет вопросов. Тока смущает, что китайцы с японцами тоже начнут ломать стереотип.. С вас, наверное, никто не требует исходников?
12345678...19
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий