You are on page 1of 15

Linux: Ferramentas de Programao 1 Semana de Informtica

v1.1 25 de outubro, 2004

Camila Coelho Linux User #215987

Reinaldo Sanches Linux User #213980

Sumrio
1 Introduo 2 Linha de comando 2.1 O editor vi (M) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Bash shell scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 IDEs Open Source 3.1 O editor Emacs . . . . 3.2 Eclipse Framework . . 3.3 KDevelop . . . . . . . 3.4 Qt Designer . . . . . . 3.4.1 Sinais e Slots . 3.5 Consideraes Finais 2 2 3 4 6 6 10 11 12 13 13

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

4 Controle de verso 13 4.1 CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.2 Subversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Introduo

Esse documento foi desenvolvido especialmente para a 1 Semana de Informtica da Faculdade Comunitria de Campinas. Neste mini-curso temos como objetivo apresentar as principais ferramentas livres e IDEs de desenvolvimento disponveis para Linux. O pblico-alvo inclui iniciantes em programao e interessados na utilizao dos recursos bsicos oferecidos pelas ferramentas de desenvolvimento open-source. Est fora do escopo deste curso o que diz respeito a prticas de programao ou linguagens, que sero utilizadas apenas para A ns demonstrativos. O cdigo fonte em LTEX 2 desse documento poder ser obtido posteriormente, no link: http://linuxbr.org/.

Linha de comando

Uma das principais caractersticas de sistemas Un*x-like, como o Linux, a disponibilidade de ferramentas poderosas na linha de comando (ou Command Line Interface). Essas facilidades so especialmente importantes para administradores de sistema e programadores. As ferramentas GNU encontradas nas distribuies Linux apresentam funcionalidades muitas vezes indisponveis em ferramentas grcas. A exibilidade da linha de comando, que permite a utilizao de operadores lgicos (&& e ||), redirecionamento (>, ) e pipe (|), alm dos recursos de programao nativos da shell o interpretador de comandos, possibilita operaes que seriam trabalhosas e demoradas em GUIs.Entre as ferramentas bsicas esto: ls, rm, more, wc, cat, od, cut, tail, etc. No Slackware Linux, por exemplo, estes programas so integrantes do pacote GNU Core Utils, que nada mais que a composio dos pacotes GNU leutils, sh-utils e textutils. A shell, por sua vez, a interface primria entre o usurio e o kernel, pois atravs dela que o usurio pode interagir com o sistema, executando os comandos disponveis na distribuio GNU/Linux. Em geral, a shell que acompanha estas distribuies a Bourne-again Shell, mais conhecida por bash. Bash uma verso aprimorada da shell tradicional em sistemas Unix, a Bourne Shell (ou somente sh), incluindo tambm recursos de outras shells como a Korn Shell (ksh) e a C-Shell (csh). O bash apresenta diversos recursos para criao de scripts, chamados de shell scripts, que so desenvolvidos geralmente para automatizar processos ou facilitar operaes que envolvam diferentes utilitrios e parme-

Linux: Ferramentas de Programao

tros. Para desenvolver scripts simples, os editores mais utilizados so o vi(m), o emacs e o nano. Estes editores apresentam recursos de colorao de cdigo (syntax highlighting) para scripts bash, entre outros.

2.1

O editor vi (M)

O editor vi o editor tradicional de sistemas Unix, encontrado virtualmente em qualquer verso do sistema, de Solaris a HP-UX ou AIX. Esse fato explica sua grande popularidade. Seu uso mais comum para a edio rpida de textos ou programas, pois o vi (modo linha de comando) muito leve, podendo ser gravado em um disquete. No Linux, comum encontrarmos uma verso aperfeioada do tradicional vi, o vim: Vi iMproved. O vim apresenta basicamente trs modos de operao: o modo de comandos (default), o modo de edio, e o modo ex. Ao iniciar o vim, ele encontra-se no primeiro modo, o que difere de outros editores que iniciam no que seria o modo de edio. Para iniciar a edio de um texto, geralmente chama-se o comando de insero: a tecla i. Outros comandos teis para o vi(m):

Tabela 1: Modo de comandos do vi a x dd u v y p / insere o texto aps a palavra selecionada (append) deleta a palavra selecionada deleta a linha desfaz a ltima modicao modo de seleo copia a rea selecionada cola a rea selecionada busca por uma string no texto

Vamos criar um script chamado numero.sh. Para isso, informe o nome do script como parmetro do editor:

$ vim -N numero.sh
Utilizamos o parmetro -N para desabilitar recursos de compatibilidade com o vi antigo. Entre em modo de insero e digite:

#!/bin/bash echo "hello world!"


