Эще раз о локализации MQL

 

Тема уже как раз мною вскользь поднималась. Речь идет о том чтобы в MQL иметь возможность писать экспертов полностью на русском (или любом другом) языке. Нечто вроде этого:

Логический Четный;

Цикл ( целое НомерПозиции = 1; НомерПозиции <= ДлиннаБуфера; НомерПозиции++ )
{
  Если ( Остаток(НомерПозиции, 2) = 0 ) тогда Четный = Инстина; иначе Четный = Ложь;
  ....   
}

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

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

Здесь возможны грабли: в такой локализованый русский текст инклудом вставляется системный с английскими словами. Избежать их можно только если компилятор будет распознавать оба варианта. Т.е. рядом с табличкой со словами английского языка нужно положить еще локализованный вариант строк, чтобы компилятор мог обработать оба "написания".

Здесь возможны вторые грабли: когда нужно собирать текст из фрагментов на нескольких языках. Но они тоже устранимы. Как правило локализуется все в какойто один язык на котором работает программист. Поэтому любую помесь языков можно сначала (возможно отдельной утилитой или пунктом меню МЕ) перевести все в английский. А потом всю эту колбасу - в свой родной.

В самом крайнем случае можно сделать еще одну директиву компилятору #substitute source dest которая будет перед компиляцией просто заменять строку source на dest и полученный результат компилировать. Тогда локализацию можно будет сделать как это предложил TheXpert.


Я знаю что задача - решабельна. Я надеюсь - что такая доработка не повлечет радикального переписывания кода компилятора. Я почти уверен что разработчики всеми силами будут отбиваться от такой идеи, и я их мотивы прекрасно понимаю. Но у меня есть слабая надежда, что сейчас, пока MQL5 еще в стадии беты - в него такую фишку воткнуть можно, поэтому и решился еще раз поднять этот вопрос: может все таки можно\нужно сделать такую возможность - писать программы на родном языке, на том, на котором думаеш, и на котором общаешся с трейдерами и заказчиками?

 
Поддерживаю, в 1С, например, изначально можно было программировать на русском.
 

Отсутствие локализации способствует пониманию кода программистами, которые не знают ваш язык. Поэтому против.

 
lea >>:

Отсутствие локализации способствует пониманию кода программистами, которые не знают ваш язык. Поэтому против.

Все гораздо интересней.


Что мешает той же директивой задавать имена для всего, в том числе и переменных?

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

А расширив функционал директивы, возможно даже сделать поддержку выбора локализаций из существующих.

 
lea >>:

Отсутствие локализации способствует пониманию кода программистами, которые не знают ваш язык. Поэтому против.

Ага. И потом, когда люди будут выкладывать код, он весь будет без подсветки,

и каждый будет наивно переспрашивать: 

- а вы что, не знаете? там нужно скачать дополнительно инклюд... vasya_localization_v2

А у каждого локализация будет своя и с разными версиями.

 
TheXpert писал(а) >>

Что мешает той же директивой задавать имена для всего, в том числе и переменных?

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

А расширив функционал директивы, возможно даже сделать поддержку выбора локализаций из существующих.

Делать больше нечего как переводить имена переменных! Я программировать собираюсь, а не сидеть со словарём для публикации исходника.

 
IlyaA >>:
Поддерживаю, в 1С, например, изначально можно было программировать на русском.

Поубивал, бы - честно! Ненавижу такие "локализации".

Как раз сегодня на ithappens.ru история была:


#1497: Патриотичный порнобейсик

26 ноября 2009, 09:00

рейтинг: 628

В конце восьмидесятых только-только начали появляться персональные компьютеры Д3-28 (ввод с магнитофонной кассеты), Электроника-60 (ввод с перфоленты), ДВК-2 (ввод с 5" дискеты аж на 360 КБ). И вот одна из наших кафедр закупила 3 ПК «Искра» (номера модификации уже не помню). Всё это происходило в период борьбы партии и народа с иностранщиной.

Так вот, в эти «Искры» был уже прошит бейсик на русском. Перевод был поразительным. INPUT — «вводим». Догадались, как будет END? Правильно, «кончаем».

Мы так эти «Искры» и прозвали: «Вводим-кончаем». Правда, проработали они у нас месяца три и поумирали (скончались?) Вместе с этим порнобейсиком отправили их на завод-изготовитель, и больше они к нам не возвращались.

 

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

Читая код сразу вижу значение "if" а вот когда пишу наброски в черновик и ставлю "если" смысл начинает теряться(привычка вторая натура).

Да и потом ведь у зарезервированных слов не прямое значение так как их понимают англичане, поэтому не англоязычные имеют преимущество понимая что "if" это не "если", "if" это оператор.

 
Azzx >>:

Поубивал, бы - честно! Ненавижу такие "локализации".


Колега, ну что вы. Зачем сразу убивать. Так всех убьете, один останетесь. :)
 
IlyaA >>:


Колега, ну что вы. Зачем сразу убивать. Так всех убьете, один останетесь. :)

Им за это - за смерть мученическую - в аду скидка будет! Так что всё токмо из-за человеколюбия моего... :)

 

Urain писал(а) >>

Да и потом ведь у зарезервированных слов не прямое значение так как их понимают англичане, поэтому не англоязычные имеют преимущество понимая что "if" это не "если", "if" это оператор.

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

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