<?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; IDE</title>
	<atom:link href="http://www.paulomotta.pro.br/tag/ide/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>Fri, 03 Sep 2010 11:39:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ah! O COBOL</title>
		<link>http://www.paulomotta.pro.br/2010/06/30/ah-o-cobol/</link>
		<comments>http://www.paulomotta.pro.br/2010/06/30/ah-o-cobol/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 14:09:14 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[Tendências]]></category>
		<category><![CDATA[ARQUITETURA]]></category>
		<category><![CDATA[DISTRIBUIÇÃO]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Integração]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[PROGRAMAÇÃO]]></category>
		<category><![CDATA[SISTEMA]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=612</guid>
		<description><![CDATA[Essa semana um aluno me perguntou por email se eu conhecia algum editor para trabalhar com COBOL, não lembrei de imediato, mas depois de um tempo me veio a mente um evento que participei da empresa Micro Focus (de quem não estou ganhando nada para falar aqui&#8230;) apresentando um produto que permitia integrar programas COBOL [...]]]></description>
			<content:encoded><![CDATA[<p>Essa semana um aluno me perguntou por email se eu conhecia algum editor para trabalhar com COBOL, não lembrei de imediato, mas depois de um tempo me veio a mente um evento que participei da empresa <a href="http://www.microfocus.com" target="_blank">Micro Focus</a> (de quem não estou ganhando nada para falar aqui&#8230;) apresentando um <a href="http://www.microfocus.com/products/micro-focus-developer/index.aspx" target="_blank">produto</a> que permitia integrar programas COBOL com aplicações Java e .Net, inclusive rodar o programa em baixa plataforma.</p>
<p>Eu nunca usei o produto, até porque nem tenho programas em COBOL, mas é uma alternativa interessante para quem precisa manter aqueles programas do legado e quer mais facilidades. Lembro que nos meus tempos de EDS havia um grande buzz em torno do conceito de Application Modernization (modernização de aplicações) foram inclusive considerados produtos que permitiam avalizar o fluxo de chamadas entre módulos de programas COBOL para poder identificar o que eram regras de negócio e o que precisava realmente ser abandonado.</p>
<p>O fato que ninguém quer assumir é que não dá para jogar fora programas com 30 anos de execução, que você SABE que funcionam pelo simples fato de estarem rodando há tanto tempo. Tentar reescrever muitas vezes é a receita para o desastre porque você terá que revalidar as novas aplicações e garantir que está tudo certo, mas não temos hoje nenhum método ou ferramenta de teste que garanta 100% de cobertura de testes, mesmo que tal ferramenta existisse, seria impossível garantir que todos os casos de teste foram pensados. Ao longo dos 30 anos de existência aqueles programas COBOL foram testados, corrigidos, modificados e isso é uma coisa que só com o tempo para garantir a estabilidade.</p>
<p>A própria IBM investiu em um caminho contraditório, disponibilizou para mainframe (plataforma Z/OS) o Websphere e o Java de forma que você pode dentro do seu programa COBOL (que funciona há 30 anos) fazer uma chamada para um novo componente EJB feito em Java, pode também encapsular seu módulo COBOL em um EJB e expor para o mundo via WebService. Aí você pensa &#8220;duvido! isso não funciona!&#8221; mas nesse caso eu posso dizer que funciona porque trabalhei em um projeto assim na EDS, aliás meu último projeto por lá. O único inconveniente (não sei como está agora) é que a própria IBM não tinha muita experiência nesse tipo de integração então algumas dúvidas ficavam muito perdidas. Uma das coisas que foi legal de descobrir futucando manuais,  experimentando e lendo código fonte de outras plataformas é que essa integração (do Enterprise COBOL 4.3 ou superior) com o Java é feita via JNI (Java Native Inteface) então quando você quer referenciar no COBOL uma classe Java precisa fazer isso usando &#8220;/&#8221; como separador de pacotes ao invés de &#8220;.&#8221; para ficar mais claro:</p>
<blockquote><p>java/lang/String ao invés de java.lang.String</p></blockquote>
<p>Mas fora isso funcionava bem direitinho.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2010/06/30/ah-o-cobol/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Importância do uso de IDEs</title>
		<link>http://www.paulomotta.pro.br/2009/09/21/a-importancia-do-uso-de-ides/</link>
		<comments>http://www.paulomotta.pro.br/2009/09/21/a-importancia-do-uso-de-ides/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 21:21:26 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[PROGRAMAÇÃO]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/2009/09/21/a-importancia-do-uso-de-ides/</guid>
		<description><![CDATA[Embora ainda tenhamos muitos problemas com o desenvolvimento de sistemas algumas ferramentas evoluíram bastante permitindo um ganho de produtividade, especialmente na área de codificação. Se pensarmos que os primeiros programas de computador eram feitos utilizando um simples editor de texto (até hoje podemos fazer isso para as principais linguagens de programação) e que hoje contamos [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 		A:link { so-language: zxx } -->Embora ainda tenhamos muitos problemas com o desenvolvimento de sistemas algumas ferramentas evoluíram bastante permitindo um ganho de produtividade, especialmente na área de codificação. Se pensarmos que os primeiros programas de computador eram feitos utilizando um simples editor de texto (até hoje podemos fazer isso para as principais linguagens de programação) e que hoje contamos com editores muito mais poderosos capazes de reconhecer a sintaxe da linguagem isso já é de chamar a atenção.</p>
<p>Esses ambientes de desenvolvimento modernos tem capacidades poderosas para auxiliar o programador em sua tarefa de criar programas de computador. Porém como sua principal função continua sendo editar arquivos de texto muitas vezes os usuários (principalmente os iniciantes) acabam não explorando (e muitas vezes nem conhecendo) essas capacidades.</p>
<p>Vamos conhecer algumas dessas características para entender a importância de saber utilizá-las:</p>
<ul>
<li>Reconhecimento da 	sintaxe da linguagem &#8211; atualmente até os editores mais simples já 	são capazes de serem configurados para reconhecer as palavras-chave 	das linguagens de programação com as quais trabalha. A importância 	é que como os comandos da linguagem ficam marcados com uma cor 	diferente (que pode ser configurada pelo usuário) rapidamente 	podemos identificar um comando errado.</li>
<li>Identação 	automática &#8211; quando usamos linguagens de programação imperativas 	tais como Pascal, C, C++ e Java entre várias outras, é comum 	separarmos os blocos de código relacionados adicionando espaços 	(ou tabulações) à esquerda do código empurrando o bloco para 	longe de margem, isto facilita entender os relacionamentos entre os 	blocos. Atualmente as IDEs permitem formatar automaticamente e até 	mesmo mover blocos inteiros de acordo com as regras de identação.</li>
<li>Reconhecimento 	sintático &#8211; dependendo da linguagem, são fornecidos reconhecedores 	sintáticos que são capazes de marcar códigos com erro durante sua 	escrita, embora esse passo seja executado novamente durante a 	compilação final do programa, essa capacidade auxilia o 	programador porque já sublinha o código com erro durante a 	escrita.</li>
<li>Autocompletar &#8211; 	essa é a característica preferida de todos, de acordo com o que 	vamos digitando o ambiente vai identificando quais as possibilidade 	do código e pode oferecer uma lista de opções, isso é 	especialmente interessante para programação orientada a objetos em 	que queremos lembrar um método de algum objeto (que está sendo 	manipulado através de uma variável,) mas também é muito útil em 	linguagens estruturadas, pois permite acessar campos de <a href="../2009/09/01/tipos-abstratos-de-dados/" target="_blank">tipos 	abstratos de dados</a> e acessar funções. Conforme vamos digitando 	as opções vão se restringindo até que podemos escolher a que nos 	serve.</li>
<li>Modelos de código 	- podemos configurar trechos de código modelo para ser usado em 	certas situações mais comuns e acessíveis através de atalhos 	simples. Ã‰ claro que as ferramentas já vem com vários desses 	modelos o que torna-se muito interessante, modelos para trechos de 	código com laços, estruturas de controle, comandos para imprimir e 	assim por diante.</li>
<li>Circundar código 	- é a capacidade de, a partir de uma seleção de código do 	usuário, a ferramenta colocar uma outra instrução <em>ao redor</em> daquela seleção. As vezes percebemos que seria bom repetir um 	código ou usar uma condição, não é mais necessário ficar 	procurando onde colocar o fechamento de um bloco, basta marcar e 	circundar.</li>
<li>Identificação de 	início e fim de blocos através de chaves &#8211; é claro que isso se 	aplica as linguagens que usam chaves como marcadores de bloco, mas 	as ferramentas são capazes de, quando o usuário coloca o cursor ao 	lado de uma chave, mostrar qual a correspondente seja ela de 	abertura ou de fim.</li>
<li>Navegação em 	hierarquia de tipos &#8211; essa é específica para linguagens orientadas 	a objetos, mas podemos solicitar qual a árvore de hierarquia de uma 	classe e a IDE apresenta as classes para cima e para baixo. Quando 	precisamos entender um sistema de outro desenvolvedor essa é uma 	funcionalidade de extremo valor.</li>
<li>Ir para a 	definição &#8211; normalmente acessado utilizando a tecla Control do 	teclado as chamadas de métodos e funções se transformam em links 	e o usuário pode clicar e ir para a definição daquele código.</li>
<li>Mecanismos de 	navegação no código &#8211; conforme vamos clicando nas definições de 	métodos e funções a ferramenta vai guardando uma lista de onde 	passamos de forma que podemos voltar passo a passo utilizando setas 	de navegação na barra de ferramentas.</li>
<li>Resolver 	importações de bibliotecas &#8211; dificilmente escrevemos um sistema 	todo do zero, então é muito comum usarmos bibliotecas de outras 	pessoas e empresas para trabalhar junto com nosso código, mas para 	que isso seja possível precisamos referenciar essas bibliotecas 	externas, quando o ambiente está configurado consegue identificar 	pelo nome que foi usado as possibilidades de bibliotecas que 	fornecem o recurso.</li>
<li>Fechamento de 	trechos de código &#8211; uma vez que métodos e funções tem início e 	fim definidos, as ferramentas permitem &#8220;fechar&#8221; e &#8220;abrir&#8221; 	esses trechos (normalmente com um sinal de &#8211; e + ao lado do início 	do trecho) de forma que não precisemos ficar rolando muito a tela 	para ver partes do código.</li>
<li>Auxílio para refatoração &#8211; este termo 	sugerido por Martin Fowler está relacionado a refazer trechos de 	código que não estão bons de acordo com os mais diversos padrões 	e critérios de qualidade. O uso de uma ferramenta para realizar 	essa tarefa é muito interessante porque permite avaliar o código 	como um todo, por exemplo para trocar o nome de uma variável, ou 	para trocar a lista de parâmetros de uma função ou método.</li>
</ul>
<p>Além dessas características temos outros tipos de integração tais como controle de versão, interface para consultas e manipulação de bancos de dados, controle de servidores de aplicação externos, navegador de código entre outros. Então conhecer e saber usar essas capacidades de uma ferramenta permite gastar mais tempo pensando no problema que queremos resolver e menos tempo lembrando a sintaxe da linguagem com a qual estamos trabalhando.</p>
<p>É claro que como tudo, essas características tem uma desvantagem que é deixar o programador bastante dependente da ferramenta, cada uma tem atalhos diferentes, capacidades diferentes mais ou menos poderosas que as concorrentes. Quando fazemos uma escolha por uma ferramenta e começamos a conhecê-la cada vez mais acabamos por desenvolver uma forma de programar que está associada àquele ambiente, o que pode gerar um certo atraso em outros ambientes. Isso não chega a ser um problema alarmante, mas o programador precisa ter consciência disso para que possa se adaptar as diversas situações com as quais vai se deparar ao longo da carreira.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2009/09/21/a-importancia-do-uso-de-ides/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
