Falar o que desta lista né ? Definitivamente a melhor do mundo :D ....<br><br><br>Solli M. Honório<br><br><div class="gmail_quote">Em 24 de março de 2010 13:14, Eden Cardim <span dir="ltr">&lt;<a href="mailto:edencardim@gmail.com">edencardim@gmail.com</a>&gt;</span> escreveu:<br>

<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">2010/3/23 Thiago Glauco &lt;<a href="mailto:thiago@nerdsland.net">thiago@nerdsland.net</a>&gt;:<br>


<div class="im">&gt; Aiai..<br>
&gt;<br>
&gt; Este é o tipo da coisa que é tão simples que fica difícil explicar...<br>
&gt;<br>
&gt; Quando o Perl foi criado, uma das preocupações do Larry era tornar a<br>
&gt; linguagem parecida com a linguagem humana. Que é influenciada pelo contexto.<br>
&gt; O contexto é algo que deve estar subentendido pelas duas partes do dialogo.<br>
&gt;<br>
&gt;<br>
&gt; Exemplo de contexto: “Chovem canivetes.” ou “Ele me cortou com um canivete.”<br>
&gt;<br>
&gt; A palavra canivete varia conforme o contexto. E você sabe disso<br>
&gt; intuitivamente, culturalmente. É impossível chover canivetes. Mas você sabe<br>
&gt; que canivetes são perigosos. Então se alguém disser que choveram canivetes,<br>
&gt; você associa o canivete a uma situação de chuva perigosa, logo muita chuva.<br>
<br>
</div>Na verdade, o contexto do perl não ocorre em termos de cultura, isso<br>
seria impossível de automatizar. O contexto do perl ocorre em termos<br>
de gramática, sintaxe e semântica:<br>
<br>
&quot;Diminua o grave da guitarra&quot; vs &quot;Ele sofreu um ferimento grave&quot;<br>
<br>
&quot;Diminua&quot; é um verbo transitivo, o que exige que ele seja<br>
complementado por um objeto direto, nesse caso &quot;grave&quot;, que indica que<br>
a palavra &quot;grave&quot; nesse caso é um substantivo, no caso uma das<br>
métricas de frequência sonora.<br>
<br>
&quot;um ferimento&quot; é um objeto indireto, que pode ser opcionalmente<br>
acompanhado de um complemento nominal, o que obriga &quot;grave&quot; a ser um<br>
adjetivo, nesse caso, de intensidade.<br>
<br>
Essa análise pode estar incorreta (não sou muito bom em lingua<br>
portuguesa, alguém que for pode me corrigir), mas o importante aqui é<br>
observar como o significante (o lexema &quot;grave&quot;) permaneceu o mesmo,<br>
mas o significado mudou para satisfazer a gramática e suas regras de<br>
semântica.<br>
<div class="im"><br>
&gt; Agora, vamos levar isto para o Perl.<br>
&gt;<br>
&gt; $myVar = 1;<br>
&gt; $myOtherVar = 2;<br>
&gt; $sum = $myVar + $myOtherVar;<br>
<br>
</div>&#39;+&#39; é um operador binário de associação à esquerda. Operadores<br>
binários exigem que os seus dois operandos sejam do mesmo tipo (ou<br>
objetos sobrecarregados, que vou deixar de fora para simplificar). Por<br>
ser associativo à esquerda, o operador &#39;+&#39; permite que o operando da<br>
esquerda tem precedência na determinação do tipo. Pro caso específico<br>
do operador &#39;+&#39;, os operandos devem ser números. Se o operando já não<br>
for um número (sim, o perl registra isso por trás das cenas), o perl<br>
vai criar uma *representação numérica* do seu valor para ser usado no<br>
lugar do operando. Observe que isso não é uma conversão, porque o<br>
valor original não é modificado. A construção do número varia a<br>
depender do operando: arrays são representados pela contagem dos<br>
elementos; strings que comecem com uma representação numérica aceita<br>
pelo perl são representados pelo número respectivo, as que não casam<br>
são representados por 0; referências são representadas pelo endereço<br>
de memória, etc.<br>
O mesmo vale pro operador &#39;=&#39;, que também é um operador binário de<br>
associação à esquerda. O operador da esquerda sendo escalar, o<br>
operador da direita também deve ser um escalar, e o perl cria as<br>
representações adequadas para satisfazer a gramática.<br>
<div class="im"><br>
&gt; E o compilador sabe, pelo contexto, que agora você quer tratar $sum como uma<br>
&gt; string de texto, e não mais como um número...<br>
<br>
</div>Na verdade, quem faz essa análise é o interpretador, o compilador<br>
apenas sabe, através da gramática, que um escalar qualquer pode estar<br>
aparecer em qualquer lugar onde um número poderia aparecer, e o<br>
interpretador vai saber se virar na hora de executar.<br>
<div class="im"><br>
&gt; O compilador sabe que não pode colocar o array dentro de um Scalar. Mas o<br>
&gt; compilador também sabe que você não é um idiota. Então ele pensa: &quot;O que<br>
&gt; existe em um array que pode ser guardado dentro de um escalar? Ah, já sei. O<br>
&gt; número de elementos do array&quot;.<br>
<br>
</div>Não, ele não pensa, ele usa uma &quot;pesca&quot;. Inclusive, você pode<br>
sobrecarregar esse comportamento alterando a tabelinha que o perl usa<br>
como &quot;pesca&quot;. ;)<br>
<br>
meus 0.02<br>
<font color="#888888"><br>
--<br>
   Eden Cardim       Need help with your Catalyst or DBIx::Class project?<br>
  Code Monkey                    <a href="http://www.shadowcat.co.uk/catalyst/" target="_blank">http://www.shadowcat.co.uk/catalyst/</a><br>
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?<br>
<a href="http://edenc.vox.com/" target="_blank">http://edenc.vox.com/</a>            <a href="http://www.shadowcat.co.uk/servers/" target="_blank">http://www.shadowcat.co.uk/servers/</a><br>
</font><div><div></div><div class="h5">_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>&quot;o animal satisfeito dorme&quot;. - Guimarães Rosa<br>