[SP-pm] SaoPaulo-pm Digest, Vol 71, Issue 49

thiagoglauco at ticursos.net thiagoglauco at ticursos.net
Fri Aug 20 09:23:22 PDT 2010


Quoting Pinguim Azul <bluepenguin em gmail.com>:

> On Fri, Aug 20, 2010 at 11:16 AM,  <thiagoglauco em ticursos.net> wrote:
>>
>> Eu apenas concordo com isso. Todos são livres para discordar.
>
> Eu discordo, porque eu acho que a premissa é errada. Nós não
> deveríamos modelar linguagens de computador em linguagens humanas,
> porque linguagens humanas são horríveis: elas são ambíguas e propensas
> a erro.

Isso, meu amigo, se chama ser humano!!! E as linguagens humanas sao,  
na minha opiniao belas e poéticas em sua ambiguidade. O Homem começou  
a falar a cerca de 60 mil anos... numa existencia de cerca de 1 milhao  
de anos... Veja quanta coisa surgiu de la para ca? E o que existia nos  
999.940.000 anos anteriores? Mas isso é só comentário não importante  
em nossa discução.


> Por exemplo, se o Joãozinho atirou água em seu pai, ele atirou
> no pai de quem está lendo ou no pai do Joãozinho? Você não poderia
> admitir isso numa linguagem de programação, pois você pode programar
> A, o compilador entender B, e aí teu programa tem bug e você não sabe
> o porquê.

Opa... o problema aqui é: Joazinho atirou em seu pai é uma coisa...  
Atirou em teu pai é outra...

assim como 1+2<<2 é uma coisa, (1+2)<<2 é outra diferente de 1+(2<<2)

Esse é um problema do conhecimento da gramática da linguagem. Assim  
como o C ou o Perl ou o Português!

Então a solução para ambiguidade é o velho Assembly??? Ou gravar  
binários direto na ROM. As linguagens de programação tem sucesso  
quando se aproximam da linguagem humana. Seja C, java ou perl voce nao  
costuma dize no programa:

mov <endereco1> <registrador1>
mov <endereco2> <registrador2>
add <registrador1> <registrador2>

Ninguem mais programa em Assembly por que? Por que é distante da  
abstração de comunicação humana.


>
> Isso acontece um bocado com linguagens da linha do C e do Perl, o
> sujeito escreve 1+2<<2 esperando que a resposta seja 9, aí ele compila
> e o resultado é 12, como fica? O que acontece é que 1+2<<2 é ambíguo,
> e o compilador vai resolver isso definindo arbitrariamente uma ordem
> de precedência, que no caso do C, contra-intuitivamente, é primeiro o
> + e depois o <<.

Opa, isso é como uma regra gramatical! Ou voce escreve certo ou  
escreve errado...

>
> Tem um paper de psicologia muito bom chamado The Magic Number 7 que
> fala qual o perigo disso:
>
> http://en.wikipedia.org/wiki/The_Magical_Number_Seven,_Plus_or_Minus_Two
>
> Em geral, mentes humanas conseguem processar só 7 fatos ao mesmo
> tempo. Se a ordem de precedência não é explicíta no código, então ela
> precisa ficar guardada na cabeça do sujeito que está programando. Aí,

Voce pode forçar a precedencia se não consegue lidar com ela. O Perl e  
o C te deixam livre para isso!!!

> ele só pode lidar com 6 coisas ao invés de 7, porque um slot está
> ocupado. E, a cada regra que desambiguiza a linguagem, esse contador
> vai diminuindo, até o ponto em que você precisa de muita concentração
> pra conseguir programar, porque está no limite de coisas simultâneas
> que teu cérebro aguenta.
>
> IMHO deveríamos modelar linguagens de modo a eliminar a ambiguidade,
> não a adicioná-la. E se a sua premissa é ir na direção das linguagens
> naturais, então a ambiguidade vai aparecer mais cedo ou mais tarde.

E vai mesmo... as coisas vão ficando meio fuzzy, não acha? Nem tudo é  
sim ou não. Existe mais para analisar que zero ou um!!!

>
> --
> Ricardo Bittencourt
> http://www.ricbit.com
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>





More information about the SaoPaulo-pm mailing list