Realidades Paralelas

Wednesday, January 11, 2006

Tony Hoare, um rapaz simples, um homem do povo

Born in 1934, C. A. R. Hoare [...] graduated in Ancient Greats (Latin, Greek, Philosophy, and Ancient History) from Oxford University in 1956. While at Oxford, he also pursued extracurricular interests in the theory of probability and in mathematical logic[...]. Conscripted into the Royal Navy after his graduation, Hoare took the opportunity to study Russian, gaining an interpreter's qualification, and then spent a year at Moscow State University, attending lectures by the famous probability theorist A. N. Kolmogorov. At the end of his stay in Moscow, Hoare was asked to be an interpreter at an industrial exhibition. One of the exhibitors was the British firm Elliott Brothers, and Hoare was fascinated by the computer they had on display. [...]

In 1961 Hoare, now working for Elliott Brothers, attended a course on ALGOL 60 taught by [Peter] Naur, [Edsger] Dijkstra, and the British computer scientist Peter Landin. The course was a revelation. During it Hoare suddenly realized how to use ALGOL's elegant features to implement a new, fast sorting algorithm that he had thought up. Hoare's Quicksort, published in 1962, began to establish his reputation as a computer scientist.

Mechanizing Proof: Computing, Risk and Trust de Donald MacKenzie

Wednesday, January 04, 2006

Como programar em Java

Na plataforma Java, digo, não na linguagem. E a minha resposta é: programando em Scala. É uma linguagem orientada a objetos e funcional, que mistura muito bem os dois paradigmas, gera código para rodar na máquina virtual Java e se integra facilmente com as outras partes da plataforma.

Scala tem funções como cidadãos de primeira classe da linguagem, polimorfismo paramétrico, uma espécie de híbrido de tipos algébricos e hierarquias de classes, tudo bem misturado e consistente. Tem atribuição e a parte imperativa também, de forma que é possível escrever código quase idêntico ao que seria em Java -- mas quem vai querer isso? O importante dessa decisão de projeto é a facilidade de usar classes Java em código Scala: é imediato e não requer nenhum processo, nada de marshalling, pré-processamento, nada. Não é Haskell (a maior falta são tipos de ordem superior; embora seja possível definir mônadas específicas, não é possível definir o conceito de mônadas) mas é muito melhor do que Java. A sintaxe C-like perde um pouco de concisão, mas foi uma decisão consciente para atrair programadores, e não chega a atrapalhar muito. Eu só acho estranho, depois de uns 2 anos programando em OCaml e Haskell, escrever um if sem then.

A partir de agora, sempre que eu precisar criar algum programa para a plataforma Java, será em Scala. Java não é uma linguagem ruim, só é extremamente chata. Sem graça. Além de muito prolixa.

(Na plataforma .NET eu usaria F#. Uma vantagem de F# é a sintaxe, mais agradável para meu gosto atual; uma desvantagem é que a integração com as classes da plataforma .NET é bem menos descomplicada que em Scala.)

Monday, January 02, 2006

Novos livros






Engineering a Compiler













The Reasoned Schemer