<?xml version="1.0"?>
<rss version="2.0.">
  <channel>
    <title>Advogato blog for acs</title>
    <link>http://www.advogato.org/person/acs/</link>
    <description>Advogato blog for acs</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Sun, 6 Jul 2008 18:19:13 GMT</pubDate>
    <item>
      <pubDate>Fri, 11 Jan 2008 04:05:44 GMT</pubDate>
      <title>O Python e a sua misteriosa otimiza&#xE7;&#xE3;o de chamada de fun&#xE7;&#xE3;o</title>
      <link>http://www.advogato.org/person/acs/diary.html?start=43</link>
      <guid>http://jumpi.wordpress.com/2008/01/11/o-python-e-a-sua-misteriosa-otimizacao-de-chamada-de-funcao/</guid>
      <description>&lt;div class='snap_preview'&gt;&lt;br /&gt;&lt;p&gt;Continuando a saga de Fibonacci, eu e meu amigo &lt;a href="http://marcioandreyoliveira.blogspot.com" title="Marcio's Blog" target="_blank" &gt;Marcio&lt;/a&gt; fizemos algumas corre&#xE7;&#xF5;es e tcharam&amp;#8230; devo reconhecer&amp;#8230; o script python quando faz chamada de fun&#xE7;&#xE3;o consegue ser incrivelmente mais r&#xE1;pido que o script perl, tamb&#xE9;m fazendo chamada de fun&#xE7;&#xE3;o. Porem descobrimos uma coisa muito bizarra e que nos chamou a aten&#xE7;&#xE3;o enquanto realiz&#xE1;vamos os testes e por isso foco a minha aten&#xE7;&#xE3;o em rela&#xE7;&#xE3;o ao teste feito com python&amp;#8230;&lt;/p&gt;
