Допустимы ли русские буквы в именах переменных, функций и классов?

Alexey Volchanskiy  
  • 58% (38)
  • 28% (18)
  • 14% (9)
Всего проголосовало: 65
Igor Makanu  

https://www.mql5.com/ru/docs/basis/syntax/identifiers

Идентификаторы

Идентификаторы используются в качестве имен для переменных и функций. Длина идентификатора не может превышать 63 знака.

Допустимые символы при написании идентификатора: цифры 0-9, латинские прописные и строчные буквы а-z и А-Z, распознаваемые как разные символы, символ подчеркивания (_). Первый символ не может быть цифрой.

Идентификатор не должен совпадать с зарезервированным словом.



Документация по MQL5: Основы языка / Синтаксис / Идентификаторы
Документация по MQL5: Основы языка / Синтаксис / Идентификаторы
  • www.mql5.com
Допустимые символы при написании идентификатора: цифры 0-9, латинские прописные и строчные буквы а-z и А-Z, распознаваемые как разные символы, символ подчеркивания (_). Первый символ не может быть цифрой.
Alexey Volchanskiy  

Опрос связан вот с чем. Коллега пишет большой проект на MQL5, возможно, части проекта будут написаны на C#, C++.

Я немного посмотрел код, все идентификаторы на русском, например

class c_УправлениеОрдерами
{
};

Я всегда использую только английские названия, благо проблем с техническим инглишем нет:

class COrderManager
{
};

Читаю справку, там четко написано "Идентификаторы используются в качестве имен для переменных и функций. Длина идентификатора не может превышать 63 знака. Допустимые символы при написании идентификатора: цифры 0-9, латинские прописные и строчные буквы а-z и А-Z, распознаваемые как разные символы, символ подчеркивания (_). Первый символ не может быть цифрой. Идентификатор не должен совпадать с зарезервированным словом."

То есть то, что компилятор русские имена компилирует, это undefined behavior (неопределенное поведение) и Метаквоты в любой версии могут это прикрыть.

Я хорошо помню, как один чел еще до появления нового MQL4 build 600 в начале 2013 г. любил в названиях переменных использовать точки, например:

double orders.count.for.close = 0;

Я ему говорил, что напорешься, 100% MQ введут в язык хотя бы структуры и все программы придется переписывать. Так и оказалось. Я, как в прошлом профессиональный программист, стараюсь не поьзовать никакими недокументированными возможностями.

Будет интересно узнать ваше мнение, уважаемые колеги!   

Igor Makanu  
Alexey Volchanskiy:

Будет интересно узнать ваше мнение, уважаемые колеги!   

бред, отсебятина, отвратительный стиль... лень материться...

вот переписал первое что попалось:

double OnTester()
{
#define BADTEST() { srand((int)TimeCurrent()); return (-(rand() % 1000)); }
   if(EA_STOP)  BADTEST();
   if(TesterStatistics(STAT_TRADES) < EA_MIN_TRADEES)  return(-1500.0);
   if(TesterStatistics(STAT_PROFIT) <= 0) return(TesterStatistics(STAT_PROFIT));
   if(SAVE_CONFIG) EA.SaveInputParamToFile();
   return(AccountInfoDouble(ACCOUNT_BALANCE) * ((2.0 * (double)TesterStatistics(STAT_TRADES)) / EA_MIN_TRADEES));
#undef BADTEST
}

и на русском:

double OnTester()
{
#define ПЛОХОЙТЕСТ() { srand((int)TimeCurrent()); return (-(rand() % 1000)); }
   if(ЭКСП_СТОП)  ПЛОХОЙТЕСТ();
   if(TesterStatistics(STAT_TRADES) < ЭКСП_МИН_СДЕЛОК)  return(-1500.0);
   if(TesterStatistics(STAT_PROFIT) <= 0) return(TesterStatistics(STAT_PROFIT));
   if(СОХР_КОНФИГУРАЦИЮ) ЭКСП.СохрПарамВводаВФайл();
   return(AccountInfoDouble(ACCOUNT_BALANCE) * ((2.0 * (double)TesterStatistics(STAT_TRADES)) / ЭКСП_МИН_СДЕЛОК));
#undef ПЛОХОЙТЕСТ
}


имхо, второй вариант абракадабра ... дальше следует непереводимая игра слов с использованием местных идиоматических выражений (с)

невозможно в голове сложить англ. имена встроенных функций и операторов и перемежать это русскими литералами... как говорится слишком многа букаф ))

Alexey Volchanskiy  

Ты быстрый, как ветер! Опередил меня, я тоже привел текст из справки. В дополнение скажу, что С# поддерживает русские имена, к моему удивлению!

