TheCodeNaked

Paralelismo - Episódio 14 (Copy)

Episódio 14 - Funções com Parâmetros: tornando sua linguagem realmente expressiva

No episódio anterior, mostramos como criar macros reutilizáveis. Agora vamos dar um passo ainda mais expressivo: permitir funções com parâmetros, como em qualquer linguagem real.

Por que isso é importante?

Porque reutilizar blocos é bom, mas reutilizar blocos que se adaptam ao contexto é muito melhor.

Vamos direto ao ponto.

Sintaxe desejada

Queremos que o JSON do interpretador aceite algo assim:

{
  "acao": "DefinirFuncao",
  "nome": "VerificarMaioridade",
  "parametros": ["idade"],
  "blocos": [
    { "se": { ">=": [ { "var": "idade" }, 18 ] }, "entao": { "retornar": true } },
    { "senao": { "retornar": false } }
  ]
}

Depois, poderemos usar assim:

{
  "acao": "ChamarFuncao",
  "nome": "VerificarMaioridade",
  "parametros": { "idade": 21 }
}

Como funciona internamente

  1. O interpretador registra a função com nome, lista de parâmetros e blocos
  2. Quando a função é chamada, cria-se um contexto local onde os parâmetros viram variáveis
  3. Os blocos da função são executados com esse contexto temporário
  4. O valor de retornar quebra a execução e entrega o resultado

Benefícios imensos

  • Você pode escrever menos e reaproveitar mais
  • Pode construir sua própria biblioteca declarativa
  • Pode escrever sistemas de regras com clareza e baixo acoplamento
  • Pode adicionar testes automáticos para cada função declarativa

E mais: isso se encaixa perfeitamente com TSafeThreadInterface e TTaskChain

Imagine usar esse mesmo sistema para criar workflows declarativos:

  • Uma função que representa uma tarefa
  • Que pode ser chamada com parâmetros diferentes
  • E executada em thread separada
  • E encadeada com outras

Você acaba de criar sua linguagem declarativa pluginável, paralelizável e reutilizável.


No próximo episódio, vamos mostrar como usar essas funções para criar pipelines de execução complexos, onde o resultado de uma chamada alimenta outra. Literalmente, um motor de execução declarativo com fluxo de dados.

Sobre o autor

TheCodeNaked

No TheCodeNaked, programar é consequência, não ponto de partida. Antes do código, vem a dúvida, a análise, o contexto. Não seguimos fórmulas — questionamos. Criar software é pensar com clareza. O resto é só digitação.

TheCodeNaked

Criar com clareza. Codificar com intenção.

TheCodeNaked

Ótimo! Você se inscreveu com sucesso.

Bem-vindo de volta! Você acessou com sucesso.

Você se inscreveu com sucesso o TheCodeNaked.

Sucesso! Verifique seu e-mail para acessar com o link mágico.

As suas informações de faturamento foram atualizadas.

Seu pagamento não foi atualizado