Realidades Paralelas

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 ?

0 Comments:

Post a Comment

<< Home