Feedback sobre a MQL5

 

Tenho usado a MQL4 há muito tempo e fiquei muito feliz em saber que a MQL5 finalmente apresentará o OOP, porque serei capaz de escrever sistemas de análise automatizados mais flexíveis mais rapidamente. Mas não consigo encontrar palavras para o quanto fiquei desapontado. Fiquei horrorizado por não poder operar totalmente com ponteiros e trabalhar com objetos fácil e rapidamente, o que é especialmente verdadeiro para o desenvolvimento de sistemas, que são inúteis 95% do tempo. Todos nós escrevemos programas em MQL a fim de testar alguma teoria, realizar alguma análise automática de dados a fim de verificar uma idéia posteriormente e otimizá-la, e isso deve ser feito muito rapidamente, porque a idéia tem que ser otimizada muitas vezes. Mesmo se você abstrair-se da linguagem, o desenvolvimento de sistemas comerciais ou sistemas de análise neste contexto é um trabalho ingrato, porque você começa a trabalhar, sabendo que muito provavelmente ficará abaixo do ideal ou mesmo inútil. O que podemos dizer, se os desenvolvedores da MQL5 nos deram, em suas palavras, uma ferramenta super segura, na qual é impossível atirar em si mesmo, mas sobre a implementação de uma simples idéia ou, em outras palavras, de um algoritmo elementar, você precisa trabalhar por dezenas de horas.

Bem, desenvolvedores da MQL5, eu li um parágrafo interessante no livro da Straustrup, e imediatamente lembrei de seu "produto" na MQL5:

"A relação entre a linguagem em que pensamos (escrever programas) e as tarefas (soluções) que podemos imaginar é muito próxima. Por este motivo, restringir a capacidade da linguagem para evitar erros de programação é, na melhor das hipóteses, perigoso. Assim como no caso dos idiomas naturais, é de grande benefício conhecer pelo menos dois idiomas. Uma linguagem fornece ao programador um conjunto de ferramentas conceituais. Se estas ferramentas forem inadequadas para a tarefa em questão, elas são simplesmente ignoradas. O design de qualidade e o design sem erros não podem ser garantidos simplesmente pela presença ou ausência de características específicas em um idioma".

Portanto, com base no meu feedback acima, o que você programou para fins de programação é completamente inadequado para os propósitos que a MQL se destina a servir. Obrigado por me forçar a simplesmente ignorar uma ferramenta como o OOP na MQL5.

 

Você deveria ao menos dar alguns exemplos.

O que significa que você não pode operar totalmente com apontadores e trabalhar com objetos de forma rápida e fácil? Nunca tive nenhum problema com isso ao desenvolver esquemas de grande escala.

 

Poucos idiomas modernos, gerenciáveis e seguros permitem operar com indicações "totalmente" (ou seja, perigosamente). Especialmente na MQL4/MQL5, onde a segurança e a controlabilidade devem ser primordiais.

Todo o resto está presente e disponível. E também estão disponíveis indicadores de segurança.

O mais provável é que você simplesmente não tenha descoberto, mas tenha lançado sua própria pilha de pensamentos. Não há outra maneira de chamar este fluxo não substanciado.

 
Renat Fatkhullin:

Poucos idiomas modernos, gerenciáveis e seguros permitem operar com indicações "totalmente" (ou seja, perigosamente). Especialmente na MQL4/MQL5, onde a segurança e a capacidade de gerenciamento têm que estar em primeiro lugar.

Todo o resto está presente e disponível. E também há indicadores de segurança.

O mais provável é que você simplesmente não tenha descoberto, mas tenha lançado sua própria pilha de pensamento. Não há outra maneira de chamar este fluxo não substanciado.

Por favor:

https://www.mql5.com/ru/forum/35326

https://www.mql5.com/ru/forum/1111/

Diga um idioma amplamente utilizado onde eu não possa atribuir um endereço diferente a um ponteiro? Diga um idioma comumente usado onde eu não possa atribuir uma referência de um tipo a um objeto diferente do mesmo tipo? Onde mais eu seria forçado a descrever um construtor ou função de cópia devido a essas limitações de seu idioma?

E se a controlabilidade é primordial para você, por que outros idiomas controlados não impõem restrições similares?

Pessoalmente para mim, o mais importante não é a segurança e a controlabilidade, mas a rapidez com que posso implementar a idéia, isto é extremamente justo no contexto de idéias comerciais, aqueles que discordam disto, ou superestimam o valor de seus sistemas, ou programam por causa da programação, em vez de um resultado específico.

 

