Olá, Paulo, é interessante o seu ponto. Agora que me ocorreu que uma das
dificuldades em Lisp se trata da forma como você resolve o problema: por
partes, do mais simples ao mais complexo, da mesma forma que você faz no
papel ou na cabeça.

Isso lembra aquele problema apresentado nessa lista a uns dias atrás onde o
usuário estava esboçando código em C e ele fazia as manipulações nas listas
na marra, elemento a elemento. No meu raciocínio, para cada lista numa lista
de listas eu tinha que verificar se o 1o elemento batia com um 1o elemento
fixado e remover essas ocorrências da lista original, então o que eu fiz foi
o mais natural: (remove elemento listas :key #'car).

Agora, em C, a sua forma de pensar muda: você não tenta encapsular esse
passo em uma única chamada de função porque é muito complicado sem funções e
sem macros. Ao invés disso você prefere fazer um for para ir removendo
manualmente as listas. Ou seja: você perde tempo fazendo o que você já sabe
fazer, alongando o código e dificultando seu próprio raciocínio frente ao
problema.

Na minha opinião, a única coisa legal de se fazer em baixo nível é uma base
que você encapsula e transforma em alto nível, por exemplo ao usar o cffi
para criar uma biblioteca baseada numa biblioteca em C, ou ao fazer uma
coisa parecida com o spartns. Claro, desde que você possa usar funções de
alto nível para isso ;)

Gustavo


Em 10 de agosto de 2010 16:11, Paulo Jabardo <[email protected]>escreveu:

> Eu não acho que o problema seja IDE ou coisas do tipo. Nem mesmo qualidade
> de aluno e professor. Eu brinco com lisp de vez em quando e eu acho os
> conceitos da linguagem geniais. Um monte delas foram apropriadas por
> linguagens como Python e as macros só lisp tem mesmo. Eu acho que a grande
> dificuldade é que programar bem em lisp exige uma certa maturidade do
> programador. Há alguns anos eu resolvi dar uma olhada em Ruby. Em uma tarde
> eu podia fazer praticamente de tudo. No lisp eu levei muito mais tempo. Em
> python você pode simplesmente jogar uma variável nova no meio da função e
> aos trancos e barrancos fazer o programa. O lisp, com os lets da vida, não
> incentiva isto, o que é bom,  mas exige maturidade. Tem um monte de coisas
> assim que eu acho que dificulta a entrada de programadores inexperientes.
>
> Uma outra coisa que eu, como admirador de lisp mas não programador no dia a
> dia, sentia (e sinto às vezes) é  certa dificuldade na leitura de código. De
> onde vem isso? Não tenho certeza, mas certamente não tem nada a ver com os
> parênteses. Talvez seja a facilidade de criar novas abstrações e abstrações
> diferentes (macros por exemplo) o que faz que seja necessário ver além do
> código imediatamente a sua frente: o que é esta macro que aparece aqui? É
> uma macro ou uma função e o que faz? Onde está definida? As limitações de
> outras linguagens eliminam este tipo de problema: o que você vê é o que há e
> não é muito complicado (em geral...). É lógico que mais para frente estas
> abstrações facilitam muito mas para alguém começando com lisp é extremamente
> intimidador.
>
> As conseqüências destes aspectos é que em geral um código em lisp possui
> funções (ou "blocos de código") bem menores o que a longo prazo é muito bom
> mas para iniciante é um pouco complicado. Esta foi minha experiência
> começando com lisp e acho que seja um aspecto importante da falta de
> popularidade do lisp.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Lisp-br" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/lisp-br?hl=en.

Responder a