Perguntas sobre OOP em MQL5

 

Ontem surgiu uma pergunta, por isso decidi consultar meus irmãos)

No sábado 21.05.2016 eu estava explicando o básico do OOP a um homem, usando uma biblioteca padrão como exemplo. Ele costumava programar na MQL4, depois teve uma pausa de 5 anos e decidiu voltar. Comecei a apresentá-lo ao MT5 hedging, pois eu mesmo refaço tudo lá.

Por mais estranho que possa parecer, esta pessoa (Maxim, quero dizer você, se você estiver lendo este artigo :)) entendeu o básico do OOP e conseguimos até passar pelas partes mais importantes usando o exemplo de uma biblioteca padrão sob o depurador.

Mas!!! Eu prometi uma gravação, e por razões técnicas tudo voou para miau((

Prometi que faria vídeos em vídeo exatamente no OOP, acho, 10 minutos cada um.

Pergunta:

Sugira um tópico sobre OOP na MQL5 por 10 minutos. Vou postá-lo no YouTube, será útil para todos

------------------

Escreva tudo o que for interessante, eu vou resolver isso, vou tentar satisfazer seus pedidos dentro do meu tempo livre

Boa sorte ))

 
Alexey Volchanskiy:

Ontem surgiu uma pergunta, por isso decidi consultar meus irmãos)

No sábado 21.05.2016 eu estava explicando o básico do OOP a um homem, usando uma biblioteca padrão como exemplo. Ele costumava programar na MQL4, depois teve uma pausa de 5 anos e decidiu voltar. Comecei a apresentá-lo ao MT5 hedging, pois eu mesmo refaço tudo lá.

Estranhamente, o homem (Maxim, quero dizer você, se você está lendo este artigo :)) entendeu o básico do OOP e nós até conseguimos percorrer as partes mais importantes usando o exemplo de uma biblioteca padrão sob o depurador.

Mas!!! Eu prometi uma gravação, e por razões técnicas tudo voou para miau((

Prometi que faria vídeos em vídeo exatamente no OOP, acho, 10 minutos cada um.

Pergunta:

Sugira um tópico sobre OOP na MQL5 por 10 minutos. Vou postá-lo no YouTube, será útil para todos

------------------

Escreva tudo o que for interessante, eu vou resolver isso, vou tentar satisfazer seus pedidos dentro do meu tempo livre

Boa sorte ))

Alexey, faça exemplos sobre os lugares menos cobertos em ajuda - apontadores, apontadores de funções, trabalho com classes de modelos, etc. Embora, honestamente, na minha opinião, tal vídeo sobre C++ em abundância e não irá aumentar o conhecimento, para aumentar o conhecimento você precisa de literatura, webinars e diligência.
 
coderex:
Alexey, faça exemplos sobre os lugares menos cobertos na ajuda - apontadores, indicadores de funções, trabalho com classes de modelos, etc. Embora, francamente falando, na minha opinião, tal vídeo sobre C++ seja abundante e não aumentará de forma alguma o conhecimento, você precisa de literatura, webinars e diligência para melhorá-lo.
Não há indicadores na MQL, há descritores) Recentemente foram introduzidos ponteiros (condicionais) para funções, algum tipo de muleta para se adequar ao conceito geral de "todos os algo-traders são suicidas, não lhes dêem indicações".
 
Alexey Volchanskiy:
Não há ponteiros na MQL, há alças)) Os ponteiros (condicionais) para funções foram introduzidos recentemente, é uma espécie de muleta para se encaixar no conceito geral "todos os algo-traders são suicidas, eles não devem usar ponteiros".

Alexei, não se apegue às palavras :) Se eu tivesse escrito "descritores", por alguma razão, tenho certeza de que você não me entenderia imediatamente. Quanto ao que foi introduzido recentemente e ao que foi introduzido há muito tempo, isso não muda a essência, estas perguntas sobre a ajuda estão no ar, não há uma palavra ou um pouco sobre elas. E esses nomes, não importa como eles possam se comportar de maneira diferente em relação a C++ e MQL, todos têm a mesma aparência, pelo menos, os desenvolvedores estão tentando fazer isso dessa maneira. Eu até já vi que eles já introduziram a comparação de ponteiro :) Embora honestamente, para a MT não consigo imaginar onde utilizá-la.

Mas mesmo assim, acho que se você cobrir estas questões, muitos programadores novatos ficarão gratos a você. Eu vi seu vídeo no outro dia; você sabe como explicar as coisas tão claramente :)

 
coderex:

Alexei, não se apegue às palavras :) Se eu tivesse escrito "descritores", por alguma razão, tenho certeza de que você não me entenderia imediatamente. Quanto ao que foi introduzido recentemente e ao que foi introduzido há muito tempo, isso não muda a essência, estas perguntas sobre a ajuda estão no ar, não há uma palavra ou um pouco sobre elas. E esses nomes, não importa como eles possam se comportar de maneira diferente em relação a C++ e MQL, todos têm a mesma aparência, pelo menos, os desenvolvedores estão tentando fazer isso dessa maneira. Eu até já vi que eles já introduziram a comparação de ponteiro :) Embora honestamente, para a MT não consigo imaginar onde usá-la.

