<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>CØdeZØne! mudou-se para leandrosilva.com.br</title>
	<atom:link href="http://codezone.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://codezone.wordpress.com</link>
	<description>Este blog agora está em leandrosilva.com.br</description>
	<lastBuildDate>Sat, 22 Nov 2008 16:34:53 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='codezone.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/e86e88165b3ab7a2ec44a330d37e92ee?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>CØdeZØne! mudou-se para leandrosilva.com.br</title>
		<link>http://codezone.wordpress.com</link>
	</image>
			<item>
		<title>Meu último post aqui!</title>
		<link>http://codezone.wordpress.com/2008/11/17/meu-ultimo-post-aqui/</link>
		<comments>http://codezone.wordpress.com/2008/11/17/meu-ultimo-post-aqui/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 20:15:29 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[uncategorized]]></category>

		<guid isPermaLink="false">http://codezone.wordpress.com/?p=389</guid>
		<description><![CDATA[Sim, este é meu último post aqui. Mas não o último da minha vida!  
O que acontece é que acabei de me mudar para casa própria:
leandrosilva.com.br
Espero ver todos vocês por lá!
Ah! Não se esqueçam de atualizar o RSS.
Update (18-11-08): Eu tinha feito a besteira de colocar o blog no /codezone, mas depois voltei à [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=389&subd=codezone&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Sim, este é meu último post aqui. Mas não o último da minha vida! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>O que acontece é que acabei de me mudar para casa própria:</p>
<p style="text-align:left;"><strong><a title="leandrosilva.com.br" href="http://leandrosilva.com.br" target="_self">leandrosilva.com.br</a></strong></p>
<p>Espero ver todos vocês por lá!</p>
<p><em>Ah! Não se esqueçam de atualizar o RSS.</em></p>
<p><strong>Update (18-11-08):</strong> Eu tinha feito a besteira de colocar o blog no /codezone, mas depois voltei à sanidade e resolvi botar na raíz do domínio mesmo. I&#8217;m sorry!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codezone.wordpress.com/389/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codezone.wordpress.com/389/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codezone.wordpress.com/389/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codezone.wordpress.com/389/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codezone.wordpress.com/389/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codezone.wordpress.com/389/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codezone.wordpress.com/389/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codezone.wordpress.com/389/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codezone.wordpress.com/389/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codezone.wordpress.com/389/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=389&subd=codezone&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codezone.wordpress.com/2008/11/17/meu-ultimo-post-aqui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/594c3226fba09eb232dc16cddaa1077b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">leandro</media:title>
		</media:content>
	</item>
		<item>
		<title>Sim, programação funcional é relevante hoje</title>
		<link>http://codezone.wordpress.com/2008/11/03/sim-programacao-funcional-e-relevante-hoje/</link>
		<comments>http://codezone.wordpress.com/2008/11/03/sim-programacao-funcional-e-relevante-hoje/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 20:22:53 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[functional programming]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://codezone.wordpress.com/?p=324</guid>
		<description><![CDATA[[Novo endereço: leandrosilva.com.br.]
Há um tempo tenho me interessado pelo paradigma de programação funcional, estudado e tentado aplicar vez ou outra algum de seus conceitos que faça sentido no domínio do problema que estou tentando resolver.
Com base nisso, resolvi escrever este post para dizer que, sim, programação funcional é relevante hoje, tanto quanto foi ontem &#8211; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=324&subd=codezone&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>[Novo endereço: <a href="http://leandrosilva.com.br" target="_self">leandrosilva.com.br</a>.]</strong></p>
<p>Há um tempo tenho me interessado pelo paradigma de programação funcional, estudado e tentado aplicar vez ou outra algum de seus conceitos que faça sentido no domínio do problema que estou tentando resolver.</p>
<p>Com base nisso, resolvi escrever este post para dizer que, sim, programação funcional é relevante hoje, tanto quanto foi ontem &#8211; se não um pouco mais; e também dar uma <strong>visão geral</strong> sobre alguns de seus conceitos.</p>
<p><strong>O que é programação funcional?</strong></p>
<p>Segundo a definição de Paul Hudak em seu paper de 1989, &#8220;Conception, evolution, and application of functional programming languages&#8221;:</p>
<blockquote><p><em><a href="http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_funcional" target="_blank">Programação funcional</a> é um paradigma de programação que trata a computação como uma avaliação de funções matemáticas e que evita estados ou dados mutáveis. Ela enfatiza a aplicação de funções, em contraste da programação imperativa, que enfatiza mudanças no estado do programa.</em></p></blockquote>
<p>Assim, praticar programação funcional consiste em definir funções e usar o computador como um avaliador de expressões. Aliás, uma característica predominante da programação funcional é que o significado de uma expressão é o seu valor, e o papel do computador é obtê-lo através da avaliação da expressão. Por exemplo, considere a expressão <strong>2 + 3</strong>. Qual é o seu significado? <strong>5</strong>. Agora, considere a expressão <strong>(2 x 2) + 1</strong>. Qual é o seu significado? <strong>5</strong>. Ou seja, a avaliação nos faz concluir que as duas expressões significam a mesma coisa.</p>
<p>Outra característica básica e fundamental em linguagens funcionais é que funções são valores de primeira importancia, podendo estas serem usadas como parâmetro ou retorno de outras funções. Além do que, funções também são avaliadas como qualquer outra expressão matemática.</p>
<p><strong>Aplicação do paradigma funcional</strong></p>
<p>Programação funcional, obviamente, pode ser aplicada para resolver problemas de domínio matemático, mas não somente isso. Absolutamente!</p>
<p>Atualmente, muito do <em>revival</em> &#8211; se é que posso dizer assim &#8211; do paradigma de programação funcional se deve a aplicação dela no campo da concorrência, do processamento paralelo. Isso por conta de sua natureza <em>stateless</em>. É nesse campo que estão os grandes méritos de <a href="http://pt.wikipedia.org/wiki/Erlang_(linguagem_de_programa%C3%A7%C3%A3o)" target="_blank">Erlang</a>,  e a motivação de <a href="http://pt.wikipedia.org/wiki/F_Sharp" target="_blank">F#</a> e <a href="http://pt.wikipedia.org/wiki/Scala_(linguagem_de_programa%C3%A7%C3%A3o)" target="_blank">Scala</a>. (Se bem que <a href="http://pt.wikipedia.org/wiki/Scala_(linguagem_de_programa%C3%A7%C3%A3o)" target="_blank">Scala</a> pode, sim, trabalhar com estados. Quando a <a href="http://pt.wikipedia.org/wiki/F_Sharp" target="_blank">F#</a>, eu não sei. Mas isso não importa muito agora.)</p>
<p>Há pouco ouvi falar também sobre uma bibliotéca fantástica para construção de interfaces gráficas escrita em <a href="http://pt.wikipedia.org/wiki/Haskell_(linguagem_de_programa%C3%A7%C3%A3o)" target="_blank">Haskell</a>, mas sinceramente nunca testei. (Na verdade, nunca escrevi uma só linha de código em <a href="http://pt.wikipedia.org/wiki/Haskell_(linguagem_de_programa%C3%A7%C3%A3o)" target="_blank">Haskell</a>.)</p>
<p><strong>Exemplos de linguagens funcionais</strong></p>
<p>Existe <span style="text-decoration:line-through;">uma pancada</span> uma grande número de linguagens funcionais, talvez muito mais do que você possa imaginar. Apenas para citar algumas: <a href="http://pt.wikipedia.org/wiki/Lisp" target="_blank">Lisp</a>, <a href="http://pt.wikipedia.org/wiki/Haskell_(linguagem_de_programa%C3%A7%C3%A3o)" target="_blank">Haskell</a>, <a href="http://pt.wikipedia.org/wiki/Scheme" target="_blank">Scheme</a>, <a href="http://pt.wikipedia.org/wiki/XSLT" target="_blank">XSTL</a>, <a href="http://pt.wikipedia.org/wiki/OCaml" target="_blank">OCaml</a>, <a href="http://pt.wikipedia.org/wiki/Erlang_(linguagem_de_programa%C3%A7%C3%A3o)" target="_blank">Erlang</a>, <a href="http://pt.wikipedia.org/wiki/F_Sharp" target="_blank">F#</a> e <a href="http://pt.wikipedia.org/wiki/Scala_(linguagem_de_programa%C3%A7%C3%A3o)" target="_blank">Scala</a>. Mas, acredite, há muitas outras!</p>
<p><strong>Conceitos funcionais em código</strong></p>
<p>Como esse é um blog de programação, e estamos falando de programação, quero explicar rapidamente alguns conceitos de programação funcional exemplificando em código.</p>
<p><em>1- Lambda Calculus</em></p>
<p>O principal fundamento da programação funcional é a teoria <a href="http://en.wikipedia.org/wiki/Lambda_calculus" target="_blank">Lambda Calculus</a>, cuja qual podemos encontrar a seguinte <a href="http://en.wikipedia.org/wiki/Lambda_calculus" target="_blank">definição na Wikipedia</a>:</p>
<blockquote><p>In <a title="Mathematical logic" href="http://en.wikipedia.org/wiki/Mathematical_logic" target="_blank">mathematical logic</a> and <a title="Computer science" href="http://en.wikipedia.org/wiki/Computer_science" target="_blank">computer science</a>, <strong>lambda calculus</strong>, also written as <strong>λ-calculus</strong>, is a <a title="Formal system" href="http://en.wikipedia.org/wiki/Formal_system">formal system</a> designed to investigate <a title="Function (mathematics)" href="http://en.wikipedia.org/wiki/Function_%28mathematics%29" target="_blank">function</a> definition, function application and <a title="Recursion" href="http://en.wikipedia.org/wiki/Recursion" target="_blank">recursion</a>. It was introduced by <a title="Alonzo Church" href="http://en.wikipedia.org/wiki/Alonzo_Church" target="_blank">Alonzo Church</a> and <a title="Stephen Cole Kleene" href="http://en.wikipedia.org/wiki/Stephen_Cole_Kleene" target="_blank">Stephen Cole Kleene</a> in the 1930s as part of an investigation into the <a title="Foundations of mathematics" href="http://en.wikipedia.org/wiki/Foundations_of_mathematics" target="_blank">foundations of mathematics</a>, but has emerged as a useful tool in the investigation of problems in <a title="Recursion theory" href="http://en.wikipedia.org/wiki/Recursion_theory" target="_blank">computability or recursion theory</a>, and forms the basis of a paradigm of computer programming called <a title="Functional programming" href="http://en.wikipedia.org/wiki/Functional_programming" target="_blank">functional programming</a>.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Lambda_calculus#cite_note-0" target="_blank">[1]</a></sup></p>
<p>The lambda calculus can be thought of as an idealized, minimalistic programming language. It is capable of expressing any <a title="Algorithm" href="http://en.wikipedia.org/wiki/Algorithm" target="_blank">algorithm</a>, and it is this fact that makes the model of <a title="Functional programming" href="http://en.wikipedia.org/wiki/Functional_programming" target="_blank">functional programming</a> an important one. Functional programs are stateless and deal exclusively with functions that accept and return data (including other functions), but they produce no side effects in &#8217;state&#8217; and thus make no alterations to incoming data. Modern functional languages, building on the lambda calculus, include <a title="Erlang (programming language)" href="http://en.wikipedia.org/wiki/Erlang_%28programming_language%29" target="_blank">Erlang</a>, <a title="Haskell (programming language)" href="http://en.wikipedia.org/wiki/Haskell_%28programming_language%29" target="_blank">Haskell</a>, <a title="Lisp (programming language)" href="http://en.wikipedia.org/wiki/Lisp_%28programming_language%29" target="_blank">Lisp</a>, <a title="ML (programming language)" href="http://en.wikipedia.org/wiki/ML_%28programming_language%29" target="_blank">ML</a>, <a title="Scheme (programming language)" href="http://en.wikipedia.org/wiki/Scheme_%28programming_language%29" target="_blank">Scheme</a>, <a title="Scala (programming language)" href="http://en.wikipedia.org/wiki/Scala_%28programming_language%29" target="_blank">Scala</a> and <a title="F Sharp (programming language)" href="http://en.wikipedia.org/wiki/F_Sharp_%28programming_language%29" target="_blank">F#</a>.</p></blockquote>
<p>Entendemos então que, em programação funcional, funções são abordadas no puro sentido matemático. A <a href="http://pt.wikipedia.org/wiki/Lisp" target="_blank">definição da Wikipedia</a> para <a title="Lisp (programming language)" href="http://en.wikipedia.org/wiki/Lisp_%28programming_language%29" target="_blank">Lisp</a> diz:</p>
<blockquote><p><strong>Lisp</strong> é uma família de linguagens de programação concebida por <a title="John McCarthy" href="http://pt.wikipedia.org/wiki/John_McCarthy" target="_blank">John McCarthy</a> em <a title="1958" href="http://pt.wikipedia.org/wiki/1958" target="_blank">1958</a>. Num célebre artigo, ele mostra que é possível usar exclusivamente funções matemáticas como estruturas de dados elementares (o que é possível a partir do momento em que há um mecanismo formal para manipular funções: o <a title="Cálculo Lambda" href="http://pt.wikipedia.org/wiki/C%C3%A1lculo_Lambda" target="_blank">Cálculo Lambda</a> de <a title="Alonzo Church" href="http://pt.wikipedia.org/wiki/Alonzo_Church" target="_blank">Alonzo Church</a>).</p></blockquote>
<p>Via de regra, toda linguagem funcional oferece algum tipo de construção para cálculo lambda.</p>
<p>Por exemplo, considere a seguinte função matemática:</p>
<blockquote><p><strong>f(x) = x + 30</strong></p></blockquote>
<p>Em <strong><a title="Scala (programming language)" href="http://en.wikipedia.org/wiki/Scala_%28programming_language%29" target="_blank">Scala</a></strong>, ela poderia ser escrita assim:</p>
<pre class="brush: java;">
val f = (x: Int) =&gt; x + 30
f(5)   // 35
</pre>
<p>Ou mesmo em <a href="http://en.wikipedia.org/wiki/Ruby_(programming_language)" target="_blank"><strong>Ruby</strong></a>, que apesar de não ser funcional, oferece suporte a algumas abordagens desse paradigma, poderia ser escrito assim:</p>
<pre class="brush: ruby;">
f = lambda {|x| x + 30}
f[10]   # 40
</pre>
<p><em>2- High-order function</em></p>
<p><a href="http://en.wikipedia.org/wiki/Functional_programming#Higher-order_functions" target="_blank">High-order functions</a> são funções que podem receber outras funções como parâmetro, e também retorná-las como resultado. A estas damos o nome de <a href="http://en.wikipedia.org/wiki/First-class_function" target="_blank">função de primeira classe</a>. Essa é uma característica extremamente importante em linguagens funcionais. Vejamos um exemplo:</p>
<pre class="brush: java;">
def escolhido(a: Int, b: Int): Int = if (a &gt;= b) a else b

def imprEscolhido(f: (Int, Int) =&gt; Int, a: Int, b: Int) =
  println(&quot;O escolhido foi: &quot; + f(a, b))

...

// usando a função escolhido
imprEscolhido(escolhido, 1, 5)   // 5

// usando uma função anônima
imprEscolhido((x: Int, y: Int) =&gt; x, 12, 2)   // 12
</pre>
<p><em>2- Currying</em></p>
<p><a href="http://pt.wikipedia.org/wiki/Currying" target="_blank">Currying</a> é a técnica de transformar uma função que recebe multiplos argumentos de maneira que ela possa ser chamada como uma cadeia de funções, com apenas um argumento por vez. Na prática, o que acontece é que a cada chamada a uma função da cadeia, uma nova função é retornada.</p>
<p>Vamos ver um exemplo que pode ser encontrado na integra no site <a href="http://www.scala-lang.org/node/135" target="_blank">A Tour of Scala</a>:</p>
<pre class="brush: java;">
// cria uma função para filtrar uma lista
def filter(xs: List[Int], p: Int =&gt; Boolean): List[Int] =
  if (xs.isEmpty) xs
  else if (p(xs.head)) xs.head :: filter(xs.tail, p)
  else filter(xs.tail, p)

// cria uma função &quot;módulo&quot; para ser usada no filtro,
// por isso ela retorna &quot;true&quot; ou &quot;false&quot;
def modN(n: Int)(x: Int) = ((x % n) == 0)

// cria uma lista com números de 1 a 8
val nums = List(1, 2, 3, 4, 5, 6, 7, 8 )

// imprime aplicando módulo em 2
println(filter(nums, modN(2)))   // List(2,4,6,8)

// imprime aplicando módulo em 3
println(filter(nums, modN(3)))   // List(3,6)
</pre>
<p>Se você não está familiarizado com código <a title="Scala (programming language)" href="http://en.wikipedia.org/wiki/Scala_%28programming_language%29" target="_blank">Scala</a>, não se preocupe, à primeira vista parece meio esquisito mesmo. Por isso, não se atente aos detalhes. O importante aqui é você entender que a saída desse programa depende:</p>
<p>1º) Do número que é aplicado ao <em>primeiro argumento</em> (n) da função <strong>modN</strong>, quanto ela é chamada e o seu resultado passado como argumento à função <strong>filter</strong> &#8211; pois o seu resultado será uma &#8220;nova função&#8221; que receberá apenas o <em>segundo argumento</em> (x) que ela definiu;</p>
<p>2º) Do número que a função <strong>filter</strong> aplica ao <em>único argumento</em> que a função <strong>p</strong> (que é resultado da chamada a <strong>modN</strong>) aceita.</p>
<p>Ou seja, é como se a função <strong>modN</strong> tivesse seus dois argumentos parcialmente informados em dois momentos diferentes, tornando a sua chamada muito mais simples e flexível. Essa é a idéia da cadeia.</p>
<p>Vamos um ver outro exemplo, ainda em <a title="Scala (programming language)" href="http://en.wikipedia.org/wiki/Scala_%28programming_language%29" target="_blank">Scala</a>, talvez um pouco mais simples:</p>
<pre class="brush: java;">
// cria uma função que retorna &quot;outra função&quot; que recebe
// apenas o segundo argumento desta
def idadeAceita(m: Int)(i: Int): Boolean = i &lt;= m

// ao ser chamada, a função idadeAceita retorna uma &quot;nova
// função&quot; que dei o nome de aplicarIdade e recebe apenas
// o segundo argumento definido por idadeAceita
val aplicarIdade: (Int) =&gt; Boolean = idadeAceita(18)

...

aplicarIdade(14)   // true
aplicarIdade(40)   // false
</pre>
<p>Acho que esse exemplo fala por si e dispensa maiores explicações. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Não é interessante como os diversos conceitos abordados até aqui vão se completando?</p>
<p><strong>Que mais?<br />
</strong></p>
<p>Bem, tudo que eu disse nesso post <span style="text-decoration:line-through;">gigante</span> é apenas uma visão geral. Talvez a pontinha do iceberg. Então espero que ele te motive a estudar um pouco mais sobre programação funcional. (O texto está repleto de links para outros texto interessantes.)</p>
<p>Valeu!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codezone.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codezone.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codezone.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codezone.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codezone.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codezone.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codezone.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codezone.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codezone.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codezone.wordpress.com/324/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=324&subd=codezone&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codezone.wordpress.com/2008/11/03/sim-programacao-funcional-e-relevante-hoje/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/594c3226fba09eb232dc16cddaa1077b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">leandro</media:title>
		</media:content>
	</item>
		<item>
		<title>Como está seu marketing pessoal?</title>
		<link>http://codezone.wordpress.com/2008/10/31/como-esta-seu-marketing-pessoal/</link>
		<comments>http://codezone.wordpress.com/2008/10/31/como-esta-seu-marketing-pessoal/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 22:40:59 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[dicas]]></category>

		<guid isPermaLink="false">http://codezone.wordpress.com/?p=319</guid>
		<description><![CDATA[[Novo endereço: leandrosilva.com.br.]
Bruno Pereira escreveu dois posts (esse e esse) muito relevantes sobre marketing pessoal, em especial, para desenvolvedores de software, que eu não poderia deixar de citar e sugerir aqui em meu blog.
Ler esses posts me fez lembrar do keynote de Chad Fowler na Rails Summit sobre tornar-se uma pessoa brilhante. Facinante!
É isso ai, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=319&subd=codezone&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>[Novo endereço: <a href="http://leandrosilva.com.br" target="_self">leandrosilva.com.br</a>.]</strong></p>
<p><a href="http://brunopereira.org" target="_blank">Bruno Pereira</a> escreveu dois posts (<a href="http://brunopereira.org/2008/10/28/marketing-pessoal-para-desenvolvedores-motivacao-para-comeca" target="_blank">esse</a> e <a href="http://brunopereira.org/2008/10/29/marketing-pessoal-para-desenvolvedores-dicas" target="_blank">esse</a>) muito relevantes sobre marketing pessoal, em especial, para desenvolvedores de software, que eu não poderia deixar de citar e sugerir aqui em meu blog.</p>
<p>Ler esses posts me fez lembrar do keynote de <a href="http://chadfowler.com" target="_blank">Chad Fowler</a> na Rails Summit sobre tornar-se uma pessoa brilhante. Facinante!</p>
<p>É isso ai, fica aqui a dica&#8230;</p>
<p><em>Seja brilhante!!!</em></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codezone.wordpress.com/319/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codezone.wordpress.com/319/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codezone.wordpress.com/319/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codezone.wordpress.com/319/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codezone.wordpress.com/319/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codezone.wordpress.com/319/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codezone.wordpress.com/319/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codezone.wordpress.com/319/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codezone.wordpress.com/319/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codezone.wordpress.com/319/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=319&subd=codezone&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codezone.wordpress.com/2008/10/31/como-esta-seu-marketing-pessoal/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/594c3226fba09eb232dc16cddaa1077b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">leandro</media:title>
		</media:content>
	</item>
		<item>
		<title>Acho que Ola Bini não dorme!</title>
		<link>http://codezone.wordpress.com/2008/10/29/acho-que-ola-bini-nao-dorme/</link>
		<comments>http://codezone.wordpress.com/2008/10/29/acho-que-ola-bini-nao-dorme/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 16:13:23 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[ioke]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://codezone.wordpress.com/?p=302</guid>
		<description><![CDATA[[Novo endereço: leandrosilva.com.br.]
Ola Bini publicou hoje em seu blog um roadmap para sua mais nova criação, a linguagem de programação Ioke.

Ioke é, nas palavras do próprio Ola Bini, uma lingagem de programação fortemente tipada, orientada a objetos baseada em protótipos, bastante inspirada em Io,  SmallTalk, Self, Ruby e Lisp (especialmente Common Lisp). Atualmente, ela [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=302&subd=codezone&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>[Novo endereço: <a href="http://leandrosilva.com.br" target="_self">leandrosilva.com.br</a>.]</strong></p>
<p><a href="http://olabini.com" target="_blank">Ola Bini</a> publicou hoje em seu blog um <a href="http://olabini.com/blog/2008/10/ioke-0-roadmap" target="_blank">roadmap</a> para sua mais nova criação, a linguagem de programação <a href="http://olabini.com/blog/tag/ioke/" target="_blank">Ioke</a>.</p>
<p><a href="http://ioke.kenai.com" target="_blank"><img class="alignnone" src="http://asset-3.kenai.com/attachments/images/project/ioke.png?4708" alt="" width="150" height="150" /></a></p>
<p><strong>Ioke</strong> é, nas palavras do próprio Ola Bini, uma lingagem de programação fortemente tipada, orientada a objetos baseada em <a href="http://en.wikipedia.org/wiki/Prototype-based_programming" target="_blank">protótipos</a>, bastante inspirada em <a href="http://en.wikipedia.org/wiki/Io_programming_language" target="_blank">Io</a>,  <a href="http://en.wikipedia.org/wiki/Smalltalk" target="_blank">SmallTalk</a>, <a href="http://en.wikipedia.org/wiki/Self_(programming_language)" target="_blank">Self</a>, <a href="http://en.wikipedia.org/wiki/Ruby_programming_language" target="_blank">Ruby</a> e <a href="http://en.wikipedia.org/wiki/Lisp_programming_language" target="_blank">Lisp</a> (especialmente <a href="http://en.wikipedia.org/wiki/Common_Lisp" target="_blank">Common Lisp</a>). Atualmente, ela está implementada em <a href="http://en.wikipedia.org/wiki/Java_programming_language" target="_blank">Java</a> e rodar unicamente na <a href="http://en.wikipedia.org/wiki/Java_Virtual_Machine" target="_blank">JVM</a>.</p>
<p>Nesse roadmap, Ola Bini anuncia que a primeira release será chamada <strong>0</strong> (sim, <strong>zero</strong>), e deverá ser publicada até no máximo o Natal.</p>
<p>Se você quiser acompanhar a evolução de Ioke, você pode <a href="http://github.com/olabini/ioke/tree/master" target="_blank">segui-la</a> no <a href="http://github.com" target="_blank">GitHub</a>.</p>
<p>Agora fica a pergunta: Esse Ola Bini não dorme, não?</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codezone.wordpress.com/302/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codezone.wordpress.com/302/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codezone.wordpress.com/302/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codezone.wordpress.com/302/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codezone.wordpress.com/302/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codezone.wordpress.com/302/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codezone.wordpress.com/302/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codezone.wordpress.com/302/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codezone.wordpress.com/302/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codezone.wordpress.com/302/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=302&subd=codezone&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codezone.wordpress.com/2008/10/29/acho-que-ola-bini-nao-dorme/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/594c3226fba09eb232dc16cddaa1077b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">leandro</media:title>
		</media:content>

		<media:content url="http://asset-3.kenai.com/attachments/images/project/ioke.png?4708" medium="image" />
	</item>
		<item>
		<title>O que achei do workshop de DDD da Caelum?</title>
		<link>http://codezone.wordpress.com/2008/10/28/o-que-achei-do-workshop-de-ddd-da-caelum/</link>
		<comments>http://codezone.wordpress.com/2008/10/28/o-que-achei-do-workshop-de-ddd-da-caelum/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 00:32:31 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[domain-driven design]]></category>
		<category><![CDATA[eventos]]></category>

		<guid isPermaLink="false">http://codezone.wordpress.com/?p=281</guid>
		<description><![CDATA[[Novo endereço: leandrosilva.com.br.]
Hoje participei do workshop de Domain-Driven Design que a Caelum promoveu junto com Phillip Calçado, consultor da ThoughtWorks.
O workshop foi excelente. Muito dinâmico, com conteúdo bastante abrangente, e muita mão-na-massa. Aliás, não tivemos nem computador. Fizemos tudo em cartões pautados, CRC-like, no melhor estilo free style!!!
Tenho praticado DDD há aproximadamente 1 ano e [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=281&subd=codezone&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>[Novo endereço: <a href="http://leandrosilva.com.br" target="_self">leandrosilva.com.br</a>.]</strong></p>
<p>Hoje participei do workshop de <a href="http://www.domaindrivendesign.org/" target="_blank">Domain-Driven Design</a> que a <a href="http://www.caelum.com.br" target="_blank">Caelum</a> promoveu junto com <a href="http://blog.fragmental.com.br" target="_blank">Phillip Calçado</a>, consultor da <a href="http://www.thoughtworks.com/" target="_blank">ThoughtWorks</a>.</p>
<p>O workshop foi excelente. Muito dinâmico, com conteúdo bastante abrangente, e muita mão-na-massa. Aliás, não tivemos nem computador. Fizemos tudo em cartões pautados, CRC-like, no melhor estilo <em>free style!!!</em></p>
<p>Tenho praticado DDD há aproximadamente 1 ano e meio, na CVC Turismo, e confesso que ainda carregava comigo algumas dúvidas, tanto de abordagem quanto de implementação. Porque DDD não se aprende do dia pra noite, nem decorando um conjunto de padrões. DDD é muito mais do que isso. DDD é, fundamentalmente, sobre &#8220;melhorar a comunicação entre os envolvidos num projeto&#8221;. Incrível!</p>
<p>Com certeza esse é um treinamento que recomendo de mais. <em>(Principalmente àqueles que vivem atormentados por DAOs e repositórios&#8230;. kkk)</em></p>
<p>Brincadeiras à parte, se você é um desenvolvedor sério, preocupado em produzir software de qualidade, que realmente atenda às expectativas do cliente, você precisa participar desse workshop.</p>
<p>Mais uma vez, ao Phillip e à Caelum, parabéns!</p>
<p><em>(Ah! Paulôôô, o coffe-break, como sempre, fantástico!)</em></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codezone.wordpress.com/281/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codezone.wordpress.com/281/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codezone.wordpress.com/281/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codezone.wordpress.com/281/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codezone.wordpress.com/281/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codezone.wordpress.com/281/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codezone.wordpress.com/281/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codezone.wordpress.com/281/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codezone.wordpress.com/281/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codezone.wordpress.com/281/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=281&subd=codezone&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codezone.wordpress.com/2008/10/28/o-que-achei-do-workshop-de-ddd-da-caelum/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/594c3226fba09eb232dc16cddaa1077b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">leandro</media:title>
		</media:content>
	</item>
		<item>
		<title>Rails Summit, o melhor evento que já participei!</title>
		<link>http://codezone.wordpress.com/2008/10/20/rails-summit-o-melhor-evento-que-ja-participei/</link>
		<comments>http://codezone.wordpress.com/2008/10/20/rails-summit-o-melhor-evento-que-ja-participei/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 15:28:26 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[eventos]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://codezone.wordpress.com/?p=274</guid>
		<description><![CDATA[[Novo endereço: leandrosilva.com.br.]
A Rails Summit Latin America foi o melhor evento de tecnologia que já participei até hoje. Simplesmente, excelente!
O meu destaque fica para as apresentações de Chad Fowler e Obie Fernandez.
Quem estiver interessado, aqui tem uma trilha legal do evento.
Se você perdeu esse ano, pel&#8217;amor, não perca ano que vem não!
Parabéns ao Akita e [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=274&subd=codezone&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>[Novo endereço: <a href="http://leandrosilva.com.br" target="_self">leandrosilva.com.br</a>.]</strong></p>
<p>A <strong>Rails Summit Latin America</strong> foi o melhor evento de tecnologia que já participei até hoje. Simplesmente, excelente!</p>
<p>O meu destaque fica para as apresentações de <a href="http://chadfowler.com/" target="_blank">Chad Fowler</a> e <a href="http://obiefernandez.com/" target="_blank">Obie Fernandez</a>.</p>
<p>Quem estiver interessado, <a href="http://blogblogs.com.br/livestream/name/railssummit" target="_blank">aqui</a> tem uma trilha legal do evento.</p>
<p>Se você perdeu esse ano, pel&#8217;amor, não perca ano que vem não!</p>
<p>Parabéns ao <a href="http://www.akitaonrails.com" target="_blank">Akita</a> e à Locaweb&#8230;</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codezone.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codezone.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codezone.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codezone.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codezone.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codezone.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codezone.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codezone.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codezone.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codezone.wordpress.com/274/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=274&subd=codezone&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codezone.wordpress.com/2008/10/20/rails-summit-o-melhor-evento-que-ja-participei/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/594c3226fba09eb232dc16cddaa1077b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">leandro</media:title>
		</media:content>
	</item>
		<item>
		<title>Intuitividade de Ruby</title>
		<link>http://codezone.wordpress.com/2008/10/20/intuitividade-de-ruby/</link>
		<comments>http://codezone.wordpress.com/2008/10/20/intuitividade-de-ruby/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 15:19:00 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://codezone.wordpress.com/?p=258</guid>
		<description><![CDATA[[Novo endereço: leandrosilva.com.br.]
Uma das coisas que mais gosto em Ruby é que ela é uma linguagem muito expressiva e intuitiva.
Quer ver um exemplo? Pois bem&#8230;
Suponha que você queira saber se uma determinada classe é filha de outra, como você faria?

irb(main):001:0&#62; Integer &#60; Fixnum
=&#62; false

Logo, Integer não é filha de Fixnum. Mas, e o contrario, será [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=258&subd=codezone&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>[Novo endereço: <a href="http://leandrosilva.com.br" target="_self">leandrosilva.com.br</a>.]</strong></p>
<p>Uma das coisas que mais gosto em Ruby é que ela é uma linguagem muito expressiva e intuitiva.</p>
<p>Quer ver um exemplo? Pois bem&#8230;</p>
<p>Suponha que você queira saber se uma determinada classe é filha de outra, como você faria?</p>
<pre class="brush: ruby;">
irb(main):001:0&gt; Integer &lt; Fixnum
=&gt; false
</pre>
<p>Logo, Integer não é filha de Fixnum. Mas, e o contrario, será que é verdadeiro?</p>
<pre class="brush: ruby;">
irb(main):002:0&gt; Integer &gt; Fixnum
=&gt; true
</pre>
<p>Sim, Fixnum é filha de Integer.</p>
<p>Percebeu a intuitividade? Ainda não? Vamos lá então&#8230;</p>
<p>Para dizer que uma classe é filha de outra, em Ruby, usamos o operador &lt; (menor), pois a classe filha passará a ocupar um lugar hieraquicamente abaixo de sua classe mãe.</p>
<pre class="brush: ruby;">
class Filha &lt; Mae
  ...
end
</pre>
<p>Assim, nada mais intuitivo do que testar a posição hierarquica de uma classe em relação a outra usando os operadores &gt; (maior) e &lt; (menor).</p>
<p>E agora, que tal? É ou não é intuitiva?</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codezone.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codezone.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codezone.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codezone.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codezone.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codezone.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codezone.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codezone.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codezone.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codezone.wordpress.com/258/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=258&subd=codezone&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codezone.wordpress.com/2008/10/20/intuitividade-de-ruby/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/594c3226fba09eb232dc16cddaa1077b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">leandro</media:title>
		</media:content>
	</item>
		<item>
		<title>Django agora compatível com Jython</title>
		<link>http://codezone.wordpress.com/2008/09/06/django-agora-compativel-com-jython/</link>
		<comments>http://codezone.wordpress.com/2008/09/06/django-agora-compativel-com-jython/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 14:36:31 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jython]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://codezone.wordpress.com/?p=248</guid>
		<description><![CDATA[[Novo endereço: leandrosilva.com.br.]
Saiu do forno a versão 1.0 do Django e trouxe consigo uma boa notícia: Foram removidas todas as incompatibilidades com Jython, o interpretador Python 100% implementado em Java, para rodar Python na Java Virtual Machine.
Porém, isso só é verdade para  Jython 2.5, que ainda não está disponível para produção. Na verdade, o time [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=248&subd=codezone&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>[Novo endereço: <a href="http://leandrosilva.com.br" target="_self">leandrosilva.com.br</a>.]</strong></p>
<p>Saiu do forno a <a href="http://www.artima.com/forums/flat.jsp?forum=270&amp;thread=237969" target="_blank">versão 1.0 do Django</a> e trouxe consigo uma boa notícia: Foram removidas todas as incompatibilidades com <a href="http://www.jython.org/Project/" target="_blank">Jython</a>, o interpretador <a href="http://pt.wikipedia.org/wiki/Python" target="_blank">Python</a> 100% implementado em <a href="http://pt.wikipedia.org/wiki/Java_(linguagem_de_programa%C3%A7%C3%A3o)" target="_blank">Java</a>, para rodar Python na Java Virtual Machine.</p>
<p>Porém, isso só é verdade para  Jython 2.5, que ainda não está disponível para produção. Na verdade, o time de desenvolvimento ainda está para lançar uma versão alpha (2.5a1).</p>
<p><em>Quen, quen, quen, quennnnnn&#8230;</em></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codezone.wordpress.com/248/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codezone.wordpress.com/248/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codezone.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codezone.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codezone.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codezone.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codezone.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codezone.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codezone.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codezone.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codezone.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codezone.wordpress.com/248/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=248&subd=codezone&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codezone.wordpress.com/2008/09/06/django-agora-compativel-com-jython/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/594c3226fba09eb232dc16cddaa1077b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">leandro</media:title>
		</media:content>
	</item>
		<item>
		<title>Saia da zona de conforto!</title>
		<link>http://codezone.wordpress.com/2008/09/02/saia-da-zona-de-conforto/</link>
		<comments>http://codezone.wordpress.com/2008/09/02/saia-da-zona-de-conforto/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 17:10:49 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[dicas]]></category>

		<guid isPermaLink="false">http://codezone.wordpress.com/?p=240</guid>
		<description><![CDATA[[Novo endereço: leandrosilva.com.br.]
Carlos Brando, figura tarimbada do mundo Ruby on Rails, postou hoje um texto de conteúdo fantástico: Por que o salário dele é maior do que o meu?
Um trecho que achei d+ foi este aqui:
&#8220;E quando você descobrir que pessoas mais novas ou que pareçam menos experientes que você tem um salário maior que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=240&subd=codezone&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>[Novo endereço: <a href="http://leandrosilva.com.br" target="_self">leandrosilva.com.br</a>.]</strong></p>
<p><a href="http://www.nomedojogo.com/sobre/" target="_blank">Carlos Brando</a>, figura tarimbada do mundo Ruby on Rails, postou hoje um texto de conteúdo fantástico: <a href="http://www.nomedojogo.com/2008/09/02/por-que-o-salario-dele-e-maior-do-que-o-meu/" target="_blank">Por que o salário dele é maior do que o meu?</a></p>
<p>Um trecho que achei d+ foi este aqui:</p>
<blockquote><p><em>&#8220;E quando você descobrir que pessoas mais novas ou que pareçam menos experientes que você tem um salário maior que o seu, nem pense em ficar chateado ou resmungar, você recebe tanto quanto ele, a diferença é que boa parte do seu dinheiro é gasto no seu comodismo.&#8221;</em></p></blockquote>
<p>Leitura mais que obrigatória!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codezone.wordpress.com/240/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codezone.wordpress.com/240/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codezone.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codezone.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codezone.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codezone.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codezone.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codezone.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codezone.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codezone.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codezone.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codezone.wordpress.com/240/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=240&subd=codezone&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codezone.wordpress.com/2008/09/02/saia-da-zona-de-conforto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/594c3226fba09eb232dc16cddaa1077b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">leandro</media:title>
		</media:content>
	</item>
		<item>
		<title>Mais diversão com Scala</title>
		<link>http://codezone.wordpress.com/2008/08/31/mais-diversao-com-scala/</link>
		<comments>http://codezone.wordpress.com/2008/08/31/mais-diversao-com-scala/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 03:31:21 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://codezone.wordpress.com/?p=225</guid>
		<description><![CDATA[[Novo endereço: leandrosilva.com.br.]
Uma das coisas que mais tenho estudado ultimamente é a integração entre linguagens de programação &#8211; principalmente com Java -, de maneira a extrair o melhor de cada uma delas, o mais transparentemente possível. Scala, tal como JRuby, tem me proporcionado isso de maneira fantástica.
Scala tem total integração com Java, uma de suas [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=225&subd=codezone&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>[Novo endereço: <a href="http://leandrosilva.com.br" target="_self">leandrosilva.com.br</a>.]</strong></p>
<p>Uma das coisas que mais tenho estudado ultimamente é a integração entre linguagens de programação &#8211; principalmente com <a href="http://java.sun.com/" target="_blank">Java</a> -, de maneira a extrair o melhor de cada uma delas, o mais transparentemente possível. <a href="http://www.scala-lang.org" target="_blank">Scala</a>, tal como <a href="http://www.jruby.org/" target="_blank">JRuby</a>, tem me proporcionado isso de maneira fantástica.</p>
<p>Scala tem total integração com Java, uma de suas plataforma host (a outra é o <a href="http://msdn.microsoft.com/en-us/netframework/default.aspx" target="_blank">Microsoft .Net Framework</a>). Assim, pode-se usar classes e interfaces de bibliotecas Java de forma natural. Vejamos um exemplo bem simples:</p>
<pre class="brush: java;">

import java.util.{Date, Locale}
import java.text.SimpleDateFormat

object ExibeDataFormatada {
  def main(args: Array[String]) {
    val now = new Date
    val formatter = new SimpleDateFormat(
      &quot;EEEE, dd 'de' MMMM 'de' yyyy&quot;)

    // método com apenas um parâmetro podem ser invocados
    // com sintaxe infix
    println(formatter format now)
  }
}
</pre>
<p>Este código, certamente, é bem familiar para qualquer programador Java. O que ele faz é:</p>
<p>1. Importar as classes <em>Date</em> e <em>Locale</em> do pacote <em>java.util</em>, bem como a classe <em>SimpleDateFormat</em> do pacote <em>java.text</em>;<br />
2. Criar um objeto <em>ExibeDataFormatada</em>, que é um pequeno aplicativo Scala, e definir um método <em>main</em>, dentro do qual o aplicativo executará;<br />
3. Criar dois <strong>val</strong>&#8217;s (valores imutáveis): <em>now</em> para a data atual do sistema, e <em>formatter</em> para formatar nossa data atual;<br />
4. Invocar o método <em>format</em> do objeto <em>formatter</em>, passando-lhe como parâmetro <em>now</em>, que é a data atual.</p>
<p><em>(Se quiser rodar esse código, <a href="http://codezone.wordpress.com/2008/08/27/um-pouco-de-diversao-com-scala/">veja este post</a>.</em>)</p>
<p>Você deve ter notado que Scala trabalha com classes Java de maneira totalmente natural. Na verdade, muitas classes Scala fazem <em>wrap</em> de classes Java e as melhoram &#8211; como as classes com prefixo <em>Rich</em>.</p>
<p>Este foi um exemplo muito simples mesmo, mas creio que já deu para você ver que coisas muito sofisticadas também podem ser feitas com a mesma naturalidade.</p>
<p>Acredito que a integração entre linhagens é o que pode alavancar muitos projetos de requisitos complexos e totalmente heterogêneos. Porque sempre há algo que se pode fazer melhor e mais barato em uma linguagem do que em outra. Só é preciso tomar cuidado para não acabar criando uma Torre de Babel.</p>
<p>E você, o que pensa disso?</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codezone.wordpress.com/225/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codezone.wordpress.com/225/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codezone.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codezone.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codezone.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codezone.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codezone.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codezone.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codezone.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codezone.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codezone.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codezone.wordpress.com/225/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&blog=2545221&post=225&subd=codezone&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codezone.wordpress.com/2008/08/31/mais-diversao-com-scala/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/594c3226fba09eb232dc16cddaa1077b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">leandro</media:title>
		</media:content>
	</item>
	</channel>
</rss>