Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Clive Sinclair uma vez desenvolveu o computador pessoal barato ZX-Spectrum. Depois que a primeira versão foi esgotada em grandes quantidades, descobriu-se que os desenvolvedores tinham um monte de bugs na ROM. Assim, eles tomaram a decisão de documentar os erros em vez de corrigi-los para torná-los totalmente compatíveis com as versões anteriores. E a decisão acabou sendo correta, porque os bugs foram posteriormente utilizados para proteger o software deste mesmo computador contra rachaduras.
Acredito que o bug descrito neste tópico também pode ser mantido e utilizado para proteger os Expert Advisors, ou seja, para inserir uma condição incorreta do ponto de vista lógico, por exemplo, para verificar a data de validade. E deixar os que descompilam enlouquecerem.
A discussão deste erro, espero, motivará os desenvolvedores da MQL5 a corrigi-lo. Terei que reescrever todos os programas na MQL5 de qualquer forma.
Espera-se que a discussão deste erro inspire os desenvolvedores da MQL5 a corrigi-lo. Terei que reescrever todos os programas na MQL5 de qualquer forma.
Uma prova de que se trata de um erro, vamos a isso!
Na verdade, uma declaração em contrário:
As leis básicas da álgebra booleana
Duas fórmulas de álgebra booleana são equivalentes se as funções a elas atribuídas forem iguais (ou seja, assumem os mesmos valores em todos os conjuntos de valores de argumentos). Abaixo estão as leis básicas da álgebra booleana que permitem transformações idênticas das fórmulas da álgebra booleana (note como elas são semelhantes às leis da aritmética clássica):
x 1 ou x 2 = x 2 ou x 1
x 1 e x 2 = x 2 e x 1
x 1 ou (x 2 ou x 3 ) = (x 1 ou x 2 ) ou x 3
x 1 e (x 2 e x 3 ) = (x 1 e x 2 ) e x 3
x 1 ou (x 2 e x 3 ) = (x 1 ou x 2 ) e (x 1 ou x 3 )
x 1 e (x 2 ou x 3 ) = (x 1 e x 2 ) ou (x 1 e x 3 )
Do qual se deduz que do ponto de vista da álgebra booleana as operações ou e têm a mesma prioridade.
a lei da distributividade (abrir parênteses):
x 1 ou (x 2 e x 3 ) = (x 1 ou x 2 ) e (x 1 ou x 3 )
x 1 e (x 2 ou x 3 ) = (x 1 e x 2 ) ou (x 1 e x 3 )
Portanto, do ponto de vista das operações de álgebra booleana e têm a mesma prioridade.
Não seja pateta. Seu exemplo difere daquele que iniciou a discussão. Dê uma olhada mais de perto.
Na verdade, este não é um assunto para um programador, porque a especificação de cada idioma vem primeiro e não importa que haja outros padrões em algum lugar...
e um único padrão é um sonho de canalização.
Acho que esta é a idéia mais adequada.
Cada idioma tem seus próprios padrões. Por exemplo, C++ e Pascal têm regras diferentes de cálculo de números inteiros. Em alguns idiomas, os índices começam com 0, enquanto em outros começam com 1. Não creio que tudo isso tenha importância alguma.
O importante é uma má interpretação das leis da natureza, ou seja, aquelas leis que estão além do controle humano. E as regras e leis criadas pelos seres humanos são prerrogativa de seus criadores. Neste caso, é importante apenas que as leis sejam promulgadas; neste caso, as regras são publicadas.
Vamos nos concentrar melhor no campo aplicado:)
Senhores, na página dois deste tópico eu dei um link e uma citação da documentação - Prioridades e Ordem de Operação. Vou dar de novo de forma condensada:
Atenção: a prioridade das operações na MQL4 difere ligeiramente da da MQL4 na C.
Portanto, é incorreto falar de um bug.
Lembro-me do humor de Zadornov "O que é dois mais duas vezes dois". Uma boa ilustração do debate religioso sobre a prioridade. E em geral, o tópico é barbudo, você poderia ter usado a busca no site - em vez de criar um novo fio condutor.
P.S. Eh, MuruFigi o inimigo, e por que você montou Pak ...
O tópico tem barba, você poderia ter usado a busca no site em vez de criar um novo fio condutor.
O tópico continuará a ser relevante. Os desenvolvedores parecem gostar.
O próximo "novato" programador vai bater com a cabeça contra o assunto. E tudo se repetirá (hee-hee).
E não sai do ar rarefeito.
Os desenvolvedores decidiram reciclar cada um à sua maneira.
Vai ser um tema eterno... Até a outra ponta da linha ficar cansada de.... persistir
Debates religiosos sobre prioridade
O costume aqui é fazer um produto inclinado com as mãos tortas crescendo em %, mas todos se calam porque não há outro produto ... ou há, mas seria melhor não haver ))
..
Um exemplo simples "por conta própria", ao usar o if() muitas vezes aparece um bug - ao combinar && e uma série de condições >/</!=, o que é muito estranho,
você copia a cadeia Comentário() para revisão - 1, 1, 1, 1, 1, etc - tudo está OK, mas se() não "funciona", você faz uma "escada" if() { if() { if() { if() { ... }}}
tudo funciona ... falha do metacompilador eu acho, ... e o que, os desenvolvedores acham que eles vão ser browbeaten e provar, ... hehe
Senhores, na página dois deste tópico eu dei um link e uma citação da documentação - Prioridades e Ordem de Operação. Vou dar de novo de forma condensada:
Atenção: a prioridade das operações na MQL4 difere ligeiramente da da MQL4 na C.
Portanto, é incorreto falar de um bug.
Bem, eu meio que concordei na segunda página que se fosse um bug no compilador, deveríamos falar sobre um bug na mente do desenvolvedor em vez de no compilador. Sem ofensa, eu fiz este fio para me divertir.
O que eu não entendo agora é isto.
Em que é desenvolvido o compilador MQL? Se for desenvolvido em uma linguagem normal, os programadores devem ter ficado loucos pelo fato de que as operações de multiplicação e adição têm prioridade igual. Como eles poderiam ter perdido isso? Será que todos realmente colocam parênteses onde querem e onde não querem? A propósito, também, muitos parênteses tornam o código mais claro. E quando seus programadores escrevem operações aritméticas como 2+3*4 eles também escrevem 2+(3*4), ou Deus proíba que um bug possa escorregar para um compilador C++ e aninhar 100 colchetes em uma expressão manualmente conte-o:)