Gostei do artigo, embora não tenha entendido nada.
"É por isso que a principal tarefa resolvida pelos modelos ainda é reduzir a quantidade de código digitado por um programador a partir do teclado."
Por que se preocupar com modelos se você pode fazer isso sem copiar e colar? E a quantidade de código digitado não o incomoda nem um pouco - bem, haverá 300 linhas de código em vez de 100 - então o que há de errado? O principal é que ele funciona e a depuração não causa estresse excessivo.
E o código será mais transparente sem os modelos.
Gostei do artigo, embora não tenha entendido nada.
"É por isso que a principal tarefa resolvida pelos modelos ainda é reduzir a quantidade de código digitado por um programador a partir do teclado."
Por que se preocupar com modelos se você pode fazer isso sem copiar e colar? E a quantidade de código digitado não o incomoda nem um pouco - bem, haverá 300 linhas de código em vez de 100 - então o que há de errado? O principal é que ele funciona e a depuração não causa estresse excessivo.
E o código será mais transparente sem os modelos.
300 :)
Que tal 10-20K (e isso levando em conta a divisão em módulos)...? ?
300 :)
E de 10 a 20 mil, o que você acha (e isso levando em conta a divisão em módulos).... ?
São 20.000? Jesus, como você consegue entrar lá? Talvez o algoritmo ainda não tenha sido finalizado? Esses tamanhos deveriam ter sido colocados em bibliotecas há muito tempo. O que você está programando? 20.000 linhas, são 10 programadores para seis meses de trabalho.
Quanto às bibliotecas, eu lhe disse, levando em conta a modularidade.
Quanto a 20 mil, já vimos mais. Por exemplo, o modzli para o 1C 7.7 tem 50 mil linhas (e esse código não é deles, mas de outra pessoa).
Perdoe-me se eu não entender a essência da tarefa. Em C++, há economia de registros de código-fonte, mas aqui não há. Os modelos de função em C++ mostram onde você pode realmente economizar dinheiro. "Salvar o código-fonte" é a ideia principal.
E gerar uma quantidade obviamente excessiva de código-fonte para dificultar o trabalho posterior, bem, não, por favor.
Você precisa da mesma função para diferentes tipos de dados? A MQL5 tem sobrecarga de métodos. Não tenho dúvidas de que você sabe disso. Especialmente porque a alteração do tipo de dados de entrada geralmente requer a alteração da implementação.
E sobre isso:
>>Para depuração, é claro, você terá que mover o arquivo para o diretório do arquivo chamado ou para o diretório Include. Esse é exatamente o inconveniente da depuração de que falei acima quando mencionei as desvantagens dos pseudomodelos.
Você não precisa mover nada manualmente.
#property copyright "Copyright 2010, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Função de inicialização de especialista| //+------------------------------------------------------------------+ void gena() { string filename="code.mqh"; int handle=FileOpen(filename,FILE_WRITE|FILE_UNICODE); //-- geração de código arbitrário string st=TimeToString(TimeLocal(),TIME_DATE|TIME_MINUTES|TIME_SECONDS); string code="MessageBox(\"Hello World! Agora: "+st+"\");\r\n"; //------------------------------ FileWriteString(handle,code); FileClose(handle); } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ int OnInit() { //--- gena(); #include "../Files/code.mqh"; //incluir o código gerado //--- return(0); }
O exemplo é primitivo. Os inkludes podem ser inseridos dentro de funções. E todo o código no arquivo incluído atua dentro do escopo de visibilidade do local de inserção. O único problema é que você terá de criar um arquivo code.mqh vazio no Files para evitar que o compilador faça um xingamento. Na primeira execução, o código será criado e, na segunda, ele incluirá o trecho gerado.
Nikolai, aqui está uma pergunta. Você tem uma função que avalie uma cadeia de caracteres? Por exemplo:
Preciso de uma função void eval(str), com o resultado a=1,5.
O artigo é bom, obrigado!
Entendo que a pergunta não é sobre avaliação, mas sobre análise. A análise é muito versátil.
Você pode escrever regras diferentes. Tudo depende do que você deseja obter.
Por exemplo: como o analisador deve se comportar em tais exemplos?
"double a=1.5;" "double a =1.5;" "double a = 1.5;" "double a=1.5,b=2.5;" "double a =1.5,b =2.5;" "double a = 1.5,b = 2.5;" "double a = 1.5 , b = 2.5 ;"você sabe. Só posso recomendá-lo a estudar a funcionalidade da seção de funções de cadeia de caracteres em exemplos simples. Se conseguir operar as funções a partir da memória, poderá planejar seu desenvolvimento com base nas possibilidades da funcionalidade. Sem pensar no que pode e no que não pode fazer. Conhecendo as possibilidades da funcionalidade, você terá uma ideia clara de qual algoritmo será o mais adequado para resolver sua tarefa.
Portanto, entendo que a pergunta não é sobre avaliação, mas sobre análise. A análise é muito versátil.
Você pode ter regras diferentes. Tudo depende do que você deseja obter.
Por exemplo: como o analisador deve se comportar em tais exemplos.
Você sabe. Só posso recomendar que você estude a funcionalidade da seção de funções de cadeia de caracteres em exemplos simples. Se conseguir operar as funções a partir da memória, poderá planejar seu desenvolvimento com base nas possibilidades da funcionalidade. Sem pensar no que pode e no que não pode fazer. Conhecendo os recursos da funcionalidade, você terá uma ideia clara de qual algoritmo será o mais adequado para resolver sua tarefa.Muito obrigado pela resposta... Vou estudar a questão
- www.mql5.com
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Usando Pseudo-modelos como Alternativa para Modelos C++ foi publicado:
Autor: Nikolay Demko