O comando echo retorna uma mensagem na tela. Para gravar o script, entramos em modo ex. Para isso tecle ESC : (a tecla ESC seguida de dois pontos). Na realidade, o modo vi o modo visual do editor de linha ex[3]. Em modo ex, podemos agora gravar nosso arquivo. Para isso, digite w. Podemos ativar tambm opes do vi para facilitar o desenvolvimento, destacando-se (modo ex): set (no)number : Ativa/Desativa a numerao de linhas. syntax on : Ativa o modo syntax highlighting. set autoindent(ai) : Ativa a formatao automtica do cdigo. vi : Retorna para o modo de comando padro. Em modo de comando tambm h comandos que podem auxiliar o programador, como o %, que retorna o parnteses, colchete, ou chaves correspondente ao caracter selecionado. Outro comando, especialmente relevante para programadores C o gd (Goto Declaration[4]), que leva o cursor de volta declarao da varivel selecionada. Copyleft (C) 2004 LinuxBR.org 3

Linux: Ferramentas de Programao

Em modo de edio, um atalho importante a combinao CTRL-P, que procura uma palavra semelhante e completa a sentena em questo. Ao criar ou abrir um arquivo de edio no vi, ele na realidade gera um buffer, e a edio ocorre neste buffer. Alguns comandos importantes para trabalhar com os buffers no vi: edit : Inicia a edio em um outro buffer. write : Grava o buffer com um novo nome e retorna para o buffer atual. ls : Lista os buffers. buffer # : Altera de buffer de edio. q : Encerra o buffer atual. x : Grava os buffers e sai do editor. Finalmente, para sair do editor, digite q. Como apenas temos um buffer ativo, o vi encerrar. Comandos em modo ex devem ser precedidos por : e podem ser concatenados. Por exemplo, a sequncia wq grava e encerra o editor. O comando x faz o mesmo que esta combinao. Um comando comum tambm o q!, que encerra o editor sem gravar os buffers modicados. O ! omite os avisos do vi. Para rodar o script que criamos, preciso indicar que o script executvel, e em seguida, o caminho para a execuo:

$ chmod +x numero.sh $ ./numero.sh


A mensagem hello world dever aparecer na tela, indicando o sucesso da execuo do script. Para conrmar isso, a varivel do bash $? armazena o cdigo de retorno da ltima execuo (o cdigo 0 equivale ao sucesso da operao). Para que o vi mantenha as conguraes efetuadas, crie um arquivo .vimrc, manualmente, ou com o comando :mkv, e adicione as opes (set, syntax, etc.) desejadas.

2.2

Bash shell scripts

O bash disponibiliza diversos componentes e estruturas comuns em linguagens de programao para o desenvolvimento de scripts para o atendimento de diversas necessidades. Abaixo, exemplicamos os principais recursos de um shell script: 1. Interatividade Para aguardar um input do usurio, utiliza-se o comando read. Veja um exemplo abaixo:
# ! / b i n / bash # # numero . sh : Meu p r i m e i r o s c r i p t . echo "Digite um nmero:" read v a r echo "O nmero :" \ $var

Listing 1: Shell Script

Um exemplo comum de shell script recebe parmetros de entrada e executa aes baseadas nestes comandos. Nosso script tambm pode receber parmetros, como no exemplo:

#!/bin/bash # numero.sh: soma o nmero informado por 2. expr $1 + 2


Copyleft (C) 2004 LinuxBR.org 4

Linux: Ferramentas de Programao

A varivel de ambiente $1 refere-se ao primeiro parmetro, $2 ao segundo, e assim por diante. Nesse caso, ao executar o script, devemos informar logo em seguida o parmetro, no caso, o nmero a ser somado:

$ ./numero.sh 15
Para referncias de outras variveis teis do Bash, a melhor fonte o manual (manpage):

$ man bash
A seo PARAMETER da manpage do bash apresenta informaes completas a respeito de tratamento de parmetros e variveis de ambiente. 2. Condies If/Else/Case No exemplo anterior, caso o parmetro seja omitido, o resultado ser simplesmente 2. Porm, muitas vezes necessrio determinar se o parmetro foi informado para efetuarmos a operao. Para vericar se um parmetro foi realmente informado, utilizamos a expresso if:

#!/bin/bash if [ $# -ne 1 ] then echo "Utilizao: ./numero.sh NUMERO" else expr $1 + 2 fi