Renat, você mesmo reconhece o que escrevi no primeiro post e encobre a perda de flexibilidade na segurança, tornando-a uma vantagem inegável, embora não seja de todo verdade.

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

A remoção de elos perigosos é o primeiro passo para criar uma linguagem segura do monstro que é hoje C++. Eliminamos referências propositada e deliberadamente,perdendo deliberadamente aflexibilidade ao nos livrarmos do auto-shooting.

Dê-me a capacidade de atirar no meu pé, pois sem esta capacidade sou forçado a controlar a programação, e quero controlar a idéia que quero implementar.
 
urusov:

Por favor:

https://www.mql5.com/ru/forum/35326

https://www.mql5.com/ru/forum/1111/

Dizer um idioma comumente usado onde não posso atribuir um endereço diferente a um ponteiro? Dizer um outro idioma amplamente utilizado onde não posso atribuir uma referência do mesmo tipo a um objeto diferente? Onde mais eu seria forçado a descrever um construtor ou função de cópia devido a essas limitações de seu idioma?

E se a controlabilidade é primordial para você, por que outros idiomas controlados não impõem restrições similares?

Pessoalmente, para mim, o mais importante não é a segurança e a controlabilidade, mas a velocidade com que posso implementar a idéia, é extremamente justa no contexto de idéias comerciais, aqueles que discordam disto, ou superestimam o valor de seus sistemas, ou programam para programar, em vez de um resultado específico.

Camarada! Não transfira sua ignorância da linguagem para a área de responsabilidade dos desenvolvedores. Na MQL5 você pode atribuir livremente vários objetos a apontadores e passar estes objetos como apontadores. Como em qualquer outra linguagem moderna, como C# e Java, a MQL5 tem uma verificação de tipo explícita, e sua conversão só pode ser realizada dentro da mesma hierarquia de classes (herança). Mais uma vez, exatamente o mesmo comportamento é implementado em outras linguagens amplamente utilizadas como C# e Java.

 
urusov:

Renate, você mesma reconhece tudo o que escrevi no primeiro post e encobre a perda de flexibilidade na segurança em uma vantagem inegável, quando este não é o caso.

Dê-me a capacidade de atirar no meu pé, pois sem essa capacidade sou obrigado a controlar a programação, e quero controlar a idéia que quero implementar.
A julgar por seus cargos anteriores, você aprendeu a atirar com maestria no pé. Agora só falta aprender a programar.
 
Eu gosto do 5-Rka. O mais provável é que o iniciante não tenha tido tempo suficiente para compreendê-lo e tenha chegado a uma conclusão precipitada. É um pouco complicado no início, é claro, mas vale a pena.
 
urusov:

Renate, você mesma reconhece tudo o que escrevi no primeiro post e encobre a perda de flexibilidade na segurança, tornando-a uma vantagem inegável, quando não é de modo algum o caso.

Dê-me a oportunidade de atirar no meu pé, porque sem esta oportunidade tenho que controlar a programação, e quero controlar a idéia que quero implementar.

Você deve se educar e pensar mais sobre segurança.

Não estou admitindo nada, mas justificei nos links acima (que são jogados mesmo sem referência clara a um lugar específico), o que, como e por que foi feito na MQL4/MQL5. A experiência prática desde 2001 (quando a MQL saiu) no desenvolvimento de linguagens de aplicação para plataformas comerciais nos permite compreender claramente o que é necessário para alcançar um resultado global.


Você quer velocidade desenfreada? Escreva em C++ e inclua DLL. Mas até mesmo na MQL5 nós alcançamos os compiladores nativos C++: Teste do novo compilador MQL5 para plataformas x64 - velocidade de 2 a 10 vezes!

 
urusov:

Dizer um idioma amplamente utilizado onde não possa atribuir um endereço diferente a um ponteiro? Dizer um outro idioma amplamente utilizado onde não posso atribuir uma referência do mesmo tipo a outro objeto? Onde mais eu seria forçado a descrever um construtor ou função de cópia devido a essas limitações de seu idioma?

Bem, ao menos olhe na biblioteca padrão https://www.mql5.com/ru/docs/standardlibrary e veja o código (em MQL5\\*) que funciona plenamente com referências.

Obviamente, você não conhece o idioma de forma alguma.

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Renat, por favor, verifique esta linha

https://www.mql5.com/ru/forum/60581/page2

Куда пропала история сигнала?
Куда пропала история сигнала?
  • www.mql5.com
Помогите разобраться, пропала история торговли сигнала (доходность, сделки и прочее). - Страница 2 - Категория: общее обсуждение