&lt;p&gt;Rodando o seguinte c&#xF3;digo, feito inline em python:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
for i in range(1000000):&lt;br /&gt;
a, b = 0, 1&lt;br /&gt;
for j in range(71):&lt;br /&gt;
a, b = b, a+b&lt;br /&gt;
return b&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Profiling do c&#xF3;digo com chamada de fun&#xE7;&#xE3;o:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
alan@desenv:~$ python -m cProfile fibo.py&lt;br /&gt;
1000005 function calls in 86.083 CPU seconds&lt;br /&gt;
Ordered by: standard name&lt;br /&gt;
ncalls  tottime  percall  cumtime  percall filename:lineno(function)&lt;br /&gt;
1    0.000    0.000   86.083   86.083 :1()&lt;br /&gt;
1   57.280   57.280   86.083   86.083 fibo.py:7()&lt;br /&gt;
1    0.000    0.000   86.083   86.083 {execfile}&lt;br /&gt;
1    0.000    0.000    0.000    0.000 {method &amp;#8216;disable&amp;#8217; of &amp;#8216;_lsprof.Profiler&amp;#8217; objects}&lt;br /&gt;
1000001   28.802    0.000   28.802    0.000 {range}&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;E agora o mesmo c&#xF3;digo, s&#xF3; que realizando chamada de fun&#xE7;&#xE3;o:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
import sys&lt;br /&gt;
#import psyco&lt;br /&gt;
def fib(n):&lt;br /&gt;
a, b = 0, 1&lt;br /&gt;
for j in range(n):&lt;br /&gt;
a, b = b, a+b&lt;br /&gt;
return b&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;x = int(sys.argv[1])&lt;br /&gt;
y = int(sys.argv[2])&lt;br /&gt;
for i in range(x):&lt;br /&gt;
fib(y)&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Profiling do c&#xF3;digo com chamada de fun&#xE7;&#xE3;o:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
alan@desenv:~$ python -m cProfile fibo.py&lt;br /&gt;
2000005 function calls in 35.174 CPU seconds&lt;br /&gt;
Ordered by: standard name&lt;br /&gt;
ncalls  tottime  percall  cumtime  percall filename:lineno(function)&lt;br /&gt;
1    0.000    0.000   35.174   35.174 :1()&lt;br /&gt;
1    4.785    4.785   35.173   35.173 fibo.py:6()&lt;br /&gt;
1000000   25.671    0.000   30.327    0.000 fibo.py:6(fib)&lt;br /&gt;
1    0.000    0.000   35.174   35.174 {execfile}&lt;br /&gt;
1    0.000    0.000    0.000    0.000 {method &amp;#8216;disable&amp;#8217; of &amp;#8216;_lsprof.Profiler&amp;#8217; objects}&lt;br /&gt;
1000001    4.718    0.000    4.718    0.000 {range}&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ou seja, tirando o tempo de overhead do profile, o programa que realiza a chamada de fun&#xE7;&#xE3;o, consegue ser incrivelmente mais r&#xE1;pido que o programa inline, mesmo efetuando mais chamadas.&lt;/p&gt;
&lt;p&gt;Bem&amp;#8230; achei isso muito bizarro, sendo que, teoricamente o esperado era que o inline fosse mais r&#xE1;pido. Bem, se algu&#xE9;m puder me explicar isso eu agrade&#xE7;o bastante, pois a &#xFA;nica conclus&#xE3;o que consegui tirar ate aqui, e que o python, mesmo sem usar otimizadores, vide &lt;a href="http://psyco.sourceforge.net/" title="Python JIT" target="_blank" &gt;psyco&lt;/a&gt;, j&#xE1; tem uma otimiza&#xE7;&#xE3;o natural de fun&#xE7;&#xF5;es, o que torna as chamadas de fun&#xE7;&#xE3;o extremamente r&#xE1;pidas, porem eu queria entender essa otimiza&#xE7;&#xE3;o de chamada de fun&#xE7;&#xF5;es, pois gostei bastante e fiquei interessado em saber como tal feature funciona.&lt;/p&gt;
&lt;p&gt;E agora a minha conclus&#xE3;o em rela&#xE7;&#xE3;o ao que eu aprendi com esse teste ate aqui, se voc&#xEA; precisa fazer um programa bem r&#xE1;pido para testar qualquer coisa, use perl, resolve na maioria dos casos, agora se voc&#xEA; precisa de um teste mais elaborado, com chamada de fun&#xE7;&#xE3;o, vou come&#xE7;ar a pensar em usar o python&amp;#8230;&lt;/p&gt;
&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jumpi.wordpress.com/39/" /&gt; &lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jumpi.wordpress.com/39/" /&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jumpi.wordpress.com/39/" &gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jumpi.wordpress.com/39/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jumpi.wordpress.com/39/" &gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jumpi.wordpress.com/39/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jumpi.wordpress.com/39/" &gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jumpi.wordpress.com/39/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jumpi.wordpress.com/39/" &gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jumpi.wordpress.com/39/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jumpi.wordpress.com/39/" &gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jumpi.wordpress.com/39/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jumpi.wordpress.com&amp;blog=658253&amp;post=39&amp;subd=jumpi&amp;ref=&amp;feed=1" /&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <pubDate>Wed, 9 Jan 2008 04:09:03 GMT</pubDate>
      <title>Fibonacci Series Test (Perl and Python)</title>
      <link>http://www.advogato.org/person/acs/diary.html?start=42</link>
      <guid>http://jumpi.wordpress.com/2008/01/09/fibonacci-series-test-perl-and-python/</guid>
      <description>&lt;div class='snap_preview'&gt;&lt;br /&gt;&lt;p&gt;Post in portuguese about my tests with Fibonacci Series using perl and python&amp;#8230;&lt;/p&gt;
&lt;p&gt;Esses dias, para ser mais exato, na segunda-feira, o meu colega de trabalho &lt;a href="http://marcioandreyoliveira.blogspot.com" &gt;marcio&lt;/a&gt; a.k.a. tio estava falando sobre a sua escolha para criar um projeto de site que ele esta fazendo e para testar ele implementou o algor&#xED;timo de Fibonacci usando C, C++, Ruby e Python e mediu o tempo utilizando o comando time&amp;#8230; C e C++ entraram na lista so para ele poder criar um par&#xE2;metro. E ent&#xE3;o ele decidiu escolher pelo python devido ao tempo, porem, ele esqueceu do nosso velho amigo Perl e eu disse a ele que perl executava o mesmo teste mais r&#xE1;pido que python e ele me desafiou, ou seja, estou fazendo esse teste para demonstrar que o nosso velho amigo perl pode ser bom, lembrando que n&#xE3;o sou um bom programador python, mais tentei deixar o c&#xF3;digo o mais pr&#xF3;ximo poss&#xED;vel entre ambas as linguagens para que nenhum &lt;a href="http://www.google.com.br/search?q=boi+corneta+site%3Asualingua.com.br" &gt;boi-corneta&lt;/a&gt; (como diria o meu amigo &lt;a href="http://www.caloni.com.br/blog" &gt;Caloni&lt;/a&gt;, gostei da express&#xE3;o, por isso a utilizei aqui tamb&#xE9;m) venha se espantar aqui&amp;#8230;&lt;/p&gt;
&lt;p&gt;Bem&amp;#8230; para a realiza&#xE7;&#xE3;o desse teste, utilizei o meu laptop, um macbook com perl 5.8.8 e python 2.5.1 como podem ver abaixo:&lt;/p&gt;
&lt;pre&gt;[jumpi@Painkiller]~/Sources: perl -v&lt;/pre&gt;
&lt;pre&gt;This is perl, v5.8.8 built for darwin-thread-multi-2level (with 1 registered patch, see perl -V for more detail)&lt;/pre&gt;
&lt;pre&gt;Copyright 1987-2006, Larry Wall&lt;/pre&gt;
&lt;pre&gt;[jumpi@Painkiller]~/Sources: python -V Python 2.5.1&lt;/pre&gt;
&lt;p&gt;Para fazer os testes, utilizei uma vers&#xE3;o iterativa do algor&#xED;timo de Fibonacci (afinal de contas, poderia apelar para a recursiva, porem achei melhor utilizar essa para o teste), segue abaixo o c&#xF3;digo:&lt;/p&gt;
&lt;p&gt;Em perl:&lt;/p&gt;
&lt;pre&gt;#!/usr/bin/perl  use strict; my $n = shift; my ($a,$b)=(1,2);

print "$a\n$b\n";

for(1..$n-2) {

  ($a,$b) = ($b,$a+$b);

  print "$b\n"

}&lt;/pre&gt;
&lt;p&gt;Em python:&lt;/p&gt;
&lt;pre&gt;#!/usr/bin/python import sys def fib(n):

 a, b = 0, 1

 for i in range(n):

 	print b

 	a, b = b, a+b n = int(sys.argv[1])

fib(n)&lt;/pre&gt;
&lt;p&gt;E executei ambos os c&#xF3;digos, fazendo 10000 itera&#xE7;&#xF5;es e medindo o tempo usando o comando time, onde obtive o seguinte resultado:&lt;/p&gt;
&lt;p&gt;Em perl:&lt;/p&gt;
&lt;pre&gt;real	0m0.188s

user	0m0.054s

sys	0m0.047s&lt;/pre&gt;
&lt;p&gt;Em python:&lt;/p&gt;
&lt;pre&gt;real	0m10.778s

user	0m8.104s

sys	0m0.231s&lt;/pre&gt;
&lt;p&gt;Well&amp;#8230; ai esta a prova, pelo que posso ver o nosso velho amigo rabugento perl terminou a sua tarefa em um tempo menor que o python, pelo que posso enxergar, 10x mais r&#xE1;pido???&lt;/p&gt;
&lt;p&gt;Brincadeiras a parte, atrav&#xE9;s desse teste simples, podemos perceber que o perl, mesmo estando ultrapassado na vis&#xE3;o de muitos, ainda executa muito bem o servi&#xE7;o, logico que poder&#xED;amos utilizar n t&#xE9;cnicas em ambas as linguagens. Porem, como eu disse no principio, tentei simplificar ao m&#xE1;ximo para n&#xE3;o criar vantagens para nenhum dos lados.&lt;/p&gt;
&lt;p&gt;Hey tio, esse post vai em sua homenagem&amp;#8230; se quiser, te ajudo a utilizar perl com catalyst para criar o site&amp;#8230;&lt;/p&gt;
&lt;p&gt;Brincadeirinha&amp;#8230; ;D&lt;/p&gt;
&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jumpi.wordpress.com/37/" /&gt; &lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jumpi.wordpress.com/37/" /&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jumpi.wordpress.com/37/" &gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jumpi.wordpress.com/37/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jumpi.wordpress.com/37/" &gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jumpi.wordpress.com/37/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jumpi.wordpress.com/37/" &gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jumpi.wordpress.com/37/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jumpi.wordpress.com/37/" &gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jumpi.wordpress.com/37/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jumpi.wordpress.com/37/" &gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jumpi.wordpress.com/37/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jumpi.wordpress.com&amp;blog=658253&amp;post=37&amp;subd=jumpi&amp;ref=&amp;feed=1" /&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <pubDate>Sun, 6 Jan 2008 21:08:24 GMT</pubDate>
      <title>The Practice of Perl II</title>
      <link>http://www.advogato.org/person/acs/diary.html?start=41</link>
      <guid>http://jumpi.wordpress.com/2008/01/06/the-practice-of-perl-ii/</guid>
      <description>&lt;div class='snap_preview'&gt;&lt;br /&gt;&lt;p&gt;Upon requesting made and continuing my posts about perl practicality, show here a very elaborated code, extract from classic book that I have reading again, Pike &amp;amp; Kerninghan Practice of Programming.&lt;/p&gt;
&lt;p&gt;Yes, this book have a very interesting example of Markov Chains in perl.&lt;/p&gt;
&lt;p&gt;For those that dont knowing about Markov Chains, this is a particular case in stochastic process, where previous states are irrelevant for prediction of following states, since that actual state is knowing. This technique is very used for generate random text, as in the book example, but, the author uses only cases that envolve two-word prefixes, for test effects.&lt;/p&gt;
&lt;p&gt;The code used in the example, written in perl language:&lt;/p&gt;
&lt;p&gt;$MAXGEN = 10000;&lt;br /&gt;
$NONWORD = &amp;#8220;\n&amp;#8221;;&lt;br /&gt;
$wl = $w2 = $NONWORD;&lt;br /&gt;
while (&amp;lt;&amp;gt;) {&lt;br /&gt;
foreach (split) {&lt;br /&gt;
push(@{$statetab{$w1}{$w2}}, $_);&lt;br /&gt;
($w1, $w2) = ($w2, $_);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
push(@($statetab{$w1}{$w2}}, $NONWORD);&lt;br /&gt;
$w1 = $w2 = $NONWORD;&lt;br /&gt;
for ($i = 0; $i &amp;lt; $MAXGEN; $i++) {&lt;br /&gt;
$suf = $statetab{$w1}{$w2};&lt;br /&gt;
$r = int(rand @$suf);&lt;br /&gt;
exit if(($t = $suf-&amp;gt;[$r]) eq $NONWORD);&lt;br /&gt;
print &amp;#8220;$t\n&amp;#8221;;&lt;br /&gt;
($w1, $w2) = ($w2, $t);&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;And more impressive is what the result is make of simple and rapid form, very rapid, in the final of chapter has a performance table where perl losing only for C implementation, other implementations are written in Java, C++/STL/Deque, C++/STL/List and AWK, being that have 150 lines of code in C versus only 18 in perl.&lt;/p&gt;
&lt;p&gt;Well, I dont make apologies to perl, because I love C too, but, as the author says and define in the final of paragraph, scripting languages (perl, in this case) are a good choice for experimental programming and making prototypes, and I conclude, for rapid tasks and tests, perl is again language of my choice.&lt;/p&gt;
&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jumpi.wordpress.com/36/" /&gt; &lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jumpi.wordpress.com/36/" /&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jumpi.wordpress.com/36/" &gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jumpi.wordpress.com/36/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jumpi.wordpress.com/36/" &gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jumpi.wordpress.com/36/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jumpi.wordpress.com/36/" &gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jumpi.wordpress.com/36/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jumpi.wordpress.com/36/" &gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jumpi.wordpress.com/36/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jumpi.wordpress.com/36/" &gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jumpi.wordpress.com/36/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jumpi.wordpress.com&amp;blog=658253&amp;post=36&amp;subd=jumpi&amp;ref=&amp;feed=1" /&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 11 Dec 2007 20:14:51 GMT</pubDate>
      <title>Exemplo didatico sobre tratamento de exce&#xE7;&#xE3;o</title>
      <link>http://www.advogato.org/person/acs/diary.html?start=40</link>
      <guid>http://jumpi.wordpress.com/2007/12/11/exemplo-didatico-sobre-tratamento-de-excecao/</guid>
      <description>&lt;div class='snap_preview'&gt;&lt;p&gt;Um dos exemplos mais did&#xE1;ticos que eu ja vi sobre tratamento de exce&#xE7;&#xF5;es foi dado hoje aqui na empresa onde trabalho, est&#xE1;vamos na cozinha, no coffee time, quando come&#xE7;amos a discutir sobre tratamento de exce&#xE7;&#xF5;es e eis que o meu colega de trabalho, &lt;a href="http://marcioandreyoliveira.blogspot.com/" &gt;Marcio Andrey a.k.a. tio&lt;/a&gt; nos faz a demonstra&#xE7;&#xE3;o de como ele explicou tratamento de exce&#xE7;&#xF5;es a outro colega aqui da empresa que estava com duvidas no entendimento do tratamento de exce&#xE7;&#xF5;es e precisava de ajuda para fazer a sua prova.&lt;/p&gt;
&lt;p&gt;Segue abaixo o exemplo de c&#xF3;digo (com permiss&#xE3;o do autor, e algumas corre&#xE7;&#xF5;es para nao divulgar nomes, of course&amp;#8230;):&lt;/p&gt;
&lt;p&gt;Pessoa individuo = new Pessoa(&amp;#8221;individuo&amp;#8221;);&lt;/p&gt;
&lt;p&gt;Pessoa gostosa = new Pessoa(&amp;#8221;uma gbr gostosa&amp;#8221;);&lt;/p&gt;
&lt;p&gt;Cerveja cerveja = new Cerveja(&amp;#8221;Skol&amp;#8221;); //vari&#xE1;vel antes do try que precisei&lt;/p&gt;
&lt;p&gt;individuo.tomaBreja(cerveja);&lt;/p&gt;
&lt;p&gt;try {&lt;/p&gt;
&lt;p&gt;individuo.pegaNaCintura(gostosa);&lt;/p&gt;
&lt;p&gt;individuo.pegaNoPeitinho(gostosa);&lt;/p&gt;
&lt;p&gt;individuo.chupaPeitinho(gostosa);&lt;/p&gt;
&lt;p&gt;Camisinha johnson = new Camisinha(&amp;#8221;Lubrificada&amp;#8221;); // precisei de uma vari&#xE1;vel local aqui.&lt;/p&gt;
&lt;p&gt;individuo.poeCamisinha(johnson); // usei a vari&#xE1;vel local aqui.&lt;/p&gt;
&lt;p&gt;individuo.comeASafada(gostosa);&lt;/p&gt;
&lt;p&gt;}&lt;br /&gt;
catch(TapaNaCaraException e) {&lt;br /&gt;
System.out.println(&amp;#8221;a gbr tentou te dar um tapa na cara e te deu uma escroteada&amp;#8221;);&lt;br /&gt;
}&lt;br /&gt;
catch(TeEmpurrouException e) {&lt;br /&gt;
System.out.println(&amp;#8221;a gbr te empurrou e te deu uma escroteada&amp;#8221;);&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;catch(TeEmpurrouException e) {&lt;br /&gt;
System.out.println(&amp;#8221;a gbr te deu uma escroteada&amp;#8221;);&lt;br /&gt;
}&lt;br /&gt;
finally {&lt;br /&gt;
individuo.vaiEmbora();&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;Quer exemplo mais did&#xE1;tico que esse??? Depois dessa o individuo nunca mais vai se esquecer como fazer uso correto do try/catch&amp;#8230;. &lt;img src='http://jumpi.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;Meus sinceros agradecimentos ao &lt;a href="http://marcioandreyoliveira.blogspot.com/" &gt;tio&lt;/a&gt; por contribuir com esse post tao instrutivo e ao mesmo tempo engra&#xE7;ado!!! &lt;img src='http://jumpi.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;Sorry for Advogato&amp;#8217;s people by wrote this in portuguese, I need wrote this and any questions about I wrote, send me a message and I explain &lt;img src='http://jumpi.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /&gt;&lt;/p&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <pubDate>Wed, 3 Oct 2007 21:09:53 GMT</pubDate>
      <title>The Excel 2007 Bug</title>
      <link>http://www.advogato.org/person/acs/diary.html?start=39</link>
      <guid>http://jumpi.wordpress.com/2007/10/03/the-excel-2007-bug/</guid>
      <description>&lt;div class='snap_preview'&gt;&lt;p&gt;About the bug that affected Excel 2007, I think that is very hard to work with floating point calculations and approximation is very complex and find a problem in logic of this is a true nightmare!!!!&lt;/p&gt;
&lt;p&gt;The summary of problem: Excel 2007 store six floating point numbers using binary representation between 65534.99999999995 and 65535, and dont store six between 65535.99999999995 and 65536 and this numbers are the cause of this problem.&lt;/p&gt;
&lt;p&gt;I work with arbitrary precision in my scientific intiation and using libraries for care of this part for me, because of difficulties that involve the manipulation of calculate numbers that need arbitrary precision. IMHO, working with type of development demands very attention and very pacience.&lt;/p&gt;
&lt;p&gt;The two links have a good explanation of this problem&amp;#8230; Its a good lecture!!!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://scienceblogs.com/goodmath/2007/10/the_excel_65535100000_bug.php" &gt; The Excel Bug Explanation by Good Math, Bad Math Blog &lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blog.wolfram.com/2007/09/arithmetic_is_hardto_get_right.html" &gt; The Excel Bug Explanation for Mathematica Developers Blog &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;See ya people and have a good fun!!!&lt;/p&gt;
&lt;p&gt;In play: Emerson, Lake and Palmer - Works (Black) Vol. 1 - 07: The Enemy God&lt;/p&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <pubDate>Sun, 16 Sep 2007 00:05:47 GMT</pubDate>
      <title>Really, Code::Blocks Rocks!!!</title>
      <link>http://www.advogato.org/person/acs/diary.html?start=38</link>
      <guid>http://jumpi.wordpress.com/2007/09/15/really-codeblocks-rocks/</guid>
      <description>&lt;div class='snap_preview'&gt;&lt;p&gt;Really, Code::Blocks Rocks!!!&lt;/p&gt;
&lt;p&gt;Well&amp;#8230; after a long time I post here again, because of this IDE&amp;#8230; yeah&amp;#8230; a many time that I try to test it and after tests of my friend &lt;a href="http://marcioandreyoliveira.blogspot.com/" &gt;Marcio&lt;/a&gt; that use and talk about the tool I decided test too. I&amp;#8217;m very surprise with this IDE, the installation is very easy and work with this IDE is very easy too&amp;#8230; I install it in my VM with WinXP and I testing the OpenGL app and it works very fine&amp;#8230; The OpenGL app works fine in my VM too, in considerable time&amp;#8230; I decided now use the Code::Blocks for developing my personal project at this time!!! Its convinced me!!! &lt;img src='http://jumpi.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;Today, after reading some pages of the Programming Challenges Book I&amp;#8217;m trying applying some memoization and dynamic programming techniques for solve some problems in &lt;a href="http://www.spoj.pl" &gt;SPOJs&lt;/a&gt; and &lt;a href="http://acm.uva.es/p/" &gt;UVA&amp;#8217;s online-judge&lt;/a&gt; of life. Its a very utility tool for solving many problems. But I need more training for good application of this. I like this&amp;#8230; &lt;img src='http://jumpi.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;In play: Bruce Dickinson - The Very Best Of (CD 1) - 02: Tattooed Millionarie&lt;/p&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 28 Aug 2007 18:12:04 GMT</pubDate>
      <title>The Practice of Perl</title>
      <link>http://www.advogato.org/person/acs/diary.html?start=37</link>
      <guid>http://jumpi.wordpress.com/2007/08/09/the-practice-of-perl/</guid>
      <description>&lt;div class='snap_preview'&gt;&lt;p&gt;Well.. a sugestive title for an post, but I decide for this title because of Perl is one of my prefer programming languages, my &amp;#8220;swiss army knife&amp;#8221;&amp;#8230; and dont first time that I using perl for solving my problem&amp;#8230; ehehehhehehehhee&amp;#8230;&lt;/p&gt;
&lt;p&gt;But why I talking about perl here??? Because of one problem, for more exactly, the problem 5 of Project Euler (http://projecteuler.net/), a site with mathematical problems that resolve with the use of algorithms. The problem 5 it follows below:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is the smallest number that is evenly divisible by all of the numbers from 1 to 20?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I trying resolve this using C, but I dont have an simple compiler in my work machine,because in my opinion, Visual C is much complex for this task&amp;#8230; (some of my friends dont think it&amp;#8230;)&lt;/p&gt;
&lt;p&gt;But I think&amp;#8230; I have perl interpretor in my machine and write this program in perl dont much harder and I starting the port of C for Perl and write this piece of code for solving my problem:&lt;/p&gt;
&lt;p&gt;for ( my $n = 20; 1; $n++ ) {&lt;br /&gt;
for ( 1..20 ) {&lt;br /&gt;
if ( $n % $_ ) {&lt;br /&gt;
last;&lt;br /&gt;
}&lt;br /&gt;
if ( $_ == 20 ) {&lt;br /&gt;
die $n;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
Well&amp;#8230; is an idiot program, extremaly simple but I have the answer of problem with this&amp;#8230; dont consider the execution time, &amp;#8220;only&amp;#8221; 20 min of the pure brute force for answering the problem&amp;#8230; ehehhehehehehehhehe&amp;#8230;&lt;/p&gt;
&lt;p&gt;And perl with your practical syntax save my world one more time!!!! &lt;img src='http://jumpi.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;In Play: Gorguts - The Erosion of Sanity - 04: Orphans of Sickness&lt;/p&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 28 Aug 2007 18:12:04 GMT</pubDate>
      <title>Tutorial Basico de GDB</title>
      <link>http://www.advogato.org/person/acs/diary.html?start=36</link>
      <guid>http://jumpi.wordpress.com/2007/07/24/tutorial-basico-de-gdb/</guid>
      <description>&lt;div class='snap_preview'&gt;&lt;p&gt;O post de hoje sera dedicado a esse famoso debugger do mundo UNIX e que pode ser utilizado em ambiente windows tambem, sim&amp;#8230; vamos tratar do GNU Debugger ou GDB, software muito util para fazer analises e encontrar erros decorrentes em nossos programas.&lt;/p&gt;
&lt;p&gt;Claro que a inten&#xE7;&#xE3;o desse post &#xE9; ser bem basico, passando apenas informa&#xE7;&#xF5;es necessarias para a inicia&#xE7;&#xE3;o, caso alguem queira saber mais, existe uma documentacao excelente, um exemplo disso e o livro &lt;a href="http://sourceware.org/gdb/current/onlinedocs/gdb_toc.html" &gt;Debugging with GDB&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Entao chega de conversa e vamos ao que interessa..&lt;/p&gt;
&lt;p&gt;Primeiro caso: Compilando para debugar&lt;/p&gt;
&lt;p&gt;Iremos utilizar como exemplo, um programa que conta de 0 a 10, como queremos debugar esse programa, para isso utilizamos o seguinte comando&lt;/p&gt;
&lt;p&gt;[jumpi@painkiller testes]$ gcc -g contador.c&lt;/p&gt;
&lt;p&gt;Com esse comando geramos um arquivo de saida (a.out), que vai conter as informa&#xE7;&#xF5;es necessarias para o debugging&lt;/p&gt;
&lt;p&gt;Agora e hora de debugar, na linha de comando digitamos:&lt;/p&gt;
&lt;p&gt;[jumpi@painkiller testes]$ gdb a.out&lt;br /&gt;
GNU gdb Red Hat Linux (6.5-15.fc6rh)&lt;br /&gt;
Copyright (C) 2006 Free Software Foundation, Inc.&lt;br /&gt;
GDB is free software, covered by the GNU General Public License, and you are&lt;br /&gt;
welcome to change it and/or distribute copies of it under certain conditions.&lt;br /&gt;
Type &amp;#8220;show copying&amp;#8221; to see the conditions.&lt;br /&gt;
There is absolutely no warranty for GDB.  Type &amp;#8220;show warranty&amp;#8221; for details.&lt;br /&gt;
This GDB was configured as &amp;#8220;i386-redhat-linux-gnu&amp;#8221;&amp;#8230;Using host libthread_db library &amp;#8220;/lib/libthread_db.so.1&amp;#8243;.&lt;/p&gt;
&lt;p&gt;(gdb)&lt;/p&gt;
&lt;p&gt;Com esse comando, entramos em modo de debugging e o gdb nos apresenta o prompt onde entramos com os comandos necessarios para o debugging.&lt;/p&gt;
&lt;p&gt;Hora de definir o breakpoint: no gdb, podemos utilizar numero de linha ou ate mesmo o nome da funcao na qual se deseja inserir o breakpoint, no nosso caso vamos definir um breakpoint na funcao main com o seguinte comando&lt;/p&gt;
&lt;p&gt;(gdb) break main&lt;br /&gt;
Breakpoint 1 at 0&amp;#215;8048395: file contador.c, line 7.&lt;br /&gt;
(gdb)&lt;/p&gt;
&lt;p&gt;E agora rodamos o programa dentro do debugger com o seguinte comando&lt;/p&gt;
&lt;p&gt;(gdb) run&lt;br /&gt;
Starting program: /home/jumpi/testes/a.out&lt;/p&gt;
&lt;p&gt;Breakpoint 1, main () at contador.c:7&lt;br /&gt;
7               for (i=0; i&amp;lt;=10; i++) {&lt;br /&gt;
(gdb)&lt;/p&gt;
&lt;p&gt;E ele para exatamente na linha onde foi inserido o breakpoint, no caso como definimos por funcao, entao ele para na primeira linha da funcao, numericamente falando, na linha 7&lt;/p&gt;
&lt;p&gt;Agora temos 2 comandos que podemos utilizar para verificar as informacoes, step e next, no caso, step vai fazendo passo a passo, ou seja, linha por linha e o next &#xE9; utilizado quando desejo passar por subrotinas, no nosso caso vamos utilizar o step e ver o que acontece&lt;/p&gt;
&lt;p&gt;(gdb) step&lt;br /&gt;
8                       printf(&amp;#8221;Numero :%d\n&amp;#8221;,i);&lt;br /&gt;
(gdb) step&lt;br /&gt;
Numero :0&lt;br /&gt;
7               for (i=0; i&amp;lt;=10; i++) {&lt;br /&gt;
(gdb) step&lt;br /&gt;
8                       printf(&amp;#8221;Numero :%d\n&amp;#8221;,i);&lt;br /&gt;
(gdb) step&lt;br /&gt;
Numero :1&lt;/p&gt;
&lt;p&gt;Ele vai executando cada passo da funcao solicitada, como estamos dentro de um laco, ele executa o laco ate o seu termino.&lt;/p&gt;
&lt;p&gt;Suponha que eu quero verificar o valor da variavel no momento, nesse caso como eu possuo apenas a variavel i, vamos imprimir o seu valor, eu posso utilizar o comando print ou display da seguinte maneira&lt;/p&gt;
&lt;p&gt;(gdb) print i&lt;br /&gt;
$1 = 4&lt;br /&gt;
(gdb) display i&lt;br /&gt;
1: i = 4&lt;br /&gt;
(gdb)&lt;/p&gt;
&lt;p&gt;No caso, com print ele mostra a variavel temporaria que armazena o resultado e com display ele mostra a variavel definida pelo usuario no codigo.&lt;/p&gt;
&lt;p&gt;Podemos setar tambem o valor das variaveis com o comando set variable da seguinte maneira&lt;/p&gt;
&lt;p&gt;(gdb) set variable i=20&lt;br /&gt;
(gdb) display i&lt;br /&gt;
2: i = 20&lt;br /&gt;
(gdb)&lt;/p&gt;
&lt;p&gt;Segundo caso: Utilizando o gdb para analisar coredumps&lt;/p&gt;
&lt;p&gt;Coredumps sao arquivos que contem a informacao sobre um determinado erro gerado quando um programa e executado e utilizando o gdb podemos descobrir qual a anomalia do nosso programa&lt;/p&gt;
&lt;p&gt;[jumpi@painkiller testes]$ gcc -g contador.c&lt;/p&gt;
&lt;p&gt;[jumpi@painkiller testes]$ ./a.out&lt;br /&gt;
Numero :(null)&lt;br /&gt;
Segmentation fault (core dumped)&lt;br /&gt;
[jumpi@painkiller testes]$&lt;/p&gt;
&lt;p&gt;Isso significa que o programa gerou um erro e um coredump foi criado, quando verificamos o conteudo do diretorio procurando por core&lt;/p&gt;
&lt;p&gt;[jumpi@painkiller testes]$ ls core*&lt;br /&gt;
core.6180&lt;br /&gt;
[jumpi@painkiller testes]$&lt;/p&gt;
&lt;p&gt;Verificamos que o core foi criado, agora vamos utiliza-lo para servir como base de informacao para o nosso debugging no gdb&lt;/p&gt;
&lt;p&gt;[jumpi@painkiller testes]$ gdb a.out core.6180&lt;br /&gt;
GNU gdb Red Hat Linux (6.5-15.fc6rh)&lt;br /&gt;
Copyright (C) 2006 Free Software Foundation, Inc.&lt;br /&gt;
GDB is free software, covered by the GNU General Public License, and you are&lt;br /&gt;
welcome to change it and/or distribute copies of it under certain conditions.&lt;br /&gt;
Type &amp;#8220;show copying&amp;#8221; to see the conditions.&lt;br /&gt;
There is absolutely no warranty for GDB.  Type &amp;#8220;show warranty&amp;#8221; for details.&lt;br /&gt;
This GDB was configured as &amp;#8220;i386-redhat-linux-gnu&amp;#8221;&amp;#8230;Using host libthread_db library &amp;#8220;/lib/libthread_db.so.1&amp;#8243;.&lt;/p&gt;
&lt;p&gt;warning: Can&amp;#8217;t read pathname for load map: Input/output error.&lt;br /&gt;
Reading symbols from /lib/libc.so.6&amp;#8230;done.&lt;br /&gt;
Loaded symbols for /lib/libc.so.6&lt;br /&gt;
Reading symbols from /lib/ld-linux.so.2&amp;#8230;done.&lt;br /&gt;
Loaded symbols for /lib/ld-linux.so.2&lt;br /&gt;
Core was generated by `./a.out&amp;#8217;.&lt;br /&gt;
Program terminated with signal 11, Segmentation fault.&lt;br /&gt;
#0  0&amp;#215;0077bf9b in strlen () from /lib/libc.so.6&lt;br /&gt;
(gdb)&lt;/p&gt;
&lt;p&gt;Carregado o gdb com o arquivo de core, podemos utilizar o comando backtrace ou bt, para verificarmos as chamadas de fun&#xE7;&#xF5;es e separarmos por frames&lt;/p&gt;
&lt;p&gt;(gdb) bt&lt;br /&gt;
#0  0&amp;#215;0077bf9b in strlen () from /lib/libc.so.6&lt;br /&gt;
#1  0&amp;#215;0074e1ff in vfprintf () from /lib/libc.so.6&lt;br /&gt;
#2  0&amp;#215;007539c3 in printf () from /lib/libc.so.6&lt;br /&gt;
#3  0&amp;#215;080483b1 in main () at contador.c:7&lt;br /&gt;
(gdb)&lt;/p&gt;
&lt;p&gt;Bem, no nosso caso eu verifico que tem um problema no frame 3, na linha 7, entao o comando frame seguido do numero do frame para verificar o que ocorre&lt;/p&gt;
&lt;p&gt;(gdb) frame 3&lt;br /&gt;
#3  0&amp;#215;080483b1 in main () at contador.c:7&lt;br /&gt;
7                       printf(&amp;#8221;Numero :%s\n&amp;#8221;,i);&lt;br /&gt;
(gdb)&lt;/p&gt;
&lt;p&gt;E assim verifico que por descuido, coloquei um %s, onde era um %i&amp;#8230; &lt;img src='http://jumpi.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;Bem, utilizei apenas uma pequena fra&#xE7;&#xE3;o para demonstrar do que o GDB &#xE9; capaz, ele pode ser muito util para uma serie de outras coisas, sem contar que existem muitos outros detalhes mais especificos que nao foram abordados aqui nesse post, porem espero que seja util a voc&#xEA;s tambem&amp;#8230; Ate a proxima!!! &lt;img src='http://jumpi.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt;&lt;br /&gt;
&lt;br /&gt;No play: Cacophony - Speed Metal Symphony - 06: Desert Island&lt;/p&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 28 Aug 2007 18:12:04 GMT</pubDate>
      <title>Yes, nos tambem temos int 3!!!! (tecnicas antidebugging no linux)</title>
      <link>http://www.advogato.org/person/acs/diary.html?start=35</link>
      <guid>http://jumpi.wordpress.com/2007/07/21/yes-nos-tambem-temos-int-3-tecnicas-antidebugging-no-linux/</guid>
      <description>&lt;div class='snap_preview'&gt;&lt;p&gt;Well, seguindo o embalo do meu amigo de trabalho, a.k.a. &lt;a href="http://www.caloni.com.br/blog" &gt;Vandeco&lt;/a&gt;, tambem tentarei mostrar aqui uma tecnica antidebugging, so que em um S.O. diferente&amp;#8230; no nosso caso vamos fazer o teste no linux e vamos verificar que int 3 e usual, sim&amp;#8230; nao tenho duvidas, porem nao basta para livrar o nosso codigo do debugging alheio&amp;#8230;&lt;/p&gt;
&lt;p&gt;Tentarei demonstrar de forma resumida um exemplo de como burlar o debug do gdb&lt;/p&gt;
&lt;p&gt;Primeiro exemplo de codigo, introduzir um breakpoint falso&lt;/p&gt;
&lt;p&gt;#include &amp;lt;signal.h&amp;gt;&lt;/p&gt;
&lt;p&gt;void handler (int signo) {&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;int main() {&lt;/p&gt;
&lt;p&gt;signal(handler, SIGTRAP);&lt;br /&gt;
__asm__(&amp;#8221;int3&amp;#8243;);&lt;br /&gt;
printf(&amp;#8221;Ola!!&amp;#8221;);&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;[jumpi@painkiller testes]$ gcc -g debug-teste.c&lt;br /&gt;
[jumpi@painkiller testes]$&lt;/p&gt;
&lt;p&gt;[jumpi@painkiller testes]$ gdb&lt;br /&gt;
GNU gdb Red Hat Linux (6.5-15.fc6rh)&lt;br /&gt;
Copyright (C) 2006 Free Software Foundation, Inc.&lt;br /&gt;
GDB is free software, covered by the GNU General Public License, and you are&lt;br /&gt;
welcome to change it and/or distribute copies of it under certain conditions.&lt;br /&gt;
Type &amp;#8220;show copying&amp;#8221; to see the conditions.&lt;br /&gt;
There is absolutely no warranty for GDB.  Type &amp;#8220;show warranty&amp;#8221; for details.&lt;br /&gt;
This GDB was configured as &amp;#8220;i386-redhat-linux-gnu&amp;#8221;.&lt;br /&gt;
(gdb) file a.out&lt;br /&gt;
Reading symbols from /home/jumpi/testes/a.out&amp;#8230;done.&lt;br /&gt;
Using host libthread_db library &amp;#8220;/lib/libthread_db.so.1&amp;#8243;.&lt;br /&gt;
(gdb) run&lt;br /&gt;
Starting program: /home/jumpi/testes/a.out&lt;/p&gt;
&lt;p&gt;Program received signal SIGTRAP, Trace/breakpoint trap.&lt;br /&gt;
main () at debug-teste.c:11&lt;br /&gt;
11              printf(&amp;#8221;Ola!!&amp;#8221;);&lt;br /&gt;
(gdb) c&lt;br /&gt;
Continuing.&lt;br /&gt;
Ola!!&lt;br /&gt;
Program exited with code 05.&lt;br /&gt;
(gdb) quit&lt;/p&gt;
&lt;p&gt;Ou seja, com isso for&#xE7;amos um int 3 no codigo como se fosse um breakpoint e com o SIGTRAP capturamos o sinal, que faz com que ele pense que havia um breakpoint onde na verdade nao havia, simples e interessante&amp;#8230; &lt;img src='http://jumpi.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;Enfim, existem diversas outras tecnicas de debugging e antidebugging, como fazer controle da ptrace(), usando file descriptor ou ate mesmo por identificacao de processos. Porem fica para uma proxima ocasiao&amp;#8230; &lt;img src='http://jumpi.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;No play: Arsis - United in Regret - 04: I Speak Through Shadows&lt;/p&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 28 Aug 2007 18:12:04 GMT</pubDate>
      <title>&#x201C;f(problemas(ci&#xEA;ncia da computa&#xE7;&#xE3;o(matem&#xE1;tica)))&#x201D;</title>
      <link>http://www.advogato.org/person/acs/diary.html?start=34</link>
      <guid>http://jumpi.wordpress.com/2007/07/20/fproblemasciencia-da-computacaomatematica/</guid>
      <description>&lt;div class='snap_preview'&gt;&lt;p&gt;Enfim&amp;#8230; vai entender o que se passa na cabe&#xE7;a de um cara que me escreve um livro que para ser Cientista da Computa&#xE7;&#xE3;o, voc&#xEA; nao precisa saber de matematica??? Juro que eu queria entende-lo&amp;#8230; porem, em minha humilde opiniao, isso se torna incompreensivel&amp;#8230; Classificaria isto como uma blasfemia&amp;#8230; Penso eu que a Ciencia da Computa&#xE7;&#xE3;o esta amarrada a matematica assim como a fisica, ou talvez ate mais, devido ao fato de Ciencia da Computa&#xE7;&#xE3;o na minha opiniao, ser uma ramifica&#xE7;&#xE3;o da matematica, pois ela engloba grande parte dos conceitos matematicos, como a logica matematica (utilizada na logica booleana), teoria dos numeros (utilizada no campo da criptografia e na inteligencia artificial), teoria dos grafos (utilizada em estruturas de dados e nos algoritimos de busca), enfim, tudo na ciencia da computa&#xE7;&#xE3;o engloba matematica, ou seja, por tras dos trabalhos computacionais existem modelos e metodos matematicos. Bem, sempre tive em mente que na verdade ser um cientista da computa&#xE7;&#xE3;o &#xE9; ser um matematico tambem, pois o mesmo utiliza-se de matematica para dar enfase aos seus trabalhos, o que na minha visao sempre entendi como matematica aplicada. E devido a essa vis&#xE3;o, foi que escolhi ser Bacharel em Matematica, pois sempre pensei que a matematica me ajudaria a abrir os olhos para a area da Ciencia Computacional, e n&#xE3;o me arrependo, pois tem sido bem util para o meu entendimento do funcionamento das coisas, afinal de contas eu consigo entender como funciona um SGBD gracas a teoria dos conjuntos ou um processo de &lt;a href="http://pt.wikipedia.org/wiki/Raytracing" &gt;raytracing&lt;/a&gt; gracas aos vetores. e n&#xE3;o acaba por aqui&amp;#8230; eu poderia dar n-exemplos aqui sobre a aplicacao da matematica na ciencia da computa&#xE7;&#xE3;o&amp;#8230; mas enfim&amp;#8230; para quem estiver curioso em ler sobre a materia na qual gerou esse post e que me trouxe tanta revolta&amp;#8230; segue o link&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.itwire.com.au/content/view/13339/53/" &gt;http://www.itwire.com.au/content/view/13339/53/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abra&#xE7;os e ate a proxima!!!!&lt;/p&gt;
&lt;p&gt;No play: Symphony X - Paradise Lost - 09: The Sacrifice&lt;/p&gt;
&lt;/div&gt;</description>
    </item>
  </channel>
</rss>