Desta forma, alertamos sobre a utilizao correta do script se a quantidade de parmetros ($#) no for igual (parmetro ne, ou not equal) a 1. Outras expresses condicionais podem ser encontradas na seo CONDITIONAL EXPRESSIONS da manpage do bash. Como pode ser observado, nosso programa no verica se a entrada um caracter ou um nmero. No Bash, por padro, no h diferenciao de tipos. Uma forma de se vericar se o argumento numrico seria atravs de uma expresso regular, como no exemplo abaixo:

#!/bin/bash case "$1" in [0-9]*) expr $1 + 2 ;; -h) echo "Utilizao: ./numero.sh NUMERO";; *) echo "Parmetro no um nmero." ;; esac
Dessa forma, se o valor for numrico, efetua-se a soma. Se o parmetro for a string -h, retorna a ajuda de utilizao. Para todos os outros, a mensagem Parmetro no um nmero exibida. 3. Loops While e For O Bash tambm possui comandos para loops, ou laos condicionais. O for por exemplo, geralmente utilizado para a iterao entre palavras ou items, como pode ser observado a seguir:

for i in `seq 1 10`; do echo $i done


Copyleft (C) 2004 LinuxBR.org 5

Linux: Ferramentas de Programao

O while semelhante a outras linguagens, considerando as expresses condicionais do Bash (not equal, lesser than, etc.): [3]

COUNTER=0 while [ $COUNTER -lt 10 ]; do echo "O contador : " $COUNTER let COUNTER=COUNTER+1 done
Alm de shell scripts, h diversas linguagens script que podem ser teis para efetuar tarefas no sistema. Entre as mais comuns esto o Perl, o AWK, e a linguagem Tcl/Tk. Para identicar um script como relativo a uma shell (Bash, Korn) ou a alguma linguagem de script, utiliza-se a notao #!, seguido do caminho do interpretador. Veja um exemplo de script Tcl/Tk, e note a especicao do caminho para o interpretador correto, no caso, o wish (adaptado de [7]):
# ! / u s r / b i n / wish set a p a c h e c t l "/usr/local/apache/bin/apachectl" proc s t a r t { } { global a p a c h e c t l exec \ $ a p a c h e c t l s t a r t & } proc s t o p { } { global a p a c h e c t l exec \ $ a p a c h e c t l s t o p & } proc screen { } { frame . t o p borderwidth 10 pack . t o p f i l l x b u t t o n . t o p . s t a r t text "Start Apache" command s t a r t b u t t o n . t o p . s t o p text "Stop Apache" command s t o p pack . t o p . s t a r t . t o p . s t o p side l e f t padx 0p pady 0 } screen

Listing 2: Tcl Script Este script apresenta uma forma conveniente de se iniciar ou restartar o Apache HTTP Server, usando a biblioteca grca tk. Particularmente, scripts desenvolvidos em shell possuem uma grande exibilidade, permitindo a execuo simultnea de programas das mais diferentes formas, graas unio dos recursos do bash e o poder das ferramentas GNU.

IDEs Open Source

Uma IDE (Integrated Development Environment) caracteriza-se por um conjunto de ferramentas de programao (editor, compilador, debug, etc.) integradas em um nico ambiente. Nesta seo abordaremos o editor GNU/Emacs, o framework de desenvolvimento Eclipse e, nalmente, a IDE/RAD do ambiente KDE, o KDevelop.

3.1

O editor Emacs

No Linux, comum encontrarmos diversos editores que possuam facilidades para trabalhar com linguagens de programao. A presena do GCC em praticamente todas as distribuies leva o Linux a ser um sistema de especial interesse para desenvolvedores. Nesta seo abordaremos um editor especializado para programadores: o Emacs. O editor GNU Emacs foi desenvolvido por RMS e pela FSF (Figura 1), sendo o primeiro programa integrante do que seria o pacote GNU. Copyleft (C) 2004 LinuxBR.org 6

Linux: Ferramentas de Programao

Figura 1: FSF Logo O Emacs roda tanto em linha de comando quanto em modo grco. O modo grco bastante intuitivo, mesmo para no programadores. possvel redimensionar buffers, alterar o buffer clicando na barra de status com o boto direito do mouse, selecionar, copiar e colar textos de forma visual. Assim como o vim, o Emacs tambm trabalha com mltiplos buffers. Ao abrir o emacs sem nenhum parmetro, ele iniciar o buffer de Scratch (rascunho - nunca gravado) e de Messages (log de todas as mensagens do mini-buffer). O comando list-buffer (C-x C-b) lista todos os buffers disponveis. Na prpria listagem possvel nalizar um buffer, alternar de buffer, etc. A ltima linha do buffer, logo abaixo da linha de modo, chamada de mini-buffer, onde as mensagens do sistema so listadas, os comandos, etc. A linha de modo seria o equivalente barra de status encontrada em muitos programas, que apresenta informaes a respeito do nome do arquivo, nmero da linha, o major mode ativo, entre outras. Para sair do mini-buffer (cancelar um comando, por exemplo), digite C-g. O comando M-x utiliza o mini-buffer para a execuo de comandos e modos disponveis no Emacs pelo nome (tecle TAB para obter uma listagem dos mesmos). Neste caso, M a tecla Meta, muitas vezes representada pela tecla Alt ou ESC. No caso, M-x signica que para acessar o menu de comandos, deve-se teclar Alt seguido de x. Para programadores, o Emacs apresenta recursos especiais, como os modos de execuo chamados major modes, especcos para cada linguagem. Os modos incluem recursos de formatao e colorao de cdigo e extenses para o prprio Emacs, incluindo novos menus e teclas de atalho para realizar as mais diferentes operaes. Por exemplo, ao se abrir um cdigo C, o Emacs apresenta o menu: File Edit Options Buffers Tools C Help Ao abrir uma pgina em HTML, o menu passa a ser: File Edit Options Buffers Tools HTML SGML Help Da mesma forma, a linha de modo (status) alterada mostrando este fato. Por exemplo, ao editar este texto no Emacs, em tex-mode, tenho as seguintes informaes na minha barra de status (chamada de linha de modo):

--11:---F1

manual.tex

Wed Oct 20 10:15PM 0.20

(LaTeX Abbrev)--L384--C0--65

Alm das opes no menu, cada modo possui atalhos especcos, isto , algumas teclas assumem novos comportamentos. Por exemplo, em modo HTML a combinao C-c / fecha uma tag, e assim por diante. Entre os vrios recursos para programao disponveis no Emacs, destacam-se os modos de compilao, debug, comparao de cdigos e CVS. Em modo compile, o Emacs abrir um novo buffer com as mensagens de compilao retornadas pelo compilador escolhido. Ao utilizar o compile, possvel navegar pelas linhas que causaram o erro atravs da combinao C- (crase) ou pelo comando next-error. [5] Para chamar o modo compile, uma das formas atravs da tecla M-x compile. Por default, o comando de compilao o make -k, podendo ser substituido por qualquer outro no prprio mini-buffer, ou de forma denitiva, atravs da congurao do .emacs, que ser vista mais adiante. Copyleft (C) 2004 LinuxBR.org 7

Linux: Ferramentas de Programao

Figura 2: Emacs em modo AuCTeX O modo debug pode ser acessado atravs do comando (M-x) gdb. importante ressaltar que, no caso de um fonte em C, ser preciso compil-lo com o parmetro -g do gcc para que sejam adicionados smbolos de debug especcos do gdb. No cdigo fonte, adicione breakpoints com a sequncia C-x SPC, onde SPC refere-se tecla de espao, e C-x s teclas CTRL e x. De volta ao modo debug, dena o nome do programa a ser depurado com o comando le e execute o programa com o comando run. Para inspecionar o contedo de uma varivel, por exemplo, o comando print, seguido do nome da varivel. Para executar o programa passo-a-passo, digite n (ou next), e assim por diante. A referncia completa do gdb pode ser encontrada em sua respectiva manpage. Observe que, na medida em que o gdb executa um comando, o cursor no buffer do cdigo fonte posicionado na linha em questo. Isto demonstra a grande integrao entre o gdb e o Emacs. Outra ferramenta muito til que acompanha o Emacs o ediff. Atravs do comando M-x ediff, o Emacs compara 2 arquivos e apresenta de forma visual a diferena entre eles. Alm do modo ediff, o Emacs tambm apresenta o modo diff tradicional, para a gerao de patches, etc. Outras opes do Emacs, especialmente relevantes para edio de cdigo, podem ser ativadas no Menu de opes (Options), ou atravs do menu de comandos:

Tabela 2: Opes do Emacs Syntax highlighting Habilita expanso automtica de texto Realce de parnteses correspondentes Dene comportamento a uma tecla (ex: f3) Quebra de linha (global-font-lock-mode 1) (abbrev-mode 1) (show-paren-mode 1) (global-set-key [f3] eshell) (auto-ll-mode 1)

Estas conguraes so gravadas no diretrio $HOME do usurio, no arquivo .emacs, ao selecionar a opo Save Options do Menu. Os comandos da tabela correspondem a comandos de elisp (Emacs Lisp): a linguagem de desenvolvimento de extenses e do prprio arquivo de congurao do Emacs. Para alterar o compilador padro do modo compile, por exemplo, poderamos adicionar o seguinte ao nosso .emacs:

Copyleft (C) 2004 LinuxBR.org

Linux: Ferramentas de Programao

(add-hook 'c-mode-hook (lambda () (set (make-local-variable 'compile-command) (concat "gcc " buffer-file-name " -o " (file-name-sans-extension buffer-file-name)) )))
Essa funo, em elisp, dene o gcc como compilador padro (compile-command) do modo C (c-mode-hook), e automaticamente se encarrega de preencher o nome do arquivo com o nome do buffer ativo (buffer-le-name). Destacamos tambm algumas conguraes (Tabela 2), entre elas a expanso automtica de texto. H duas opes para a digitao automtica de texto no Emacs: a criao de um arquivo de abreviaturas, e utilizar o recurso de abreviao dinmica (dabbrev). Por padro, o recurso de abreviao dinmica est associado combinao M-/. Para criar abreviaturas pr-denidas, uma das formas via modo de comando: C-x a l (ou g, para global). Essa sequncia cria uma abreviatura para a palavra previamente digitada. Para utilizar a abreviatura, o comando C-x a e, ou (expand-abbrev), podendo ser associado a qualquer tecla. Ao sair do editor, ele perguntar se deseja gravas as abreviaturas para uso posterior. As abreviaturas podem ser globais ou locais. Caso sejam locais, sero especcas para um determinado modo (as abreviaturas de C no interferem nas abreviaturas de Java, etc.). O recurso de congurao de teclas tambm bastante til para as mais diversas operaes. Para denir a tecla F12 para o recurso de auto-complete, por exemplo, adicione as seguintes linhas ao .emacs:

