Algoritmo de Trabb Pardo-Knuth
O Algoritmo de Trabb Pardo-Knuth, ou algoritmo TPK, foi criado por Donald Knuth e Luis Trabb Pardo para demonstrar a evolução das linguagens de programação. Em seu artigo de 1977, "The Early Development of Programming Languages", eles apresentaram um programa simples que incorporava conceitos fundamentais como arrays, índices, funções matemáticas, sub-rotinas, entrada/saída, condicionais e iteração. Em seguida, implementaram o algoritmo em diversas linguagens da época para ilustrar como esses conceitos eram expressos em cada uma delas.
Pontos-chave
- O algoritmo TPK foi introduzido por Knuth e Trabb Pardo em 1977.
- Seu objetivo era ilustrar a evolução das linguagens de programação.
- O algoritmo envolve arrays, funções matemáticas, E/S, condicionais e iteração.
- Ele processa onze números, aplicando uma função e verificando limites.
- As implementações revelam como diferentes linguagens lidam com conceitos e erros.
O algoritmo TPK opera lendo onze números de um dispositivo de entrada e os armazenando em um array. Posteriormente, ele processa esses números em ordem reversa. Para cada valor, uma função específica é aplicada. O algoritmo então reporta o resultado da função ou exibe uma mensagem caso o valor exceda um limite pré-definido.
As implementações do algoritmo TPK em diferentes linguagens revelam como cada uma lida com os conceitos de programação e, especialmente, com situações de erro como o transbordamento numérico.
ALGOL 60: Limites e Transbordamento
Um dos desafios na função especificada do algoritmo TPK é o termo `5 * t ^ 3`. Para números negativos muito grandes, essa expressão pode facilmente causar um 'transbordamento' (overflow) na maioria das linguagens de programação, excedendo a capacidade máxima de representação numérica.
Python: NaN, Inf e Exceções
Em Python, a maioria das plataformas utiliza o padrão IEEE 754 para números de ponto flutuante. Isso significa que, em certas operações, o resultado pode ser 'NaN' (Not a Number), 'Inf' (Infinito) ou, em outros casos, pode-se lançar uma exceção para indicar um erro ou uma condição inválida.
Rust: Tratamento de Erros com f64::NAN
A linguagem Rust possui uma abordagem específica para lidar com o transbordamento numérico em operações de ponto flutuante. Nesses casos, Rust retorna o valor `f64::NAN`, que representa 'Not a Number', indicando que o resultado da operação não é um número válido.


