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

 

В стандарте С++ указано, что можно использовать все символы Unicode в качестве идентификатора.

   int © = 1;
   ©++;
 
Alexey Volchanskiy:

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

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

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

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

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

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

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

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

Алексей!

Вы же взрослый мальчик!

Программирование (уж так заведено с самого начала) ведется на Английском языке.

 
Roffild:

В стандарте С++ указано, что можно использовать все символы Unicode в качестве идентификатора.

так то оно да... даже проверил, работает и в MQL

а Вы смогли бы ответить на мой этот вопрос https://www.mql5.com/ru/forum/344762#comment_16994878

если бы вместо кода по ссылке я спросил бы Вас с таким бы примером?

//+------------------------------------------------------------------+
class ▐
{
private:
   int               ╚;
public:
                     ▐(): ╚(0)                      {             }
   void              УстановитьЗначение(const int ╟){╚ = ╟;       }
   int               ПолучитьЗначение(void)         { return ╚;   }
};
//+------------------------------------------------------------------+
void OnStart()
{
   ▐ *╞ = new ▐;
   ╞.УстановитьЗначение(123);
   
   ▐ *☼ = ╞;
   ▐ *♀ = GetPointer(╞);
   
   Print("☼ = ",☼.ПолучитьЗначение());   // b = 123
   Print("♀ = ",♀.ПолучитьЗначение());   // c = 123
   
   delete ╞;
   delete ☼;
   delete ♀;
}


¯\_(ツ)_/¯

 
Igor Makanu:

так то оно да... даже проверил, работает и в MQL

а Вы смогли бы ответить на мой этот вопрос https://www.mql5.com/ru/forum/344762#comment_16994878

если бы вместо кода по ссылке я спросил бы Вас с таким бы примером?


¯\_(ツ)_/¯

ещё всякие compose-символы чтобы с умляутами, и обязательно эмотиконы :-)

а вместо пробелов и табуляций их unicode аналоги, visual-space или как их там..

ATL горько заплачет и перевенётся

 
Maxim Kuznetsov:

ещё всякие compose-символы чтобы с умляутами, и обязательно эмотиконы :-) 

это сложная задача, это гуглить нужно

я просто зажал Alt и на цифровой клавиатуре набирал код символа наугад  ( больше 200 )

 
Igor Zakharov:

не совсем это имелось ввиду. выбор английского исключительно связан с техническим складом ума, в который ГОСТы вбиты советским образованием. уникальность хороша для творческих личностей, а для технарей - это плохо. для меня слово "стандартизация" - это не просто блажь. если хотите быть понятным большому кругу (а, главное, использовать созданное этим большим кругом) - пишите понятным большинству способом, вливайтесь в сообщество. так уж вышло, что в программировании стандарт - это английский. для меня вопрос нац. языка в программировании аналогичен использованию аршина вместо метра в технике (метр - изначально французская единица, но меня не смущает)

помните знаменитую историю времён второй мировой войны про нерасшифрованный код "энигмы"? - там как базовый использовался национальный язык индейского племени, коих осталось что-то около 30ти человек. так же и тут - код получится, но "код", "кодить" и "кодер" будут ближе к изначальному смыслу (=шифровать)

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

К слову, англоязычный мир до сих пор использует свои величины: вместо метра - feet, вместо километра - mile, вместо килограмма - фунт и т.д...

Почему? - просто у них ЭГО больше и чихать они хотели на остальной мир. Они не приспосабливаются, - под них приспосабливаются, - но есть и те, кто создает свое, так сказать - берет с них пример, но вы выбираете первый вариант - приспосабливаться.

Каждому свое.

 
Igor Makanu:

это сложная задача, это гуглить нужно

я просто зажал Alt и на цифровой клавиатуре набирал код символа наугад  ( больше 200 )

̤̈e <- вот примерно так, см https://unicode-table.com/ru/#0324
Таблица символов Юникода
  • unicode-table.com
Сервис поиска символов Юникода (Unicode). Находите, копируйте и вставляйте любимые символы: 😎 Эмоджи, ❤ сердечки, 💲 валюты, → стрелки, ★ звёздочки, и многое другое 🚩
 
Igor Makanu:

так то оно да... даже проверил, работает и в MQL

а Вы смогли бы ответить на мой этот вопрос https://www.mql5.com/ru/forum/344762#comment_16994878

если бы вместо кода по ссылке я спросил бы Вас с таким бы примером?


¯\_(ツ)_/¯

В MQL нет полноценного доступа к памяти, поэтому все делается через классы-эмуляторы. Тут стандарт С++ не применим полностью.

Что-то типа такого класса возвращается GetPointer() для эмуляции:

class Pointer
{
   new();
   delete();
   operator&();
   operator*();
};
 
Artyom Trishkin:

А вы звёзды с неба хватаете?

Звёзды сами вас найдут. Без шаманства.

Спасибо, только не раньше чем минует корона. Ждемс...))) 

 
Реter Konow:

К слову, англоязычный мир до сих пор использует свои величины: вместо метра - feet, вместо километра - mile, вместо килограмма - фунт и т.д...

Почему? - просто у них ЭГО больше и чихать они хотели на остальной мир. Они не приспосабливаются, - под них приспосабливаются, - но есть и те, кто создает свое, так сказать - берет с них пример, но вы выбираете первый вариант - приспосабливаться.

Каждому свое.

Однако глубину предпочитают измерять в метрах... мы на дне))