Realidades Paralelas

Wednesday, March 23, 2005

Há quase 30 anos...

Dijkstra advertia, no seu livro A Discipline of Programming:

Historically speaking, this last aspect, viz. the fact that programming languages could be used as a vehicle for instructing existing automatic computers, has for a long time been regarded as their most important property. The efficiency with which existing automatic computers could execute programs written in a certain language became the major quality criterion for that language ! As a regrettable result, it is not unusual to find anomalies in existing machines truthfully reflected in programming languages, this at the expense of the intellectual manageability of the programs expressed in such a language (as if programming without such anomalies was not already difficult enough!).

Saturday, March 19, 2005

CiteULike

Sitezinho útil esse CiteULike.

Por falar no assunto, aqui vai a minha página lá.

Wednesday, March 16, 2005

Wadler

Nao "Linkei" para o blog de Philip Wadler antes. O blog é principalmente sobre Links...

Saturday, March 05, 2005

Concorrência, round 1

Lendo os capítulos do Theories of Programming Languages de John Reynolds que tratam de concorrência, é interessante ver como a característica imperativa complica ainda mais as coisas que já são complicadas nessa área. No caso, a concorrência por variáveis compartilhadas, que é o paradigma mais utilizado hoje em dia, graças às threads popularizadas pela linguagem Java. Supostamente mais eficientes, mas são uma grande bagunça para trabalhar.

Uma coisa que me ocorreu: quando os modelos formais para uma linguagem ou técnica se complicam, é um sinal que é difícil raciocinar direito sobre ela. Dijkstra basicamente resolveu isso de uma vez por todas no caso do goto e da programação estruturada; ocorre uma simplificação no modelo conceitual que ajuda a concepção de sistemas formais, mas isso também se reflete em um modelo mental mais simples para os programadores.

Com o estado explícito acontece a mesma coisa. As técnicas de programação modular e orientação a objetos não são formas de limitar o escopo das alterações de estado ? Dessa forma, o estado explícito fica um pouco mais contido, mais sob controle, mas ainda não totalmente. Uma linguagem funcional tem uma semântica formal muito mais simples que uma linguagem imperativa equivalente; isso se reflete na forma de pensar, e também nas ferramentas que manipulam código, incluindo aí compiladores.

Ah, e um dos engenheiros importantes da Adobe reconhece que 70% do código de interface usado hoje em dia (na Adobe) poderia ser declarativo. E ele postula que a porcentagem seria aproximadamente a mesma no resto da indústria.

Com isso e projetos como Links, e como aparentemente a indústria está acordando do mito da orientação a objetos como panacéia, será que a programação funcional vai pegar ?