sexta-feira, 19 de janeiro de 2007

Python não é Lisp

Dentre as linguagens que eu considerava com bom Design, uma era o python. Porém hoje eu achei um artigo explicando como que os clusures funcionan em python, e como contornar as suas dificiências: Python Closures Pt. 2.

Depois de esse texto eu compreendi porque querem tirar o operador lambda do pyton, sem uma semantica clara para o escopo das variáveis este operador é muito pouco útil.

Na minha opnião uma das grandes vantangens do Lisp é ter a semantica muito bem definida, o que evita surpresas desagradáveis, como esta do python.

2 comentários:

Walter Cruz disse...

Ora, não tem porque deixar de considerar python com um bom design.

De fato, a questão dos escopos e closures são chatas em python.

O python 3000 vai mudar os erros de design de python e procurar aprender com outras linguagens.

Veja o with do python 2.5. Eu gostei dele!

E sobre closures, vai melhorar no 3k. Leia a PEP 3104! http://www.python.org/dev/peps/pep-3104/

(O Guido até queria tirar o lambda, mas ele fica. E os map e coisas mais funcionais passam pra um namespace próprio)

La Batalema Pitonisto disse...

Lamento discordar, Leonardo, mas dizer que lambda é pouco útil é subestimar a capacidade deste recurso.

Admito sem remorso que seria muito mais útil se tivesse uma semântica mais clara para escopo de variáveis.

Não considero Lisp uma linguagem clara para leitura dos códigos, mas creio que seja um caso pessoal, assim como você deixou de considerar Python uma linguagem de bom design só porque não gostou da forma como lambda e closures funcionam.

Também não tenho o direito de falar de Lisp visto que conheço pouquíssimo da linguagem, no entanto não é da linguagem em si que estou falando, mas das espectativas das pessoas.

Todas as brigas de programadores de uma linguagem contra outra são causadas por dois motivos: ego (ninguém quer dar o braço a torcer) e espectativas frustradas: você espera algo de uma linguagem e ela não retorna da forma como você espera.

Se tratarmos cada linguagem de programação com a mente aberta, simplesmente aceitando seu funcionamento e tentando entender seu contexto (lógico, humano e social), todas acabam se mostrando boas linguagens (até mesmo a maldita linguagem Java).

[]'s