Discussão do artigo "Usando Pseudo-modelos como Alternativa para Modelos C++"

 

Novo artigo Usando Pseudo-modelos como Alternativa para Modelos C++ foi publicado:

O artigo descreve uma forma de programação sem usar templates, mas mantendo o estilo de programação inerente a eles. Ele nos diz sobre a implementação de templares usando métodos personalizados e possui um script pronto para uso anexo para criação de código com base de templates especificados.

Autor: Nikolay Demko

 

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.

[Excluído]  
Virty:

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)...? ?

 
Interesting:

300 :)

E de 10 a 20 mil, o que você acha (e isso levando em conta a divisão em módulos).... ?

São realmente 20.000? Meu Deus, como você consegue chegar lá? Talvez o algoritmo 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.
[Excluído]  
Virty:
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).

[Excluído]  
Nikolay, bom artigo. Com certeza vou experimentar, talvez eu goste e use "modelos" em MQL5.
 

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:

str="double a=1.5;"

void eval(str);
Print(a); // a=1.5

Preciso de uma função void eval(str), com o resultado a=1,5.

O artigo é bom, obrigado!

 
denkir:

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.
 
Urain:

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
 
denkir:
Muito obrigado pela resposta... Vou estudar a questão
A propósito, as operações lógicas < > > == são definidas para cadeias de caracteres.
Документация по MQL5: Основы языка / Операции и выражения / Логические операции
Документация по MQL5: Основы языка / Операции и выражения / Логические операции
  • www.mql5.com
Основы языка / Операции и выражения / Логические операции - Документация по MQL5