W3log de Tiago Charters de Azevedo (Comentários para: tca@diale.org)
# | 2008-06-26
a escrever uns textos sobre matemática e programação. A ideia base seria a de recursividade, tornar explícito o facto de o uso de funções totais estarem intimamente relacionadas com o cálculo computacional.
Tenho já alguns exemplos na manga:
(...)
# | 2008-06-18
Recebi hoje, e pela primeira vez, um comentário sobre os programas escritos em GNU/Octave. Foi feito por um estudante de Engenharia brasileiro que queria aplicar o método da falsa posição.
A dúvida era simples e oportuna, a vontade genuína e livre.
Obrigado.
# | 2008-06-17
Acredito que a melhor maneira de fazer e ensinar matemática é através de uma linguagem de programação. O problema é saber qual e como explicitar isto de modo que seja credível1.
A linguagem de programação mais interessante, qualquer uma serviria diga-se, é Lisp. Lisp é uma linguagem de programação funcional muito semelhante ao cálculo lambda inventada em 1958 por John McCarthy publicada num artigo intitulado "Recursive Functions of Symbolic Expressions and Their Computation by Machine". Os dois maiores dialectos de Lisp são o Common Lisp e o Scheme. No entanto, muito provavelmente, a maioria do código escrito em Lisp não está escrito em nenhum destes dialectos! A maior parte do código de Lisp está escrito em ELisp, um dialecto de Lisp usado pelo GNU Emacs.
Mas então porque é que recai sobre Lisp a minha preferência? Devido à sua semelhança com o cálculo lambda, que é em si mesma uma linguagem de programação minimalista, permite expressar e construir qualquer algoritmo.
Se não veja-se alguns exemplos simples.
Quando se diz " a soma de um mais dois dá três", o que se quer dizer realmente com isto? Somar um a dois é agarrar no número dois e somar 1 2, i. e.
+ 1 2
E se quisermos somar "3 mais 1"? Bom, é a mesma coisa, agarro no número 3 e somo-lhe uma unidade. O que estou então a fazer? Em geral somar um unidade, somar um, a um outro numero inteiro é simplesmente fazer
(lambda (x) (+ x 1))O que é isto então? O resultado de calcular a expressão designada por
lambda é a
própria expressão, que neste caso é simplesmente somar um.
A expressão lambda formaliza então a ideia de função, i. e., constrói a
formalização de transformar x em, neste caso, + x 1.
Notas:
1. Isto pode parecer estúpido mas é muito relevante. Nem sempre é fácil convencer alguém de que algo verdadeiro é importante.
2. Nos exemplos que se seguem vou usar a Reverse Polish notation.
# | 2008-06-17
Há um certo afastamento da matemática em relação às linguagens de programação. Isto é, se a melhor maneira de explicitar um pensamento rigoroso é através de uma linguagem de programação a não coincidência destas duas formas é sinal do seu afastamento propositado.
Desconfio da universalidade dos matemáticos, a sua pretensão tem efeitos devastadores na divulgação e entendimento da matemática.
# | 2008-06-14
octave> x=1/7 x = 0.142857142857143 octave> [x 2*x 3*x 4*x 5*x 6*x]' ans = 0.142857142857143 0.28571428571428 0.428571428571429 0.571428571428571 0.714285714285714 0.857142857142857
Há outros: 1/13, 1/14, 1/28, 1/35
Refs:
# | 2008-06-10
Todos os livros de divulgação de matemática têm uma secção sobre o número de ouro.
# | 2008-06-02

Resolvendo um sistema linear com a matriz
onde (x,y) são as coordenadas dos pontos sobre o círculo azul?
Refs:
1999-2008 (c) Tiago Charters de Azevedo São permitidas cópias textuais parciais/integrais em qualquer meio com/sem alterações desde que se mantenha este aviso.