<?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>Ronaldo Faria Lima</title>
	<atom:link href="http://www.ronaldolima.eti.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ronaldolima.eti.br</link>
	<description>Pensamentos, ideias, reflexões, especulações</description>
	<lastBuildDate>Mon, 20 Feb 2012 10:02:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>O uso racional de recursos</title>
		<link>http://www.ronaldolima.eti.br/2012/02/20/o-uso-racional-de-recursos/</link>
		<comments>http://www.ronaldolima.eti.br/2012/02/20/o-uso-racional-de-recursos/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 10:02:33 +0000</pubDate>
		<dc:creator>ronaldo</dc:creator>
				<category><![CDATA[Codexis]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Vida de Programador]]></category>

		<guid isPermaLink="false">http://www.ronaldolima.eti.br/?p=961</guid>
		<description><![CDATA[O uso racional de recursos só é possível se você conhece bem o sistema para o qual está programando. Conhecer bem o sistema não quer dizer que você precise entrar nos detalhes do kernel. Basta, para isso, entender quais são os recursos que estão disponíveis e como fazer para gerenciá-los. O uso de recursos em [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">O uso racional de recursos só é possível se você conhece bem o sistema para o qual está programando. Conhecer bem o sistema não quer dizer que você precise entrar nos detalhes do kernel. Basta, para isso, entender quais são os recursos que estão disponíveis e como fazer para gerenciá-los.</p>
<p style="text-align: justify;">O uso de recursos em computação exige mais do que o simples conhecimento da plataforma. Também exige conhecimentos específicos como algoritmos e estruturas de dados. Os algoritmos são essenciais para minimizar o uso de processamento e as estruturas de dados são essenciais para descrever a informação de maneira mínima e racional.</p>
<p style="text-align: justify;">Eu sempre bato nesta mesma tecla: algoritmos e estruturas de dados. Os estudantes de computação são levados a crer que é importante conhecer uma linguagem de programação em detrimento do conhecimento de algoritmos e estruturas de dados. Infelizmente, não poderiam estar mais enganados. Sem o bom conhecimento de algoritmos e estruturas de dados o resultado sempre é um programa excessivo: excesso de consumo de recursos, excesso de código desnecessário, etc.</p>
<p style="text-align: justify;">Sou de opinião que a programação deve sempre orientar-se ao uso racional de recursos, ou seja, nunca partir da suposição que os recursos necessários estarão sempre disponíveis. Essa forma de pensar leva ao desenvolvimento de aplicações eficientes. Não basta apenas ser bonitinha: a aplicação precisa, também, ser rápida e responder prontamente ao usuário. Quanto mais uma aplicação demora, menor será a possibilidade de permanecer em uso. Afinal, o principal motivo das aplicações existirem são os usuários.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ronaldolima.eti.br/2012/02/20/o-uso-racional-de-recursos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transformando o façade em uma classe sacola</title>
		<link>http://www.ronaldolima.eti.br/2012/02/17/transformando-o-facade-em-uma-classe-sacola/</link>
		<comments>http://www.ronaldolima.eti.br/2012/02/17/transformando-o-facade-em-uma-classe-sacola/#comments</comments>
		<pubDate>Fri, 17 Feb 2012 09:34:24 +0000</pubDate>
		<dc:creator>ronaldo</dc:creator>
				<category><![CDATA[Codexis]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Vida de Programador]]></category>

		<guid isPermaLink="false">http://www.ronaldolima.eti.br/?p=959</guid>
		<description><![CDATA[Os design patterns são, sem dúvida, uma das ferramentas mais poderosas na caixa de ferramentas do programador. Porém, como toda ferramenta é preciso saber usá-las adequadamente para que sejam realmente úteis e não se tornem uma bela dor-de-cabeça. Com alguma frequência vejo alguns design patterns utilizados de maneira inadequada. Singletons são os mais usados de [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Os design patterns são, sem dúvida, uma das ferramentas mais poderosas na caixa de ferramentas do programador. Porém, como toda ferramenta é preciso saber usá-las adequadamente para que sejam realmente úteis e não se tornem uma bela dor-de-cabeça.</p>
<p style="text-align: justify;">Com alguma frequência vejo alguns design patterns utilizados de maneira inadequada. Singletons são os mais usados de maneira incorreta. O façade, objeto deste artigo, também. Normalmente, o façade acaba tornando-se um tipo de classe &#8220;sacola&#8221; na qual tudo o que não se consegue modelar como objeto acaba indo parar.</p>
<p style="text-align: justify;">Basta lembrar-se para o que o façade serve: para unificar uma API esparsa em um único ponto. Ou seja, a ideia do façade é servir como entry point em uma API complexa, criando  uma interface mais simples de ser utilizada. Isso é bem diferente de socar toda e qualquer funcionalidade que não se sabe bem onde deveria ficar.</p>
<p style="text-align: justify;">O efeito negativo de transformar o façade em uma classe sacola é a criação de uma classe enorme, com métodos igualmente grandes e que é programada basicamente como se fosse um conjunto de funções e não um conjunto de métodos pela disjunção funcional que acaba existindo entre cada um dos métodos introduzidos.</p>
<p style="text-align: justify;">Eu bato muito na tecla da manutenção pois é com ela que se gasta mais tempo nos ciclos de desenvolvimento de software.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ronaldolima.eti.br/2012/02/17/transformando-o-facade-em-uma-classe-sacola/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vai mesmo usar código achado no Google no seu sistema?</title>
		<link>http://www.ronaldolima.eti.br/2012/02/14/vai-mesmo-usar-codigo-achado-no-google-no-seu-sistema/</link>
		<comments>http://www.ronaldolima.eti.br/2012/02/14/vai-mesmo-usar-codigo-achado-no-google-no-seu-sistema/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 10:22:23 +0000</pubDate>
		<dc:creator>ronaldo</dc:creator>
				<category><![CDATA[Codexis]]></category>
		<category><![CDATA[Opiniões]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Vida de Programador]]></category>

		<guid isPermaLink="false">http://www.ronaldolima.eti.br/?p=957</guid>
		<description><![CDATA[Você precisa desenvolver uma aplicação com uma série de funcionalidades. Você tem a brilhante ideia de usar bibliotecas de código aberto que achou no Google para agilizar o seu trabalho, cortando o seu tempo de desenvolvimento quase pela metade. Você já viu essa estória. Introduzir código pronto, de terceiros, introduz no seu sistema uma variável [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Você precisa desenvolver uma aplicação com uma série de funcionalidades. Você tem a brilhante ideia de usar bibliotecas de código aberto que achou no Google para agilizar o seu trabalho, cortando o seu tempo de desenvolvimento quase pela metade. Você já viu essa estória.</p>
<p style="text-align: justify;">Introduzir código pronto, de terceiros, introduz no seu sistema uma variável descontrolada que irá atingir em cheio a manutenção do seu código. O que as pessoas não conseguem entender é que usar uma biblioteca de código aberto aumenta o trabalho de manutenção do código. Por que? Por que o código introduzido no seu sistema agora faz parte do seu sistema. E como este código foi escrito por seres humanos é certo que contém defeitos. Quem vai consertá-los?</p>
<p style="text-align: justify;">A postura correta é consertar os defeitos e publicar as correções para a comunidade que mantém o código. Afinal, você abraçou a causa depois que resolveu introduzir o código no seu projeto. Agora o filho é seu também. Assim, ao introduzir código aberto no seu sistema você também tornou-se um mantenedor deste mesmo código. O problema, que poucos enxergam, é o custo que isso gera para os projetos da empresa. Afinal, alguém terá de dedicar horas de trabalho para manter código aberto, gratuito, e cada hora de trabalho custa dinheiro à empresa. Seu salário vem no fim do mês, não é mesmo?</p>
<p style="text-align: justify;">O uso indiscriminado de código aberto dentro de projetos nas empresas gera prejuízos não por que o código aberto é ruim, mas pela falta de planejamento na utilização deste código. Empresas como a IBM, por exemplo, financiam projetos de código aberto para poder usufruir dos mesmos. Há um planejamento e envolvimento empresarial consciente nestes projetos. Porém, um programador introduzir à revelia uma biblioteca de código aberto em um projeto irá gerar prejuízos para a empresa pois a falta de planejamento na utilização deste código custará horas de manutenção em código de terceiros.</p>
<p style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://www.ronaldolima.eti.br/2012/02/14/vai-mesmo-usar-codigo-achado-no-google-no-seu-sistema/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>App para mobile: um sistema de informação</title>
		<link>http://www.ronaldolima.eti.br/2012/02/14/app-para-mobile-um-sistema-de-informacao/</link>
		<comments>http://www.ronaldolima.eti.br/2012/02/14/app-para-mobile-um-sistema-de-informacao/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 10:05:36 +0000</pubDate>
		<dc:creator>ronaldo</dc:creator>
				<category><![CDATA[Codexis]]></category>
		<category><![CDATA[Opiniões]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Vida de Programador]]></category>

		<guid isPermaLink="false">http://www.ronaldolima.eti.br/?p=955</guid>
		<description><![CDATA[Desenvolver aplicações, as famosas apps, para dispositivos móveis está na moda. Muita gente desenvolve aplicações para as plataformas móveis sem ter um mínimo de conhecimento de programação de computadores, como se isso fosse descartável. O resultado são aplicações lentas, pesadas e que consomem muito mais recursos do que deveriam. As aplicações para dispositivos móveis são [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Desenvolver aplicações, as famosas <em>apps</em>, para dispositivos móveis está na moda. Muita gente desenvolve aplicações para as plataformas móveis sem ter um mínimo de conhecimento de programação de computadores, como se isso fosse descartável. O resultado são aplicações lentas, pesadas e que consomem muito mais recursos do que deveriam.</p>
<p style="text-align: justify;">As aplicações para dispositivos móveis são sistemas de informação. Não basta fazer uma interface bonita. É preciso ter um projeto sério de engenharia de software para que a aplicação torne-se um sucesso nas lojas <em>on-line</em>. Isso significa dizer que é essencial conhecer-se algoritmos, estruturas de dados, <em>design patterns </em>e outras matérias específicas de computação.</p>
<p style="text-align: justify;">Canso de dizer e repito: um <em>designer </em>não tem a menor condição de implementar uma aplicação de sucesso apenas por fazer o <em>design</em>. O recheio, o código, precisa de modelos matemáticos de dados para suportarem a funcionalidade pretendida pela aplicação. Além do modelo, é preciso ter código que manipule o modelo matemático de maneira eficiente e eficaz.</p>
<p style="text-align: justify;">Não quero desmerecer o trabalho do <em>designer</em>. Eu desenvolvo software e entendo o quanto o bom <em>design</em> é importante e essencial para a criação de uma aplicação. No entanto, da mesma forma que um programador normalmente não tem condições de fazer um bom <em>design</em> de UI, o <em>designer </em>não tem condições de fazer um código para a aplicação. É como pedir para um matemático pintar um quadro ou um pintor resolver uma equação.</p>
<p style="text-align: justify;">Eu tenho visto bastante disso aqui na nossa terrinha: <em>designers</em> acreditando que podem escrever aplicações para dispositivos móveis. O resultado são aplicações belíssimas, mas cheias de defeitos, desde problemas básicos de navegação até problemas mais sérios como consumo de bateria, <em>crashes</em> inesperados e falhas graves de manutenção de dados. Por que isso? Pelo simples fato de que são aplicações desenvolvidas por quem sabe fazer UI mas não tem a mínima ideia de como modelar os dados, as relações entre eles e em como produzir informações através de processamento eficiente e eficaz.</p>
<p style="text-align: justify;">O desenvolvimento de aplicações para dispositivos móveis é desafiador pois os recursos disponíveis são reduzidos e podem exaurir-se muito facilmente, ao contrário do que ocorre com os <em>desktops</em> ou servidores nos quais os recursos são abundantes. Os paradigmas são outros o que traz ao código final uma complexidade que não existe em máquinas com recursos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ronaldolima.eti.br/2012/02/14/app-para-mobile-um-sistema-de-informacao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O que são as variáveis &#8220;register&#8221;</title>
		<link>http://www.ronaldolima.eti.br/2012/02/12/topicos-de-c-o-que-sao-as-variaveis-register/</link>
		<comments>http://www.ronaldolima.eti.br/2012/02/12/topicos-de-c-o-que-sao-as-variaveis-register/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 18:55:00 +0000</pubDate>
		<dc:creator>ronaldo</dc:creator>
				<category><![CDATA[Codexis]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Tópicos de C]]></category>

		<guid isPermaLink="false">http://www.ronaldolima.eti.br/?p=945</guid>
		<description><![CDATA[Existe um modificador de classe de armazenamento em linguagem C que poucos programadores compreendem completamente. Este modificador, chamado de register, tinha uso efetivo na época em que os otimizadores ainda eram primitivos. Com o melhoramento nos otimizadores e nos sistemas operacionais, esta palavra reservada quase caiu em desuso. Mas há usos para ela. Aqui está [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Existe um modificador de classe de armazenamento em linguagem C que poucos programadores compreendem completamente. Este modificador, chamado de <em>register, </em>tinha uso efetivo na época em que os otimizadores ainda eram primitivos. Com o melhoramento nos otimizadores e nos sistemas operacionais, esta palavra reservada quase caiu em desuso. Mas há usos para ela. Aqui está um pequeno artigo para elucidar o que é e como usá-la.</p>
<h1 style="text-align: justify;">O que é</h1>
<p style="text-align: justify;">O modificador <em>register</em> surgiu em uma época em que os otimizadores eram ainda primitivos. Ele era utilizado para informar ao compilador para colocar a variável dentro de um registrador do processador, visando agilizar cálculos e otimizar a performance. No entanto, o modificador só pode ser utilizado em tipos inteiros, ou seja, <em>int, long, unsigned </em>e <em>char</em>. O motivo para isso é simples: o registrador da CPU só funciona com números inteiros. Cálculos com números em ponto flutuante são função da ALU - <em>arithmetics and logic unit</em>, ou o co-processador matemático que hoje em dia já faz parte do processador em si.</p>
<p style="text-align: justify;">A principal característica do modificador <em>register</em> é que não se pode obter o endereço de memória do objeto modificado. Por exemplo, o código abaixo gera um erro de compilação:</p>
<blockquote>
<pre style="text-align: justify;">register int i;</pre>
<pre style="text-align: justify;">int *k = &amp;i;</pre>
</blockquote>
<p style="text-align: justify;">Apesar de impedir a extração do endereço de memória da variável, usar o modificador <em>register</em> não garante que a variável será efetivamente colocada em um registrador da CPU. Em verdade, este modificador funciona como um <em>hint</em> para o otimizador, informando que a variável pode ser colocada em um registrador.</p>
<h1 style="text-align: justify;">Por que é pouco usado</h1>
<p style="text-align: justify;">Como dito, o modificador <em> register</em> é pouco usado pois as melhorias dos otimizadores fizeram-no perder o significado ao longo dos anos. Os otimizadores modernos analisam o código e colocam as variáveis inteiras, principalmente índices usados em <em>loops</em> no registrador da CPU automaticamente, sem a necessidade de <em>hints</em> no código.</p>
<p style="text-align: justify;">O seu maior uso é em índices dentro de laços, onde requer-se que o incremento do conteúdo da variável ocorra da maneira mais rápida possível.</p>
<h1 style="text-align: justify;">Por que usar</h1>
<p style="text-align: justify;">Eu vejo o modificador <em>register</em> com bons olhos. Ele é interessante para documentar no código que a variável declarada com ele não é passível de obtenção de endereço e, além disso, é uma variável que possivelmente é usada para indexar alguma estrutura de dados. Eu entendo que este modificador melhora a clareza do código, deixando mais óbvio o uso das variáveis. Apesar de não ser garantido que determinada variável será colocada no registrador da CPU, acredito que o seu uso em termos de documentação de código deixa mais clara a intenção de determinada declaração.</p>
<p style="text-align: justify;">Sou de opinião que o código tem de ser bem legível a ponto de deixar claras as intenções de quem o escreveu. Isso faz com que a manutenção seja mais fácil e o código seja mais legível. É uma obrigação do programador deixar seu código legível visando a fácil manutenção futura, nem que seja para ele mesmo dar manutenção.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ronaldolima.eti.br/2012/02/12/topicos-de-c-o-que-sao-as-variaveis-register/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O mundo da maldade</title>
		<link>http://www.ronaldolima.eti.br/2012/02/12/o-mundo-da-maldade/</link>
		<comments>http://www.ronaldolima.eti.br/2012/02/12/o-mundo-da-maldade/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 11:56:04 +0000</pubDate>
		<dc:creator>ronaldo</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[Opiniões]]></category>

		<guid isPermaLink="false">http://www.ronaldolima.eti.br/?p=942</guid>
		<description><![CDATA[As notícias que lemos no dia-a-dia são cada vez mais aterradoras. Casais que praticam sexo com a filha de 6 meses de idade, abusos sexuais de recém-nascidos&#8230; As notícias são tão terríveis que parecem estórias de terror. E fico me perguntando: isso começou a acontecer de uns anos para cá ou sempre aconteceu e a [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">As notícias que lemos no dia-a-dia são cada vez mais aterradoras. Casais que praticam sexo com a filha de 6 meses de idade, abusos sexuais de recém-nascidos&#8230; As notícias são tão terríveis que parecem estórias de terror. E fico me perguntando: isso começou a acontecer de uns anos para cá ou sempre aconteceu e a imprensa resolveu divulgar isso agora?</p>
<p style="text-align: justify;">O fato é que o mal está à solta no mundo. Não falo no sentido religioso, mas no sentido prático. Que há pessoas más, não é novidade para ninguém. No entanto, cada vez mais a sociedade em que vivemos demonstra que a árvore da maldade está cada vez mais frondosa, enraizando-se mais profundamente e aumentando a quantidade de pessoas que comem do seu fruto.</p>
<p style="text-align: justify;">O mal praticado contra os inocentes  ganha nova faceta, ou seja, é praticado dentro de casa, dentro da estrutura da família. Pais que abusam de seus filhos violentam a pureza e a inocência, tirando de seus filhos a leveza de ser criança e plantando a semente da destruição em suas almas.</p>
<p style="text-align: justify;">Cada vez mais me convenço que estamos assistindo ao declínio da sociedade moderna que está colapsando por sobre sua estrutura, demonstrando que vivemos o tempo da queda do mundo conforme o conhecemos. As relações entre as pessoas começam a transformar o indivíduo em coisas desprovidas de pensamento ou emoção, fato que é comprovado pelos abusos e violência que vemos inocentes sofrerem.</p>
<p style="text-align: justify;">Crianças são forçadas a abandonar sua inocência e pureza pois tornam-se infectadas pelo vírus do mal, muitas vezes inoculado pelas pessoas que deveriam cuidar do seu crescimento sadio. Isso aumenta a insanidade destes tempos pois o ser humano perde seu valor, é desrespeitado e torna-se apenas um pedaço de carne em cima de duas pernas.</p>
<p style="text-align: justify;">Eu enxergo nesse fenômeno do aumento da maldade um fato que é a diminuição da esperança. As pessoas têm menos esperanças, menos motivos para sorrirem. Alimentam-se de coisas sem valor deste mundo sendo que deveriam valorizar a vida que os cerca. Isso os condena à uma existência vazia, sem sentido e os tornam seres famintos, sempre com fome de algo que possa preencher suas almas. O resultado é que alimentam-se das coisas erradas, coisas que não preenchem seu vazio interior.</p>
<p style="text-align: justify;">Ao contrário, o vazio aumenta, bem como a fome. Por fim, tornam-se famintos que sentem as dores da fome mas que nunca serão capazes de satisfazerem-se. Estão condenados.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ronaldolima.eti.br/2012/02/12/o-mundo-da-maldade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O que é a expressão lambda</title>
		<link>http://www.ronaldolima.eti.br/2012/02/04/o-que-e-a-expressao-lambda/</link>
		<comments>http://www.ronaldolima.eti.br/2012/02/04/o-que-e-a-expressao-lambda/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 10:20:51 +0000</pubDate>
		<dc:creator>ronaldo</dc:creator>
				<category><![CDATA[Codexis]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Vida de Programador]]></category>

		<guid isPermaLink="false">http://www.ronaldolima.eti.br/?p=934</guid>
		<description><![CDATA[Entenda qual a vantagem das declarações sem identificadores, um método usado em algumas linguagens de programação para a determinação de trechos de código de escopo bem definido.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">A expressão lambda, também conhecida como função lambda, é uma função que não tem um identificador associado à ela. Várias linguagens de programação permitem a sintaxe de funções sem identificação, como Objective C, javascript e Lisp. Mas qual é a vantagem de escrever uma função sem identificação?</p>
<p style="text-align: justify;">As expressões lambda são ótimas para a criação de pequenas rotinas que precisam ser implementadas <em>in place</em>. A principal vantagem de utilizá-las é permitir que pequenos trechos de código, de escopo bem definido, sejam organizados em blocos de código bem destacados. O Objective C, por exemplo, faz uso corriqueiro das expressões lambda para a implementação de uma série de métodos em diversos objetos.</p>
<p style="text-align: justify;">Como todo recurso poderoso de uma linguagem de programação, é preciso ter consciência em usar uma expressão lambda. Esse negócio existe para facilitar a escrita de pequenos trechos de código e não para que você escreva uma encíclica papal contando a História do Mundo desde a Criação.</p>
<p style="text-align: justify;">A expressão lambda é útil, também, para criar uma hierarquia de funções, coisa que é suportada na linguagem Pascal, por exemplo. Em Pascal é possível declarar-se uma função ou procedimento dentro de uma função ou procedimento e assim sucessivamente. Em algumas circunstâncias é muito interessante limitar o escopo de uma determinada funcionalidade do seu código, criando hierarquias de definições.</p>
<p style="text-align: justify;">O Objective C ainda permite que as funções lambda sejam atribuídas a variáveis, algo como um ponteiro para funções mas com estrutura totalmente variável. Isso dá à linguagem uma flexibilidade enorme para a criação de algoritmos adaptativos e polimórficos, dando ao programador uma tremenda ferramenta para criar rotinas simples e poderosas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ronaldolima.eti.br/2012/02/04/o-que-e-a-expressao-lambda/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mantenha o estudo em dia</title>
		<link>http://www.ronaldolima.eti.br/2012/02/02/mantenha-o-estudo-em-dia/</link>
		<comments>http://www.ronaldolima.eti.br/2012/02/02/mantenha-o-estudo-em-dia/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 09:21:36 +0000</pubDate>
		<dc:creator>ronaldo</dc:creator>
				<category><![CDATA[Codexis]]></category>
		<category><![CDATA[Opiniões]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Vida de Programador]]></category>

		<guid isPermaLink="false">http://www.ronaldolima.eti.br/?p=928</guid>
		<description><![CDATA[Muita gente acredita que nunca mais vai estudar depois de deixar a faculdade. Ledo engano. Depois que a faculdade termina é que o estudo de verdade começa]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Muita gente acredita que nunca mais vai estudar depois de deixar a faculdade. Ledo engano. Depois que a faculdade termina é que o estudo de verdade começa. Em qualquer área do conhecimento  o estudo contínuo é o que diferencia o conhecimento técnico do profissional no mercado de trabalho. Porém, não se deve sair estudando tudo o que aparece pela frente. Aqui vão algumas dicas para você manter-se atualizado sem precisar morrer doido.</p>
<h2 style="text-align: justify;">Reserve um horário do dia</h2>
<p style="text-align: justify;">Reserve um horário para estudar. Que seja meia-hora. Que seja no seu trabalho. O seu patrão vai agradecer depois, pois você está, na verdade, tornando-se um profissional melhor. Tire o telefone do gancho, saia do seu e-mail e dos <em>messengers</em>. E estude profundamente, de preferência ouvindo alguma música agitada. Música relaxante vai te fazer dormir. Prefira rock.</p>
<h2 style="text-align: justify;">Estude o que pode usar imediatamente</h2>
<p style="text-align: justify;">Seja seletivo ao estudar. Procure estudar algum assunto que tenha a ver com o que está fazendo atualmente. Estude o assunto que possa melhorar o seu trabalho, tornando-o mais fácil para você. A equação aqui é bem simples: trabalho mais fácil, lucro mais alto. Você lucra por fazer o mesmo trabalho mais rápido e terá tempo mais livre para fazer as coisas realmente relevantes na sua empresa.</p>
<h2 style="text-align: justify;">Varie linguagens de programação</h2>
<p style="text-align: justify;">Se você for programador, procure estudar outras linguagens de programação. O objetivo não é tornar-se um mestre Jedi de todas as linguagens, mas aprender paradigmas diferentes que podem ser aplicados na sua linguagem atual. Por exemplo, o estudo de TCL pode lhe ajudar a ter uma visão melhor de listas de dados e essa visão pode ajudá-lo a desenvolver rotinas mais eficientes em linguagens como C ou C++.</p>
<p style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://www.ronaldolima.eti.br/2012/02/02/mantenha-o-estudo-em-dia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vai mesmo deixar o código com advertências?</title>
		<link>http://www.ronaldolima.eti.br/2012/01/28/vai-mesmo-deixar-o-codigo-com-advertencias/</link>
		<comments>http://www.ronaldolima.eti.br/2012/01/28/vai-mesmo-deixar-o-codigo-com-advertencias/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 09:19:31 +0000</pubDate>
		<dc:creator>ronaldo</dc:creator>
				<category><![CDATA[Codexis]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Vida de Programador]]></category>

		<guid isPermaLink="false">http://www.ronaldolima.eti.br/?p=925</guid>
		<description><![CDATA[Não é incomum ver código de produção que quando compilado apresenta uma quantidade enorme de advertências geradas pelo compilador.  Normalmente este é  primeiro teste que executo quando estou avaliando a qualidade de um código: a quantidade de advertências que este gera ao ser compilado. Advertências deixadas para trás denotam duas coisas: negligência por parte do [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Não é incomum ver código de produção que quando compilado apresenta uma quantidade enorme de advertências geradas pelo compilador.  Normalmente este é  primeiro teste que executo quando estou avaliando a qualidade de um código: a quantidade de advertências que este gera ao ser compilado. Advertências deixadas para trás denotam duas coisas: negligência por parte do programador e baixa qualidade do código final.</p>
<p style="text-align: justify;">As advertências existem para demonstrar que há pontos de problemas potenciais no seu código. Estes problemas não são suficientemente graves para impedir a geração do código executável, mas são problemas ainda assim. O fato do executável final ser gerado não significa que ele presta. As advertências são um aviso sobre a má qualidade do executável final.</p>
<p style="text-align: justify;">O código precisa compilar sem nenhuma advertência. Ponto final. O programador que deixa advertências no código que escreve é negligente. Os problemas estão lá. E vão acontecer quando forem para a produção. O primeiro teste que precisa ser feito é a compilação do código. Código com advertências não pode, jamais, ir para a produção. Nunca!</p>
<p style="text-align: justify;">Até hoje não entendo por que os programadores, principalmente os mais inexperientes, ignoram as advertências acreditando que seu código é livre de suspeitas. A advertência, em si, já é um indício de que algo não vai bem.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ronaldolima.eti.br/2012/01/28/vai-mesmo-deixar-o-codigo-com-advertencias/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cuidado com a engenharia de foguete!</title>
		<link>http://www.ronaldolima.eti.br/2012/01/27/cuidado-com-a-engenharia-de-foguete/</link>
		<comments>http://www.ronaldolima.eti.br/2012/01/27/cuidado-com-a-engenharia-de-foguete/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 10:17:30 +0000</pubDate>
		<dc:creator>ronaldo</dc:creator>
				<category><![CDATA[Codexis]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Vida de Programador]]></category>

		<guid isPermaLink="false">http://www.ronaldolima.eti.br/?p=920</guid>
		<description><![CDATA[A palavra de ordem é objetividade. O grande desafio de qualquer programador é escrever código que seja objetivo, ou seja, a menor quantidade de código possível que resolva um problema proposto. Sem frescura, sem invenção de moda, sem a preocupação de demonstrar conhecimento. Curto e grosso. No entanto, não é sempre assim na área de [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">A palavra de ordem é objetividade. O grande desafio de qualquer programador é escrever código que seja objetivo, ou seja, a menor quantidade de código possível que resolva um problema proposto. Sem frescura, sem invenção de moda, sem a preocupação de demonstrar conhecimento. Curto e grosso. No entanto, não é sempre assim na área de computação. É comum encontrar engenharia de foguete onde deveria ter, no máximo, uma casinha de sapé.</p>
<p style="text-align: justify;"><strong>Design Pattern à força</strong></p>
<p style="text-align: justify;">Há programadores que querem usar <em>design patterns</em> de qualquer maneira em seus códigos. É bonito, é elegante, mas em grande parte do tempo desnecessário. Você deve usar <em>design patterns</em> onde eles são necessários e não por que você os conhece. Infelizmente há programadores que forçam o uso de <em>design patterns</em> para a resolução de problemas de programação. O efeito colateral é código complexo, altos <em>footprint</em> e consumo de recursos.</p>
<p style="text-align: justify;">O resultado é apenas um: código desnecessariamente complexo, de difícil manutenção e com problemas que não acabam mais. Não é incomum ver <em>software</em> coberto de defeitos sem fim que nunca são totalmente consertados.</p>
<p style="text-align: justify;"><strong>Desenhe antes de programar!</strong></p>
<p style="text-align: justify;">Gaste todo o tempo do mundo desenhando e planejando o que você vai fazer antes de sair programando como um animal de carga que não olha para os lados. É possível fazer desenvolvimento e <em>design</em> incrementais, mas isso exige muita disciplina. Desenhe antes! Faça esquemas, use papel, lápis, caneta, faça disso uma arte. Não comece a programar a menos que você já tenha estruturado tudo o que você vai fazer antes.</p>
<p style="text-align: justify;">A falta de desenho antes de iniciar a programação leva a código confuso, principalmente para programadores sem muita experiência. Código sem desenho é altamente acoplado, com falhas de encapsulamento e com problemas tais que chegam a ser gritantes. Desenhe antes, programe depois. E entenda que mesmo depois de haver desenhado o que você vai fazer, você precisará ajustar seu desenho durante a escrita do código. É um trabalho interativo.</p>
<p style="text-align: justify;"><strong>Leia e pesquise</strong></p>
<p style="text-align: justify;">Pesquise sobre a linguagem e o ambiente que você vai utilizar antes de sair programando. Por que isso? Para evitar quer você saia escrevendo código que já existe. Não acredite e não seja pretensioso de achar que seu código é melhor do que o código de um SDK ou biblioteca. O seu código nunca foi testado pois você o está escrevendo agora. O código do SDK ou biblioteca já foi muito testado, consertado, alterado e evoluído. Programe com humildade.</p>
<p style="text-align: justify;">Replicar em código o que já existe é comum de quem sai programando com viseira, sem olhar para os lados, preocupado apenas com o prazo final. Sim, o prazo de entrega é importante. Mas é importante, também, que o software chegue lá funcionando. Não adianta nada atingir um prazo final com um software cheio de problemas. Isso irá te ocupar desnecessariamente e consumirá os recursos do projeto a ponto de levá-lo ao prejuízo. Dependendo do tamanho do prejuízo seu emprego estará em xeque.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ronaldolima.eti.br/2012/01/27/cuidado-com-a-engenharia-de-foguete/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