(global-set-key [f12] 'dabbrev-expand) (define-key esc-map [f12] 'dabbrev-completion)


Na opo de colorao de cdigos, possvel customizar as cores, bastando acessar o modo list-facesdisplay. Selecione o comando a ser alterado e clique com o 3 boto (ou os 2 botes simultneos) para customizar a sua respectiva cor. Finalmente, possvel abrir um shell e executar os comandos do pacote GNU sem sair do emacs, graas ao eshell (M-x eshell). Como pode ser observado, o Emacs oferece recursos bastante sosticados dependendo da linguagem que se estiver trabalhando. Muitas possuem o suporte nativo do Emacs, como o HTML, Java, e claro, C/C++, mas muitos outros modos do Emacs podem ser encontrados na Internet. O grande nmero de undos armazenados em memria, o suporte a vrias entradas no clipboard, a interface grca de simples interao, a possibilidade de edio rpida atravs de teclas de atalho e os inmeros recursos embutidos no Emacs fazem dele um canivete suio, e tido por alguns como o diferencial entre um usurio newbie e um guru do Linux. Abaixo segue uma tabela com uma referncia rpida de alguns comandos do Emacs.

Tabela 3: Modo de comandos do Emacs C-g C-x C-s C-x C-c C-x b C-x 1 C-x u M-w/C-y C-s C-x g C-x k naliza ao (ESC ESC ESC) salva o buffer ativo naliza o editor muda de buffer apenas 1 buffer (unsplit) desfaz ltima alterao copiar/colar rea selecionada (C-SPC) busca uma string goto line naliza buffer

