<?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/"
	>

<channel>
	<title>PauloMotta.pro &#187; Lua</title>
	<atom:link href="http://www.paulomotta.pro.br/tag/lua/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.paulomotta.pro.br</link>
	<description>&#34;Qualquer tecnologia suficientemente avançada é indistinguível da mágica&#34; - Arthur C. Clarke</description>
	<lastBuildDate>Tue, 10 Jan 2012 03:00:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Just in time com a linguagem Lua</title>
		<link>http://www.paulomotta.pro.br/2011/05/09/just-in-time-com-a-linguagem-lua/</link>
		<comments>http://www.paulomotta.pro.br/2011/05/09/just-in-time-com-a-linguagem-lua/#comments</comments>
		<pubDate>Mon, 09 May 2011 11:00:53 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Tendências]]></category>
		<category><![CDATA[JIT]]></category>
		<category><![CDATA[LINGUAGEM]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[LuaJIT]]></category>
		<category><![CDATA[PROGRAMAÇÃO]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=1334</guid>
		<description><![CDATA[Uma das tecnologias mais legais que eu já usei foi o just-in-time (JIT). Para quem já usou uma linguagem interpretada sabe que o que pode deixar grandes frustrações é o tempo de execução, por outro lado é muito mais prático de testar o programa porque você escreve o texto e executa sem necessidade de processos [...]]]></description>
			<content:encoded><![CDATA[<p>Uma das tecnologias mais legais que eu já usei foi o <em>just-in-time</em> (JIT). Para quem já usou uma linguagem interpretada sabe que o que pode deixar grandes frustrações é o tempo de execução, por outro lado é muito mais prático de testar o programa porque você escreve o texto e executa sem necessidade de processos de compilação que podem ser demorados.</p>
<p>Pois bem, andei experimentando a versão 2.0 beta do <a href="http://luajit.org/" target="_blank">LuaJIT</a> e fiquei impressionado, é realmente muito mais rápido, e o legal é que o seu programa Lua funciona igualzinho <img src='http://www.paulomotta.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>É claro que tem que ter algum problema não é? E neste caso o que acontece é que a linguagem <a href="http://www.lua.org" target="_blank">Lua</a> tradicional existe para um conjunto muito maior de plataformas do que o LuaJIT, mas porque isso acontece? Porque o JIT nada mais é do que um compilador embutido, ou seja, quando interpreta o seu programa ele gera o código executável da máquina e isso permite que a sua aplicação escrita em uma linguagem interpretada execute como um programa escrito em linguagem compilada.</p>
<p>Para que isso seja possível você precisa ter programado na máquina virtual a geração de código para as diversas máquinas que existem no mercado e isso, além de trabalhoso, não é muito simples de fazer e assim o processo de incluir novas plataformas leva mais tempo.</p>
<p>Mas se você usa Intel/AMD, ARM ou PPC/e500 então vale muito a pena experimentar, no meu caso eu tive que embutir a máquina LuaJIT no meu ambiente e isso precisou de um processo mais detalhado, mas nada que causasse sofrimento <img src='http://www.paulomotta.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  mas se você pretende usar uma aplicação diretamente na máquina Lua então basta chamar a máquina LuaJIT passando o seu programa e ficar impressionado.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2011/05/09/just-in-time-com-a-linguagem-lua/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>É do Brasil!! Linguagem Lua chegando ao Top10!</title>
		<link>http://www.paulomotta.pro.br/2011/04/28/e-do-brasil-linguagem-lua-chegando-ao-top10/</link>
		<comments>http://www.paulomotta.pro.br/2011/04/28/e-do-brasil-linguagem-lua-chegando-ao-top10/#comments</comments>
		<pubDate>Thu, 28 Apr 2011 14:29:49 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Curiosidades]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Tendências]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[LINGUAGEM]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[Netbeans]]></category>
		<category><![CDATA[PROGRAMAÇÃO]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=1331</guid>
		<description><![CDATA[Eu escrevi aqui há algum tempo sobre o índice TIOBE que acompanha o crescimento no uso de linguagens de programação no mundo todo. Pois bem, a linguagem Lua, muito usada pela comunidade de jogos inclusive por grandes estúdios subiu para a 12ª poisção agora em abril! E eu acho que ainda vai subir muito mais. [...]]]></description>
			<content:encoded><![CDATA[<p>Eu escrevi <a href="http://www.paulomotta.pro.br/2008/09/03/ranking-de-linguagens-de-programacao/" target="_blank">aqui</a> há algum tempo sobre o índice TIOBE que acompanha o crescimento no uso de linguagens de programação no mundo todo. Pois bem, a linguagem <a href="http://www.lua.org/" target="_blank">Lua</a>, muito usada pela comunidade de jogos inclusive por grandes estúdios subiu para a 12ª poisção agora em abril! E eu acho que ainda vai subir muito mais.</p>
<p>As linguagens interpretadas estão ganhando muito espaço e com o suporte de IDEs como Eclipse e Netbeans fica muito mais fácil de adotar uma dessas linguagens. O tutorial para instalar o suporte a Lua no Eclipse é bem simples, mas depois eu vou colocar aqui uns macetes para ajudar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2011/04/28/e-do-brasil-linguagem-lua-chegando-ao-top10/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tá difícil</title>
		<link>http://www.paulomotta.pro.br/2010/11/22/ta-dificil/</link>
		<comments>http://www.paulomotta.pro.br/2010/11/22/ta-dificil/#comments</comments>
		<pubDate>Mon, 22 Nov 2010 11:53:49 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Principal]]></category>
		<category><![CDATA[Ciências]]></category>
		<category><![CDATA[DISTRIBUIÇÃO]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[Pesquisa]]></category>
		<category><![CDATA[PROGRAMAÇÃO]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=1059</guid>
		<description><![CDATA[Estou trabalhando direto na tese e por isso está difícil de escrever aqui. Ontem eu consegui usar uma funcionalidade do Lua Socket para codificar uma função do lado cliente e enviar para o lado servidor, no servidor (que roda uma máquina Lua separada) ele reconstroi a função e executa. Pode parecer pouca coisa, mas é [...]]]></description>
			<content:encoded><![CDATA[<p>Estou trabalhando direto na tese e por isso está difícil de escrever aqui. Ontem eu consegui usar uma funcionalidade do Lua Socket para codificar uma função do lado cliente e enviar para o lado servidor, no servidor (que roda uma máquina Lua separada) ele reconstroi a função e executa. Pode parecer pouca coisa, mas é fundamental para o trabalho da tese <img src='http://www.paulomotta.pro.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  depois eu explico melhor.</p>
<p>Agora, para chegar nisso, suei muito!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2010/11/22/ta-dificil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>E o quad core finalmente prevaleceu&#8230;</title>
		<link>http://www.paulomotta.pro.br/2010/08/11/e-o-quad-core-finalmente-prevaleceu/</link>
		<comments>http://www.paulomotta.pro.br/2010/08/11/e-o-quad-core-finalmente-prevaleceu/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 13:29:34 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[PARALELISMO]]></category>
		<category><![CDATA[Pesquisa]]></category>
		<category><![CDATA[PROGRAMAÇÃO]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=749</guid>
		<description><![CDATA[Resolvi tomar outro rumo de teste. Parei com as multiplicações de matrizes e resolvi pegar uma tarefa que eu sei que consome muito processamento e que eu poderia deixar cada núcleo executando sozinho sem ficar interagindo com a thread de controle a cada passo. Eu já tinha um programa de teste que calculava todos os [...]]]></description>
			<content:encoded><![CDATA[<p>Resolvi tomar outro rumo de teste. Parei com as multiplicações de matrizes e resolvi pegar uma tarefa que eu sei que consome muito processamento e que eu poderia deixar cada núcleo executando sozinho sem ficar interagindo com a thread de controle a cada passo. Eu já tinha um programa de teste que calculava todos os números primos em uma faixa de 10000 números a partir de 99.999.999.000.001 (como se fala esse número?), o fato é que os números são tão grandes que a verificação de primalidade (saber se é ou não primo) toma muito tempo *para cada um dos números* do intervalo.</p>
<p>Pois bem, cada núcleo recebeu um conjunto de números para testar, sendo que o Turion X2 tem dois núcleos então o intervalo de 10000 números foi dividido em 2, e no Phenom X4 que tem quatro núcleos o mesmo intervalo foi dividido em 4. Somando a isso a diferença de clock, Turion 2.1 e Phenom 3.4, o resultado foi impressionante!</p>
<p>Lembrando que o problema era conseguir que o programa em Lua, interpretado, executasse mais rápido no Phenom do que no Turion, coisa que não estava acontecendo com o programa de multiplicação de matrizes, onde o Phenom estava 2x mais lento.</p>
<p>Neste caso, como o programa foi preparado para deixar cada núcleo executar sozinho sem intervenções é possível aproveitar todo o potencial do núcleo (e olha que eu desisti de usar a técnica de aumentar a prioridade dos processos em relação aos outros programas do sistema) então como o Phenom tem mais núcleos e tem um clock 1.3GHz maior que o Turion então a diferença é realmente muito grande. No final o programa ficou 8.2x mais rápido no Phenom.</p>
<p>Mas só consegui perceber esse resultado porque mudei a estratégia de teste para um programa que tinha menos dependência de dados e de controle.</p>
<blockquote><p>O que nós aprendemos hoje amiguinhos?</p>
<p>Quando você faz um programa paralelo tenha muito cuidado, o simples fato de aumentar o clock e a quantidade de núcleos *não* garante melhor desempenho. Isto porque o programa que você fez pode ter pequenas brechas que no processador mais rápido limitam o ganho por conta da quantidade comunicação ou sincronismo por exemplo. O controle por passo, como acontece na versão atual do meu programa de multiplicação de matrizes (ok vou mudar isso) sobrecarregou o processor com comunicações e mesmo sendo mais rápido e com mais núcleos, todo o desempenho foi sacrificado.</p></blockquote>
<p>Assim que eu fizer os novos testes de multiplicação de matrizes eu coloco aqui qual o detalhe que quebrou o desempenho.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2010/08/11/e-o-quad-core-finalmente-prevaleceu/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Experimentando as extensões de Lua</title>
		<link>http://www.paulomotta.pro.br/2010/06/16/experimentando-as-extensoes-de-lua/</link>
		<comments>http://www.paulomotta.pro.br/2010/06/16/experimentando-as-extensoes-de-lua/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 17:28:14 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[LINGUAGEM]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[PROGRAMAÇÃO]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=574</guid>
		<description><![CDATA[O interessante das linguagens de hoje é como permitem que o próprio usuário crie suas extensões ampliando a aplicabilidade da linguagem. Estou criando uma API feita em Lua para simplificar o acesso a uma biblioteca feita em C, de uma maneira geral C e Lua já se falam bem, mas você pode fornecer mais facilidades [...]]]></description>
			<content:encoded><![CDATA[<p>O interessante das linguagens de hoje é como permitem que o próprio usuário crie suas extensões ampliando a aplicabilidade da linguagem. Estou criando uma API feita em Lua para simplificar o acesso a uma biblioteca feita em C, de uma maneira geral C e Lua já se falam bem, mas você pode fornecer mais facilidades para o seu usuário.</p>
<p>O problema que eu sempre esbarro é ter umas ideias malucas para as quais eu não acho exemplos aí tenho que ficar experimentando até fazer funcionar. Vou colocar aqui depois um exemplo de como usar as metatables de Lua para criar seus próprios objetos. Já existe muito material espalhado na rede, mas estou tentando juntar muita coisa.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2010/06/16/experimentando-as-extensoes-de-lua/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

