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á.
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 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á 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 :)
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 :)
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.
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 :)
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.
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.
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 ))