Em geral, as teclas Control e Meta (alt) ativam o modo de comando do Emacs (C-x, C-c, M-x, etc). Para mais informaes, consulte o help do prprio Emacs, com o comando: C-h i (modo info), seguido de m para menu, e a seo que desejar saber mais. Por exemplo: C-h i m emacs <ENTER> m programs. Tambm possvel obter informaes via apropos, como a listagem dos modos do Emacs: C-h a -mode$. Copyleft (C) 2004 LinuxBR.org 9

Linux: Ferramentas de Programao

3.2

Eclipse Framework

Nas sees anteriores apresentamos as ferramentas mais bsicas de programao, encontradas em praticamente todas as distribuies Linux. Entretanto, h um projeto Open-Source que tem apelo de mercado signicativo: o projeto Eclipse. O Eclipse uma IDE de programao e um framework, a partir do momento em que apresenta recursos de implementaes para o prprio Eclipse (pontos de extenso) e a possibilidade de se desenvolver ferramentas externas utilizando o Eclipse como base. O Eclipse usa o paradigma de componentizao, sendo todo baseado em plugins: mdulos que adicionam funcionalidades ao sistema. Um plugin geralmente adiciona uma perspectiva ao Eclipse, ou um tipo de arquivo ao wizard de criao de arquivos, aes (menus e cones) e recursos de congurao no menu de Preferncias. O projeto Eclipse (www.eclipse.org) disponibiliza verses da IDE para Linux, Windows, Solaris, MacOSX, etc. Ressalta-se a necessidade de bastante memria para a plataforma, pois ela bastante robusta e pode consumir uma parcela signicativa de recursos da mquina. O Eclipse vem por padro com o plugin JDT Java Developer Toolkit, alm de suporte a CVS e outras facilidades para o desenvolvimento dos prprios plugins. Ele to extensvel que pode funcionar no apenas como uma IDE, mas tambm como um leitor de sites RSS (com o plugin All The News), uma ferramenta de modelagem (com o plugin UML, disponvel no site do projeto), habilitar o suporte a proxy (com o plugin XParrots), interface com o banco de dados (com o plugin Quantum), etc. possvel encontrar os mais diversos plugins para Eclipse no site: http://www.eclipse-plugins.info. Vamos aos recursos do Eclipse para programadores: IDE multi-plataforma, por ser desenvolvida em Java/SWT (Standard Widget Toolkit). Validao de cdigo inline e auto-complete de cdigos congurvel. Extensibilidade, por ser orientado a componentes. Isso permite sua integrao com ferramentas externas de programao e containers, especialmente relevante para programadores Java (integrao com o Tomcat, JBoss, ferramentas de mapeamento, etc). Suporte a diversas linguagens de programao. Destaca-se o suporte nativo linguagem Java, e linguagem C/C++, atravs do plugin CDT, tambm integrante do projeto ocial. Modo de depurao sosticado, com perspectiva de Debug especca para cada linguagem suportada. Facilidades para programao O.O. (Perspectivas O.O.). Para instalar o Eclipse, basta descompact-lo para algum diretrio do sistema. Para instalar plugins, o procedimento o mesmo: basta descompactar o plugin para seus respectivos diretrios: /plugins (os pacotes componentes do plugin) e /features (recursos de atualizao, se houver). A partir da verso 3.x do Eclipse possvel instalar os plugins atravs do menu Help > Install Features > New Features., caso o plugin possua mdulo de atualizao pela Internet. A rea de trabalho do Eclipse chamada de Workbench, onde podemos visualizar a estrutura do projeto, a janela de mensagens (compilao, erros, etc), isto , tudo o que relevante para iniciarmos o desenvolvimento de nossos aplicativos. Para isso, o primeiro passo consiste na criao de um Projeto, atravs dos wizards disponveis no menu File > New > New Project. Depois de criado o projeto, o Eclipse ir sugerir a alterao da perspectiva, para que se inicie a criao de classes (para projetos O.O., como Java), fontes (File), etc. O Eclipse trabalha com o conceito de perspectivas, ou seja, vises diferentes da IDE para determinadas tarefas e linguagens. Por exemplo, ao se trabalhar com um projeto Java, utiliza-se a perspectiva Java, que por sua vez apresentar no workbench o editor Java, a estrutura do projeto organizada em pacotes e APIs, hierarquia de super e subtipos, opes de refactoring, ou seja, todos os elementos relevantes a um programador Java.

