Programação  
 
Rede de conhecimento computador >> Programação >> Programação De Computador Idiomas >> Content
O que é RedEx e como ele se relaciona com a avaliação de expressões nas linguagens de programação?

RedEx:A chave para avaliação da expressão



A RedEx (abreviação de expressão redutível ) faz parte de uma expressão em uma linguagem de programação que pode ser simplificada ou reduzido De acordo com as regras de avaliação do idioma . Pense nisso como uma sub-expressão que está "madura" para o cálculo.

Em essência, um reden é o pedaço de código onde a próxima etapa computacional pode acontecer.

Como se relaciona com a avaliação:

A avaliação de uma expressão envolve identificação e redução repetidamente de redes até que a expressão esteja em uma "forma normal" - um estado em que não são possíveis reduções adicionais. Essa forma normal representa o resultado final da expressão.

Aqui está um detalhamento da conexão:

1. Identifique o RedEx: O processo de avaliação inicia digitalizando a expressão para encontrar uma sub-expressão que corresponda a uma regra de redução conhecida. Este é o RedEx.

2. Reduza o redel: O RedEx é então "reduzido" ou "reescrito" usando a regra de redução correspondente. Isso geralmente envolve a substituição do RedEx por uma expressão mais simples.

3. Repita: O processo é repetido. A nova expressão (após a redução) é verificada para outro RedEx. Isso continua até que não sejam mais redefinidos.

4. forma normal: A expressão final, que não contém redes, é considerada o resultado da avaliação. É o "valor" da expressão original.

Exemplos para ilustrar:

1. Cálculo Lambda (um modelo simples de computação):

* Expressão : `(λx. x + 1) 5` (isso representa uma função que adiciona 1 ao seu argumento, aplicado ao valor 5)
* RedEx: `(λx. x + 1) 5` em si é o redel. É uma aplicação de uma função lambda a um argumento.
* Regra de redução: A regra de redução beta (substituindo o argumento pelo parâmetro no corpo da função).
* Redução: `(λx. x + 1) 5` reduz para` 5 + 1`
* Próximo RedEx: `5 + 1`
* Regra de redução: Adição.
* Redução: `5 + 1` reduz para` 6 '
* forma normal: `6` (não há mais redes. Este é o resultado final.)

2. Expressão aritmética:

* Expressão : `(2 + 3) * 4`
* RedEx (sob uma ordem de avaliação estrita, como na maioria dos idiomas): `2 + 3`
* Regra de redução: Adição.
* Redução: `(2 + 3) * 4` reduz para` 5 * 4`
* Próximo RedEx: `5 * 4`
* Regra de redução: Multiplicação.
* Redução: `5 * 4` reduz para` 20`
* forma normal: `20`

3. Declaração condicional (em uma linguagem hipotética):

* Expressão : `Se for verdade, então 10 else 20`
* RedEx: `Se for verdade, então 10 else 20`
* Regra de redução: Se a condição for verdadeira, substitua toda a expressão pelo ramo "então".
* Redução: `Se for verdade, então 10 else 20 'reduz a` 10'
* forma normal: `10`

Conceitos -chave relacionados a Redexes:

* Estratégia de avaliação: A ordem em que os redes são escolhidos para redução afeta o processo de avaliação. As estratégias comuns incluem:
* Ordem de aplicação (avaliação ansiosa): Avalie os argumentos a uma função * antes de * aplicar a própria função. Isso geralmente é implementado com avaliação estrita (como muitos idiomas imperativos, como Java, C ++, Python).
* Ordem normal (avaliação preguiçosa): Avalie os argumentos para uma função * somente quando * seus valores são realmente necessários. Isso é usado em linguagens puramente funcionais como o Haskell.
* chamado-by-name: Substitua o argumento não avaliado diretamente no corpo da função.
* chamada por valor: Avalie o argumento e passe seu valor para a função. Semelhante à ordem aplicativa.
* chamado por necessidade: Semelhante ao nome de chamada, mas memoriza o resultado da primeira avaliação, para que os usos subsequentes do argumento não exijam reavaliação. Haskell usa isso.

* confluência: Uma propriedade desejável de um sistema de redução é que, independentemente da ordem em que os redes são reduzidos, a forma normal final (se existir) será a mesma. Isso é conhecido como o teorema da igreja e se mantém no Lambda Cálculus e em muitos outros sistemas formais.

Por que os RedExes são importantes?

* Semântica formal: Os Redexes e as regras de redução fornecem uma maneira precisa e formal de definir a semântica (significado) de uma linguagem de programação.
* otimização do compilador: Os compiladores podem usar a identificação e redução do RedEx para otimizar o código. Por exemplo, o dobramento constante (avaliando expressões constantes no tempo de compilação) é uma forma de redução do RedEx.
* Entendimento teórico: Os RedExes são fundamentais para entender como a computação funciona em um nível muito básico. Eles são uma pedra angular de muitos conceitos de teoria da linguagem de programação.
* Raciocínio equacional: Raciocínio sobre a correção do programa usando regras de redução para transformar o código em formulários equivalentes.

Em resumo, o conceito de um RedEx é central para entender como as expressões são avaliadas nas linguagens de programação. Ele fornece uma estrutura para definir, implementar e raciocinar sobre computação. Ao encontrar e reduzir repetidamente os RedExes, podemos determinar o resultado final de uma expressão.

Anterior :

Próximo :
  Os artigos relacionados
·Como vincular um dicionário para DropDownList 
·Como fazer um fulgor de Button em ActionScript 
·O que é um arquivo seqüencial 
·Como converter uma entrada para String em MATLAB 
·Como criar Drawables De Resource ID no Android 
·Como excluir um arquivo no SVN Eclipse 
·Como automatizar o Visio com o PowerShell 
·Como exibir Wingdings em um teclado 
·Um conjunto de etapas seqüenciais específicas que des…
·O que é o Python 2.2.3 
  Artigos em destaque
·Quantas linguagens de programação existem no mundo? 
·Como Produzir caracteres UTF-8 em PHP 
·Como inserir caixas de texto com o código do VBA no Ex…
·Como parar PHP URL Popups no Firefox 
·Como compilar Python em um terminal UNIX 
·Como escrever declarações de dados 
·Como fazer um modelo WPF DataGrid 
·Como converter uma String para UTF-8 em PHP 
·Métodos ArrayList em Java 
·PHP Erro fatal: memória esgotada 
Cop e direita © Rede de conhecimento computador https://ptcomputador.com Todos os Direitos Reservados