Mais uma vez, sobre a localização da MQL

 

O tema já foi abordado de passagem. Estou falando da possibilidade de escrever especialistas completamente em russo (ou em qualquer outro idioma) em MQL. Algo parecido com isto:

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

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

Eu sei que esta característica é muito útil. Quem duvida ou acredita que não faz sentido (porque qualquer programador competente deve saber inglês), vou responder apenas a uma objeção: Por que então o terminal tem um monte de arquivos de idiomas de configurações de interface e por que a ajuda é traduzida para idiomas diferentes? ;)

Tanto quanto eu entendo o mecanismo de um analisador, ele deve ter "listas" de cordas de palavras reservadas como, por exemplo, por, longo, ..... Para "traduzir" completamente o compilador para poder compilar textos em russo, basta substituir a cadeia de texto "para" por "loop" etc. no código do compilador e depois disso tudo deve funcionar como antes. A lista de correspondência de palavras originais em inglês e variantes localizadas pode ser extraída de arquivos, como agora é feito para itens de menu do terminal.

Aqui estão as possíveis armadilhas: em um texto russo tão localizado pelo sistema incluudom insere texto com palavras em inglês. Você só pode evitá-las se o compilador reconhecer as duas variantes. Ou seja, ao lado da tabela com palavras em inglês deve ser colocada outra versão localizada de corda, para que o compilador possa lidar com ambas as "ortografias".

Há uma segunda armadilha possível: quando você precisa compilar o texto dos fragmentos em vários idiomas. Mas eles também podem ser resolvidos. Como regra, tudo é localizado em uma única língua que é utilizada pelo programador. Portanto, qualquer mistura de idiomas pode ser primeiro (provavelmente com uma ferramenta separada ou item de menu ME) convertida em inglês. E então toda essa salsicha é convertida em sua língua materna.

No caso mais extremo, você pode fazer outra diretiva para o compilador #substitute source dest que simplesmente substituirá a fonte de string por dest antes da compilação e compilará o resultado. Então, a localização pode ser feita como sugerido pela TheXpert.


Eu sei que o problema é resolúvel. Espero que esta melhoria não leve a uma reescrita radical do código do compilador. Estou quase certo de que os desenvolvedores combaterão esta idéia com todas as suas forças e compreendo muito bem seus motivos. Mas tenho uma ténue esperança de que agora, enquanto a MQL5 ainda estiver em beta, este recurso possa ser implementado, então decidi levantar mais uma vez esta questão: Será possível oferecer uma oportunidade de escrever programas em uma língua materna, no idioma em que você está pensando e no qual você se comunica com comerciantes e clientes?

 
Concordo, em 1C, por exemplo, que era originalmente possível programar em russo.
 

A falta de localização contribui para a compreensão do código por programadores que não conhecem seu idioma. Portanto, contra.

 
lea >> :

A falta de localização contribui para a compreensão do código por programadores que não conhecem seu idioma. Portanto, contra.

As coisas são muito mais interessantes.


O que o impede de nomear tudo, inclusive as variáveis, com a mesma diretriz?

Então, usando o wildcard, podemos facilmente obter uma versão básica em inglês.

E ao ampliar a funcionalidade da diretriz, é possível até mesmo fazer suporte para a seleção de localizações a partir das existentes.

 
lea >> :

A falta de localização contribui para a compreensão do código por programadores que não conhecem seu idioma. É por isso que eu sou contra.

Sim. E então, quando as pessoas postarem o código, tudo estará apagado,

e todos estarão ingenuamente perguntando:

- "Você não sabe? Você precisa fazer o download de um inline extra... vasya_localização_v2

E todos terão localizações diferentes e com versões diferentes.

 
TheXpert писал(а) >>

O que o impede de nomear tudo, inclusive as variáveis, com a mesma diretriz?

Então, usando o wildcard, podemos facilmente obter a versão básica em inglês.

E ao ampliar a funcionalidade da diretriz, podemos até mesmo fazer um suporte para a escolha entre as localizações existentes.

Nada mais a fazer além de traduzir os nomes das variáveis! Vou programar, não me sentar com o dicionário para publicar a fonte.

 
IlyaA >> :
Eu apoio, em 1C, por exemplo, inicialmente era possível programar em russo.

Eu te mataria - honestamente! Eu odeio estas "localizações".

Ainda hoje havia uma história no ithappens.ru:


#1497: Pornobolha patriótica

26 de novembro de 2009, 09:00

classificação: 628

No final de 1980 - só havia computadores pessoais D3-28 (entrada de fita cassete), Electronica-60 (entrada de fita perfurada), DVK-2 (entrada de 5 "disquete com 360 Kb). E um de nossos departamentos comprou 3 PCs "Iskra" (não me lembro do número de modificação). Tudo isso ocorreu em período de luta do partido e do povo contra o estrangeiro.

Portanto, estes Iskra's já tinham tido um BASIC em russo. A tradução foi surpreendente. INPUT é "entrar". Adivinhe o que é FIM? É isso mesmo, FIM.

Foi assim que apelidamos estas "faíscas": "INPUT". No entanto, eles trabalharam para nós por cerca de três meses e depois morreram (faleceram?) Junto com este porno-basic, nós os enviamos para a fábrica e eles nunca mais voltaram para nós.

 

Há muito tempo venho escrevendo código em cirílico e nunca pensei no fato de que palavras reservadas também precisam ser traduzidas (segundo hábito da natureza).

Lendo o código imediatamente vejo o significado de "se", mas quando escrevo rascunhos e coloco "se", o significado começa a se perder (segundo hábito natural).

E então as palavras reservadas não têm um significado direto como entendidas pelos falantes de inglês, então os que não falam inglês têm a vantagem de entender que "se" não é um "se", "se" é um operador.

 
Azzx >> :

Eu te mataria - honestamente! Eu odeio estas localizações.


Colega, vamos lá. Você não tem que matar. Você mata todos eles, você está por sua conta. :)
 
IlyaA >> :


Colega, vamos lá. Você não tem que matar. Você mata todos eles, você está por sua conta. :)

Eles terão um desconto no inferno por isso - por martírio! Então é apenas por causa da minha humanidade... :)

 

Urain писал(а) >>

Além disso, as palavras reservadas não têm um significado direto como entendidas pelos falantes de inglês, portanto, os falantes que não falam inglês têm a vantagem de entender que "se" não é um "se", "se" é um operador.

Os falantes de inglês não têm a vantagem, eles têm a desvantagem. Porque quando eu percorro um programa na minha cabeça, não há "se", mas sim o conceito mais abstrato.