Copyleft (C) 2004 LinuxBR.org

10

Linux: Ferramentas de Programao

Figura 3: Eclipse com diversos plugins (VE, Tomcat, CDT, etc.)

Um recurso importante para iniciantes de Eclipse so os tutoriais apresentados logo no incio do programa. Eles levam o usurio a passar por diversos recursos da IDE, e ao mesmo tempo, desenvolver programas que vo desde uma classe a um plugin, e at a uma interface SWT, que a prpria biblioteca grca utilizada no desenvolvimento do Eclipse. Este recurso altamente recomendvel para quem est iniciando na plataforma, pois os tutoriais so breves (levam menos de 1 hora) e completos, apresentando de forma bastante explicativa os diversos aspectos da ferramenta. Depois de desenvolvido o programa, o Eclipse apresenta diferentes modos de execuo (menu Run, e Run as), o que permite a especicao da classe main, argumentos, classpath e outras conguraes especcas de ambiente que possam ser necessrias para a execuo do programa. Alm disso, o Eclipse guarda um histrico local de todas as mudanas que ocorreram em um determinado fonte, acessadas via menu do projeto (Compare With > Local History, muito til para acompanhar as modicaes no decorrer do desenvolvimento. Em suma, o Eclipse apresenta recursos sosticados para desenvolvedores, em especial para programadores Java. As facilidades no desenvolvimento O.O. so teis no apenas para programadores experientes, mas tambm para iniciantes, pois seus recursos facilitam bastante o aprendizado. Entretanto, o Eclipse bastante robusto e seu foco so projetos mais complexos. Alm disso, ainda exige bastante da mquina, especialmente memria. Sendo assim, para pequenos projetos as ferramentas que acompanham a distribuio, como o jed e o kate, muitas vezes so sucientes. Para iniciantes, h tambm ferramentas voltadas ao aprendizado, como o caso do BlueJ (www.bluej.org), uma ferramenta multi-plataforma desenvolvida para a aprendizagem da linguagem Java.

3.3

KDevelop

O ambiente de desenvolvimento que acompanha o KDE, o KDevelop, no poderia deixar de ser mencionado entre as principais ferramentas de desenvolvimento encontradas atualmente no Linux. O KDevelop uma IDE de programao bastante completa, que permite o desenvolvimento de aplicaes grcas ou console para Linux. Em uma analogia simplista, o KDeveloper seria o equivalente para Linux da ferramenta VC++. Entretanto, o KDevelop apresenta suporte a diversas linguagens (Bash, C/C++, Java, Pascal, Copyleft (C) 2004 LinuxBR.org 11

Linux: Ferramentas de Programao

Perl, PHP, Python, Ruby, entre outras) e bibliotecas (GTK, wxWidgets, ncurses, etc.). Entre seus recursos esto: gerenciamento de projetos, auto-complete, wizards, templates, debugger, etc. Porm, a disponibilidade de cada um varia de linguagem para linguagem. No momento, apenas a linguagem C/C++ apresenta o suporte completo da ferramenta, anal ela foi especialmente desenvolvida para a confeco de programas C++ para o KDE, com um adicional suporte para a API graca QT. Da mesma forma que o projeto Eclipse, o KDevelop tambm possui uma arquitetura baseada em plugins. Por m, o KDevelop tambm exvel no que diz respeito ao suporte a controle de verses: CVS, Perforce, Subversion e Clearcase. O KDevelop 3 possui a seguinte estrutura de interface:

Figura 4: KDevelop

Para criar uma aplicao, a forma mais simples utilizar o Wizard. Selecione Projeto > Novo Projeto, no Menu do KDevelop. O wizard apresentar uma srie de templates, ou modelos. Para um projeto C++, isso envolve a criao de uma funo main(), alm de construtores/destrutores para a classe. No caso, selecione C++ > KDE > Simple KDE App, e chame-o de KHello, por exemplo. Tente compilar. Caso no funcione, provavelmente o KDevelop no encontrou os caminhos das variveis de ambiente QTDIR e KDEDIR, que podem ser conguradas em Project > Project Options > Congure. Selecione Project > Build Conguration > default para sair do modo debug neste primeiro momento do desenvolvimento. Em Project Options selecione Make Options > Abort on rst error.

3.4

Qt Designer

Com a integrao ao QtDesigner, o KDevelop passa a ser uma verdadeira ferramenta RAD (Rapid Application Development). Apesar do QtDesigner incluir tambm um editor de cdigo, utilizaremos o KDevelop para tanto. Uma interface grca, ou Form, possui a extenso .ui, para que possa ser processada pelo uic, o programa que gera o .cpp e .h correspondentes interface. O KDevelop responsabiliza-se por este processo. Sendo assim apenas precisamos criar o Form.

Copyleft (C) 2004 LinuxBR.org

12

Linux: Ferramentas de Programao

Selecione File > New, e o template Widget. Chame-o de khellodlg.ui, e selecione a checkbox Add to project. Conrme a tela seguinte, e ele dever ser adicionado ao Automake Manager. Clique duas vezes no novo arquivo para editar a interface. Depois de adicionar a ui, ser preciso rodar Automake antes de compilar o programa. A primeira coisa a ser alterada o nome do Form. Chame-o de KHello. Agora vamos adicionar widgets, ou componentes, nossa aplicao. Insira um Label e tambm um boto (Pushbuttom). No desenho da interface, muitas vezes til adicionar Spacers, para que o layout se mantenha independente do tamanho da janela, j que os widgets no so dimensionados. [6] Isso encerra o desenvolvimento da interface. 3.4.1 Sinais e Slots

Uma particularidade das aplicaes Qt so os signals/slots utilizados para a comunicao entre os objetos da tela, ao invs de callbacks, como encontrado em outras bibliotecas grcas. Por exemplo, um widget pode ter um sinal para o evento click() associado a um slot clear() de uma label, e assim por diante. Aps desenvolver o layout, o estgio nal envolve a criao das conexes de signals/slot (via cone, menu, ou a tecla de atalho F3). Depois de selecionar a opo Signal, selecione o boto criado anteriormente e arraste at o m do formulrio. Em seguida, clique no boto Edit Slots, e digite o nome helloSlot(). Finalmente, para efetuar a conexo, associe ao boto o sinal clicked e o slot que acabamos de criar.

3.5

Consideraes Finais

Neste momento, de volta ao Automake Manager, nosso projeto consistir de 3 arquivos: khello.cpp, main.cpp e khellodlg.ui. Delete o khello.cpp, clique com o boto direito na khellodlg.ui e selecione Subclass Wizard. Preencha a opo Reformat source e crie um novo khello.cpp, com as mesmas propriedades da classe original. No main.cpp, ao invs de KMainWindow (aplicao KDE), como nossa aplicao QT, comente as linhas referentes a KApplication (KCmdLineArgs e a condio de RESTORE, antes de app.exec). Para implementar a funo de nosso boto, ou nosso slot, complemente a funo helloSlot, gerada automaticamente pelo KDevelop. Pronto. Para compilar nosso programa lembre-se de seguir os passos: 1. Build > Run automake & friends 2. Build > Run Congure 3. Build > Build Project 4. Build > Execute Program Isso naliza a criao de nossa aplicao. Em verses mais novas do KDeveloper nossa aplicao poderia ter sido criada pelo wizard Simple Designer Application, sem nenhuma interveno no cdigo.

Controle de verso

Em um projeto de software, essencial que haja algum tipo de controle de fontes, para possibilitar que mltiplas pessoas trabalhem no mesmo conjunto de arquivos, sem sobrescrever o trabalho do outro. A forma mais simples de controle atravs de locking de arquivos: se algum abrir um arquivo para edio, ningum poder edit-lo at que o arquivo seja liberado. Em aplicaes complexas, a manuteno das alteraes um fator essencial, seja para ter um acompanhamento do processo, seja para debug, evitando a passagem bugs despercebidos. Com um sistema adequado de desenvolvimento com controle de verses, caso haja um problema na aplicao, possivel retornar para a verso anterior, funcional, e assim permitir que os desenvolvedores trabalhem em solucoes melhores para o problema sem afetar o projeto como um todo. Copyleft (C) 2004 LinuxBR.org 13

Linux: Ferramentas de Programao

4.1

CVS

CVS um sistema de controle de verso tradicional em sistemas Linux. A utilizao do CVS basicamente envolve um check-out, e posteriores check-ins de cdigo pelo desenvolvedor. O checkout cria a pasta do projeto em seu computador, e efetuado na primeira vez que um desenvolvedor ir trabalhar com um projeto previamente armazenado em um repositrio. Aps alteraes nos programas, efetua-se o commit, e a cada check-in uma nova verso criada, documentada e armazenada no repositorio. Na realidade, apenas as diferenas entre as verses so de fato armazenadas no repositrio. Os arquivos no repositrio no so backups, mas sim arquivos (com a extensao ,v), que guardam apenas as modicaes no projeto original e meta-dados para a recuperao da verso.[2] A criao de um sistema CVS consiste na denio de um repositrio, que ser o responsvel por armazenar todas as revises dos seus arquivos. O uso mais comum do CVS a manuteno de verses de programas (cdigo fonte), porm ele pode ser utilizado para gerenciar qualquer tipo de arquivo, de editorao de imagens, criao de videos a listas de supermercados. Um repositrio tambm pode armazenar mltiplos projetos (chamados mdulos). O CVS pode rodar como pserver (servio) ou localmente. A forma mais simples congurar um repositrio local e efetuar o acesso via SSH, o que elimina a necessidade de congurao de um servidor, apenas de um cliente e um repositrio. Para congurar um repositrio CVS, so necessrios 3 passos: 1. Denir o meio de acesso ao CVS

$ export CVS_RSH=ssh
A forma de conexo via RSH/SSH (EXT) apenas trabalha com as portas default. 2. Denir o repositrio: setar a varivel de ambiente CVSROOT

$ export CVSROOT=:ext:user@localhost:/home/username/projetos/cvs
Onde o caracter de : age como separador entre o mtodo de acesso (ext, server ou local), o IP do repositrio e o caminho no lesystem, respectivamente. 3. Iniciar o repositrio

$ cvs -d /home/user/projeto/cvs init


Para adicionar um mdulo ao repositrio:

$ export CVSROOT=:ext:user@localhost:/home/username/projetos/cvs $ cd nome_do_projeto/ $ cvs import projeto username start


Onde projeto ser o nome do mdulo, username a vendor tag, ou o dono do projeto, e por ltimo a release tag, um nome representativo primeira verso do projeto. E nalmente, utilizando o CVS. 1. Efetuar o primeiro checkout, caso ainda no tenha participado do projeto.

$ cvs checkout projeto (ou simplesmente, cvs co projeto)


2. Gravar as alteraes no repositrio: commit Copyleft (C) 2004 LinuxBR.org 14

Linux: Ferramentas de Programao

$ cvs commit
3. Adicionar arquivos ao repositrio: add

$ cvs add nome_arquivo


4. Manter o repositrio em sincronia e vericar alteraes: update e diff

$ cvs update $ cvs -Q diff


Caso alteraes sejam feitas no mesmo arquivo, o CVS far o merge. Caso as alteraes tenham sido feitas no mesmo local, o CVS marcar os arquivos como conitantes, e desta forma voc ter que fazer o merge manual nas regies marcadas. Vale lembrar que os principais editores e IDEs (como Emacs e Eclipse) possuem recursos de CVS nativos, isto , os comandos envolvidos no check-out/check-in so transparententes ao desenvolvedor.

4.2

Subversion

Alm do CVS, h uma ferramenta que tem ganho uma certa popularidade no controle de verses: o Subversion (SVN). Este sistema tem como proposta superar limitaes e falhas encontradas no CVS original. Ele prope-se a ser um substituto ao CVS, com operao similar, de forma a no exigir um novo aprendizado de quem j utilizava CVS em seus projetos. Entre os recursos adicionais apresentados pelo Subversion, destacam-se [1]: Versionamento de diretrios. Histrico real de verses: renomeaes e cpias so logadas, no apenas o contedo dos arquivos. Commits atmicos: caso haja um erro na transferncia ao repositorio, interrompa o processo e retome ao estado consistente. Versionamento de meta-dados: possibilidade de armazenar qualquer par arbitrrio de chave/valor (ou propriedades) de arquivos e diretrios. Subversion requer a APR (Apache Portable Runtime Library ), o que possibilita sua compilao em qualquer S.O. suportado pelo httpd server apache. Ele pode rodar como um mdulo do Apache (mod_dav_svn) ou standalone (svnserver), via SSH.

Referncias
[1] B. C. et al. Version Control with Subversion. Web: http://svnbook.red-bean.com/, 2004. [2] K. Fogel. Open Source Development With CVS. Web: http://cvsbook.red-bean.com/, 2000. [3] M. G. BASH Programming - Introduction HOW-TO. HOWTO.html, 2000. Web: http://www.tldp.org/HOWTO/Bash-Prog-Intro-

[4] S. Heroor. C editing with VIM - HOWTO. Web: http://www.tldp.org/HOWTO/C-editing-with-VIM-HOWTO/, 2001. [5] S. Mahajan. The Emacs Editor. Web: http://www.aims.ac.za/resources/tutorials/emacs/. [6] A.-M. Mahfouf. Qt Designer and http://women.kde.org/articles/tutorials/kdevelop3/. KDevelop-3.0 with for Tcl/Tk beginners. Mini-HOWTO. Web: Web:

[7] S. J. Peralta. Scripting Graphical Commands http://www.tldp.org/HOWTO/Scripting-GUI-TclTk/, 2003.

Copyleft (C) 2004 LinuxBR.org

15

You might also like