<?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>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='codezone.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>CØdeZØne! mudou-se para leandrosilva.com.br</title>
		<link>http://codezone.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://codezone.wordpress.com/osd.xml" title="CØdeZØne! mudou-se para leandrosilva.com.br" />
	<atom:link rel='hub' href='http://codezone.wordpress.com/?pushpress=hub'/>
		<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 &#8230; <a href="http://codezone.wordpress.com/2008/11/17/meu-ultimo-post-aqui/">Continue lendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&amp;blog=2545221&amp;post=389&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sim, este é meu último post aqui. Mas não o último da minha vida! <img src='http://s0.wp.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>
<br />  <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/gofacebook/codezone.wordpress.com/389/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/codezone.wordpress.com/389/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/codezone.wordpress.com/389/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/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&amp;blog=2545221&amp;post=389&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></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 &#8230; <a href="http://codezone.wordpress.com/2008/11/03/sim-programacao-funcional-e-relevante-hoje/">Continue lendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&amp;blog=2545221&amp;post=324&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<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 &#8216;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>
<p><pre class="brush: java;">
val f = (x: Int) =&gt; x + 30
f(5)   // 35
</pre></p>
<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>
<p><pre class="brush: ruby;">
f = lambda {|x| x + 30}
f[10]   # 40
</pre></p>
<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>
<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>
<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>
<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>
<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>
<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>
<p>Acho que esse exemplo fala por si e dispensa maiores explicações. <img src='http://s0.wp.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>
<br />  <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/gofacebook/codezone.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/codezone.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/codezone.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/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&amp;blog=2545221&amp;post=324&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></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 &#8230; <a href="http://codezone.wordpress.com/2008/10/31/como-esta-seu-marketing-pessoal/">Continue lendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&amp;blog=2545221&amp;post=319&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<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>
<br />  <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/gofacebook/codezone.wordpress.com/319/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/codezone.wordpress.com/319/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/codezone.wordpress.com/319/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/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&amp;blog=2545221&amp;post=319&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></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 &#8230; <a href="http://codezone.wordpress.com/2008/10/29/acho-que-ola-bini-nao-dorme/">Continue lendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&amp;blog=2545221&amp;post=302&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<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>
<br />  <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/gofacebook/codezone.wordpress.com/302/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/codezone.wordpress.com/302/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/codezone.wordpress.com/302/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/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&amp;blog=2545221&amp;post=302&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></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 &#8230; <a href="http://codezone.wordpress.com/2008/10/28/o-que-achei-do-workshop-de-ddd-da-caelum/">Continue lendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&amp;blog=2545221&amp;post=281&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<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>
<br />  <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/gofacebook/codezone.wordpress.com/281/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/codezone.wordpress.com/281/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/codezone.wordpress.com/281/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/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&amp;blog=2545221&amp;post=281&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></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 &#8230; <a href="http://codezone.wordpress.com/2008/10/20/rails-summit-o-melhor-evento-que-ja-participei/">Continue lendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&amp;blog=2545221&amp;post=274&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<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>
<br />  <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/gofacebook/codezone.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/codezone.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/codezone.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/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&amp;blog=2545221&amp;post=274&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></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, &#8230; <a href="http://codezone.wordpress.com/2008/10/20/intuitividade-de-ruby/">Continue lendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&amp;blog=2545221&amp;post=258&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<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>
<p><pre class="brush: ruby;">
irb(main):001:0&gt; Integer &lt; Fixnum
=&gt; false
</pre></p>
<p>Logo, Integer não é filha de Fixnum. Mas, e o contrario, será que é verdadeiro?</p>
<p><pre class="brush: ruby;">
irb(main):002:0&gt; Integer &gt; Fixnum
=&gt; true
</pre></p>
<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>
<p><pre class="brush: ruby;">
class Filha &lt; Mae
  ...
end
</pre></p>
<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>
<br />  <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/gofacebook/codezone.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/codezone.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/codezone.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/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&amp;blog=2545221&amp;post=258&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></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 &#8230; <a href="http://codezone.wordpress.com/2008/09/06/django-agora-compativel-com-jython/">Continue lendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&amp;blog=2545221&amp;post=248&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<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>
<br /><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/gofacebook/codezone.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/codezone.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/codezone.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/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&amp;blog=2545221&amp;post=248&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></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 &#8230; <a href="http://codezone.wordpress.com/2008/09/02/saia-da-zona-de-conforto/">Continue lendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&amp;blog=2545221&amp;post=240&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<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>
<br /><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/gofacebook/codezone.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/codezone.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/codezone.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/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&amp;blog=2545221&amp;post=240&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></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 &#8230; <a href="http://codezone.wordpress.com/2008/08/31/mais-diversao-com-scala/">Continue lendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codezone.wordpress.com&amp;blog=2545221&amp;post=225&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<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>
<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>
<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>&#8216;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>
<br /><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/gofacebook/codezone.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/codezone.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/codezone.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/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&amp;blog=2545221&amp;post=225&amp;subd=codezone&amp;ref=&amp;feed=1" width="1" height="1" />]]></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>