Mas mesmo assim, acho que se você cobrir estas questões, muitos programadores novatos lhe ficarão gratos. Uma vez eu vi seu vídeo, você sabe como explicar claramente às pessoas :)

Imho, em nenhum caso você não deve fazer de um vídeo educativo uma versão estendida de ajuda. O objetivo é educar, não iluminar os detalhes indignos.
 
Alexey Volchanskiy:

Pergunta:

Sugira um tópico sobre OOP na MQL5 por 10 minutos, vou colocá-lo no YouTube, ou seja, será útil para todos

OOP deve ser explicado sem qualquer código e toda aquela nomenclatura abstrusa como classes, objetos, ponteiros, etc. etc.

Como funciona um curso clássico de programação? A princípio, um estudante está tentando agonizantemente passar do pensamento humano para a programação básica (loops, funções, variáveis e outras coisas do tipo "bagagem de conhecimento"). Então, quando a confusão de funções, variáveis e se forma alguma estrutura mais ou menos ordenada, é dito ao estudante: "Veja: existe uma coisa como o OOP. Esqueça o que lhe foi ensinado antes e comece a pensar como um humano novamente". O que se segue é uma quebra nos modelos, a "bagagem de conhecimento" recém-adquirida é jogada no lixo e a pessoa se encontra em algum lugar entre o céu e a terra. Naturalmente, esta "OLP" é então lembrada por vários anos como um pesadelo com tremores e dor nas partes restantes do cérebro (as outras foram queimadas pelos novos conhecimentos).

Não, eu afirmo categoricamente que não se deve aprender programação. Pelo contrário, é prejudicial e perigoso. Ao invés disso, é necessário ensinar a pensar. E com isso há um completo fracasso do método clássico de aprendizagem.

 
Vasiliy Sokolov:
Na minha opinião, você não pode de forma alguma fazer uma versão estendida da Ajuda a partir de um vídeo de treinamento. A tarefa é educar, não iluminar os detalhes indignos.

Alexei pediu a opinião dos usuários do fórum, eu lhe escrevi minha opinião, e o que estará lá, só Alexei sabe :)

A propósito, como você pode aprender se não for mencionado em nenhum lugar? Sei disso, já que estou escrevendo em C++, e aqueles que só estão aprendendo MQL5, não saberão desses detalhes, porque a referência não diz uma palavra sobre isso :)

 
Você quer aprender OOP de forma competente? - Aprenda UML
 

Vasiliy Sokolov:

Então, quando a confusão de funções, variáveis e se está em sua cabeça forma alguma estrutura mais ou menos ordenada, é dito ao estudante: "Olhe: existe uma coisa como OOP. Esqueça o que lhe foi ensinado antes e comece a pensar como um humano novamente". Depois vem a quebra dos modelos, a "bagagem do conhecimento" obtida com tanto esforço é jogada no lixo e a pessoa se encontra em algum lugar entre a terra e o céu.

Bem, você é demais. Inicialmente, um homem esteve envolvido apenas no OOP. Pelo menos, simplesmente preparando uma xícara de café. De onde vêm os padrões? IMHO, o absurdo de professores ininteligentes, transferindo seus problemas para os alunos.
 

Não assuste as pessoas com OOP.

Você não precisa conhecer o OOP para criar bons EAs ou outras coisas na MQL5. Você não precisa nem conhecer a palavra classe ou ponteiro.

O OOP é usado principalmente para criar grandes tarefas e complexos, especialmente quando há trabalho em equipe.

E na MQL5 você pode fazer sem OOP.

Devo acrescentar que há mais de 10 anos estou envolvido no treinamento daqueles programadores, que querem trabalhar em empresas estrangeiras, onde o principal requisito é o conhecimento do OOP.

Isto eu digo para que você não pense que eu sou um oponente do OOP. É apenas necessário utilizá-lo como previsto e não complicar a vida.

 

O entendimento do OOP vem por si só quando os programas se tornam mais complexos. O programador começa a dividir a folha de código em várias funções, há uma necessidade de transferir resultados de várias funções entre si, logo ele começa a suspeitar que transferir tudo através de argumentos de funções não é a melhor solução, muito provavelmente ele começará a criar variáveis globais, uma pessoa está quase madura para OOP, a única coisa que resta é isolar funções logicamente relacionadas e seus dados privados. Minha experiência: de volta ao mcl4, comecei a criar algo assim:

// file_1.mqh
int name1_counter = 0;
int name1_data = 0;
double name1_value = 0;
void name1_action() {name1_counter++; name1_data = ;}
int name1_get() {return }

// file_2.mqh
int name2_counter = 0;
int name2_data = 0;
double name2_value = 0;
void name2_action() {}
int name2_get() {}


Eu nem sabia de nenhum OOP, mas ele estava quase lá (sim, apenas uma instância, mas o esqueleto estava pronto). Eu acompanharia os estagiários através destas etapas. Comece com uma folha de int's e if's e estruture gradualmente o código. No final, uma pessoa quase chega ao OOP sozinha e o principal é que ela entenderá como chegou lá.

Lembro-me de ter lido um livro sobre esta "mágica" OOP, há muito tempo atrás. O clímax do livro foi uma demonstração de funções virtuais dizendo que este é o poder do OOP. Eu deveria arrancar as mãos de tais autores. Até agora não encontrei nenhum livro decente.