using System;

namespace CharpDll
{
    public class SharpDll
    {
        public double КоличествоОрдеров;
    }
}

Проверил на C++, к моему еще большему удивлению, и там русские имена проходят! Хотя я проверял на VS 2017, думаю, другие компиляторы С++ могут заругаться.
 

Alexey Volchanskiy  
Igor Makanu:

бред, отсебятина, отвратительный стиль... лень материться...

вот переписал первое что попалось:

и на русском:


имхо, второй вариант абракадабра ... дальше следует непереводимая игра слов с использованием местных идиоматических выражений (с)

невозможно в голове сложить англ. имена встроенных функций и операторов и перемежать это русскими литералами... как говорится слишком многа букаф ))

Да, я об этом не подумал, действительно тяжело переключаться, скорость восприятия текста падает. 

Igor Makanu  
Alexey Volchanskiy:

Да, я об этом не подумал, действительно тяжело переключаться, скорость восприятия текста падает. 

я тож не думал, что кириллица так критична при чтении чужого кода, но в прошлом году попросили на каком то форуме какую то мелочь с ЕА сеткой передать, или магик прикрутить или разнести закрытие профит/лоссы или..

мелочь в общем, знаю, что делаю такие вещи от 15 до 30 минут

код был ЕА в целом неплох, процедурный стиль с объявлением всех переменных на глобальном уровне видимости

НО! все переменные были исключительно на русском!

я 5 раз в течении трех часов подходил к этому коду... и реально просто не смог ничего сделать из за кириллицы! - ну вообще никак не получается код такой читать!

Vladimir Simakov  
Не забывай, что большие проекты пишут ни разу не в одиночку, а такой стиль не оставляет возможности привлечения к проекту тех, кто не хочет или не может пользоваться великим и могучим.
Реter Konow  

Не буду прерывать самозабвенное самоунижение в очередной раз. Это такая русская забава - высмеивать и поносить самих себя. Да, речь именно о русском языке в программировании. Посмотрите, что вы благодаря неуважению к себе и недостатку элементарного человеческого самоутверждения профукали: https://www.youtube.com/watch?v=oQ7G9Dp9y_w

И еще это: https://www.youtube.com/watch?v=UqUPK8cZ-lo

Даже мне вы проигрываете в графике - ваша gui-библиотека значительно слабее моего языка разметки, который написан на русском коде (с англ.индетификаторами). 

Так что, ребята, самоунижайтесь дальше, а я буду двигаться вперед и смеятся оглядываясь на вас.)))))

СССР: ОТКУДА ВЗЯЛИСЬ ТЕХНОЛОГИИ?
СССР: ОТКУДА ВЗЯЛИСЬ ТЕХНОЛОГИИ?
  • 2019.10.02
  • www.youtube.com
Как зарождалась эпоха компьютерных технологий? Для чего они были предназначены? Как на все это повлияла СССР? И, казалось бы, при чем тут Украина? Сейчас все...
Taras Slobodyanik  
Реter Konow:

Не буду прерывать самозабвенное самоунижение в очередной раз. Это такая русская забава - высмеивать и поносить самих себя. Да, речь именно о русском языке в программировании. Посмотрите, что вы благодаря неуважению к себе и недостатку элементарного человеческого самоутверждения профукали: https://www.youtube.com/watch?v=oQ7G9Dp9y_w

И еще это: https://www.youtube.com/watch?v=UqUPK8cZ-lo

Даже мне вы проигрываете в графике - ваша gui-библиотека значительно слабее моего языка разметки, который написан на русском коде (с англ.индетификаторами). 

Так что, ребята, самоунижайтесь дальше, а я буду двигаться вперед и смеятся оглядываясь на вас.)))))

:)

Вы меняете местами коня и телегу.

Сначала должна быть свобода слова, творчества, экономики.... а уж потом свой код.

и, кстати, ваш язык был бы во много раз востребованней на инглише, и возможно, что на нем уже бы писали сотни людей.

Igor Makanu  
Vladimir Simakov:
Не забывай, что большие проекты пишут ни разу не в одиночку, а такой стиль не оставляет возможности привлечения к проекту тех, кто не хочет или не может пользоваться великим и могучим.

ну с MQL проектами это не грозит, в 99% случаев ведет проект один программист и один заказчик


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

а с кириллицей мало того, что есть еще падежи, так и сокращения  на кириллице часто будут плохо читаемы, ну и в целом больше стучать по клавиатуре придется - идентификаторы на англ. все равно компактнее

Причина обращения: