Linux - Ferramentas de Programação

Embed Size (px)

Citation preview

  • 8/4/2019 Linux - Ferramentas de Programao

    1/15

    Linux: Ferramentas de Programao

    1 Semana de Informtica

    v1.1 25 de outubro, 2004

    Camila CoelhoLinux User #215987

    Reinaldo SanchesLinux User #213980

  • 8/4/2019 Linux - Ferramentas de Programao

    2/15

    Sumrio

    1 Introduo 2

    2 Linha de comando 2

    2.1 O editor vi (M) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    2.2 Bash shell scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    3 IDEs Open Source 6

    3.1 O editor Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.2 Eclipse Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.3 KDevelop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.4 Qt Designer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    3.4.1 Sinais e Slots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.5 Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    4 Controle de verso 13

    4.1 CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.2 Subversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    1 Introduo

    Esse documento foi desenvolvido especialmente para a 1 Semana de Informtica da Faculdade Comuni-tria de Campinas. Neste mini-curso temos como objetivo apresentar as principais ferramentas livres e IDEsde desenvolvimento disponveis para Linux. O pblico-alvo inclui iniciantes em programao e interessados nautilizao dos recursos bsicos oferecidos pelas ferramentas de desenvolvimento open-source. Est fora do es-copo deste curso o que diz respeito a prticas de programao ou linguagens, que sero utilizadas apenas parafins demonstrativos. O cdigo fonte em LATEX 2 desse documento poder ser obtido posteriormente, no link:h t t p : / / l i n u x b r . o r g / .

    2 Linha de comando

    Uma das principais caractersticas de sistemas Un*x-like, como o Linux, a disponibilidade de ferramentaspoderosas na linha de comando (ou CommandLine Interface). Essas facilidades so especialmente importantespara administradores de sistema e programadores.

    As ferramentas GNU encontradas nas distribuies Linux apresentam funcionalidades muitas vezes indispon-veis em ferramentas grficas. A flexibilidade da linha de comando, que permite a utilizao de operadores lgicos(&& e ||), redirecionamento (>, ) e pipe (|), alm dos recursos de programao nativos da shell o inter-pretador de comandos, possibilita operaes que seriam trabalhosas e demoradas em GUIs.Entre as ferramentasbsicas 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 fileutils, sh-utils etextutils.

    A shell, por sua vez, a interface primria entre o usurio e o kernel, pois atravs dela que o usurio podeinteragir com o sistema, executando os comandos disponveis na distribuio GNU/Linux. Em geral, a shell queacompanha estas distribuies a Bourne-again Shell, mais conhecida por bash. Bash uma verso aprimoradada shell tradicional em sistemas Unix, a Bourne Shell (ou somente sh), incluindo tambm recursos de outrasshells 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 desenvolvi-dos geralmente para automatizar processos ou facilitar operaes que envolvam diferentes utilitrios e parme-

    http://linuxbr.org/http://linuxbr.org/
  • 8/4/2019 Linux - Ferramentas de Programao

    3/15

    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, deSolaris a HP-UX ou AIX. Esse fato explica sua grande popularidade. Seu uso mais comum para a edio rpidade 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 vimapresenta basicamente trs modos de operao: o modo de comandos (default), o modo de edio, e o modoex. Ao iniciar o vim, ele encontra-se no primeiro modo, o que difere de outros editores que iniciam no que seriao 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 insere o texto aps a palavra selecionada (append)x deleta a palavra selecionadadd deleta a linhau desfaz a ltima modificaov modo de seleoy copia a rea selecionadap 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:

    $ v i m - N n u m e r o . s h

    Utilizamos o parmetro -N para desabilitar recursos de compatibilidade com o vi antigo. Entre em modo deinsero e digite:

    # ! / b i n / b a s h

    e c h o " h e l l o w o r l d ! "

    O comando echo retorna uma mensagem na tela. Para gravar o script, entramos em modo ex. Para issotecle 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 gravarnosso 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 oparnteses, colchete, ou chaves correspondente ao caracter selecionado. Outro comando, especialmente rele-vante para programadores C o gd (Goto Declaration[4]), que leva o cursor de volta declarao da varivelselecionada.

    Copyleft (C) 2004 LinuxBR.org 3

  • 8/4/2019 Linux - Ferramentas de Programao

    4/15

    Linux: Ferramentas de Programao

    Em modo de edio, um atalho importante a combinao CTRL-P, que procura uma palavra semelhante ecompleta 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 modificados. O ! omite os avisos do vi.

    Para rodar o script que criamos, preciso indicar que o script executvel, e em seguida, o caminho para aexecuo:

    $ c h m o d + x n u m e r o . s h

    $ . / n u m e r o . s h

    A mensagem hello world dever aparecer na tela, indicando o sucesso da execuo do script. Para confirmarisso, a varivel do bash $? armazena o cdigo de retorno da ltima execuo (o cdigo 0 equivale ao sucessoda operao).

    Para que o vi mantenha as configuraes 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 de-senvolvimento de scripts para o atendimento de diversas necessidades. Abaixo, exemplificamos os principaisrecursos de um shell script:

    1. Interatividade

    Para aguardar um input do usurio, utiliza-se o comando read. Veja um exemplo abaixo:

    # ! / bin / bash## numero . sh : Meu p r i m e i r o s c r i p t .

    echo" D i g i t e u m n m e r o : "

    read varecho " O n m e r o : " \ $var

    Listing 1: Shell Script

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

    # ! / b i n / b a s h

    # n u m e r o . s h : s o m a o n m e r o i n f o r m a d o p o r 2 .

    e x p r $ 1 + 2

    Copyleft (C) 2004 LinuxBR.org 4

  • 8/4/2019 Linux - Ferramentas de Programao

    5/15

    Linux: Ferramentas de Programao

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

    $ . / n u m e r o . s h 1 5

    Para referncias de outras variveis teis do Bash, a melhor fonte o manual (manpage):

    $ m a n b a s h

    A seo PARAMETER da manpage do bash apresenta informaes completas a respeito de tratamento deparmetros 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 verificar se umparmetro foi realmente informado, utilizamos a expresso if:

    # ! / b i n / b a s h

    i f [ $ # - n e 1 ]

    t h e n

    e c h o " U t i l i z a o : . / n u m e r o . s h N U M E R O "

    e l s e

    e x p r $ 1 + 2

    f i

    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 seoCONDITIONAL EXPRESSIONS da manpagedo bash.

    Como pode ser observado, nosso programa no verifica se a entrada um caracter ou um nmero. NoBash, por padro, no h diferenciao de tipos. Uma forma de se verificar se o argumento numricoseria atravs de uma expresso regular, como no exemplo abaixo:

    # ! / b i n / b a s h

    c a s e " $ 1 " i n

    [ 0 - 9 ] * )

    e x p r $ 1 + 2 ; ;

    - h )

    e c h o " U t i l i z a o : . / n u m e r o . s h N U M E R O " ; ;

    * )

    e c h o " P a r m e t r o n o u m n m e r o . " ; ;

    e s a c

    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, geralmenteutilizado para a iterao entre palavras ou items, como pode ser observado a seguir:

    f o r i i n ` s e q 1 1 0 ` ;

    d o

    e c h o $ i

    d o n e

    Copyleft (C) 2004 LinuxBR.org 5

  • 8/4/2019 Linux - Ferramentas de Programao

    6/15

    Linux: Ferramentas de Programao

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

    C O U N T E R = 0

    w h i l e [ $ C O U N T E R - l t 1 0 ] ; d o

    e c h o " O c o n t a d o r : " $ C O U N T E R

    l e t C O U N T E R = C O U N T E R + 1

    d o n e

    Alm de shell scripts, h diversas linguagens script que podem ser teis para efetuar tarefas no sistema. Entreas mais comuns esto o Perl, o AWK, e a linguagem Tcl/Tk.

    Para identificar um script como relativo a uma shell (Bash, Korn) ou a alguma linguagem de script, utiliza-se anotao #!, seguido do caminho do interpretador. Veja um exemplo de script Tcl/Tk, e note a especificao docaminho para o interpretador correto, no caso, o wish (adaptado de [7]):

    # !/ usr / bin / wish

    se t a p a ch e ct l " / u s r / l o c a l / a p a c h e / b i n / a p a c h e c t l "

    proc s t a r t { } {

    global a p a ch e ct lexec \ $ a pa c he c t l s t a r t &}

    proc s to p { } {global a p a ch e ct lexec \ $ a p a che ct l s to p &

    }

    proc s cr ee n { } {f ra me . t o p borderwidth 10p ac k . t o p f i l l xb ut to n . t o p . s t a r t text " S t a r t A p a c h e " command s t a r tb u tt o n . t o p . s t o p text

    " S t o p A p a c h e "

    command stoppack . t o p . s t a r t . t o p . s t op side l e f t padx 0p pady 0

    }screen

    Listing 2: Tcl ScriptEste script apresenta uma forma conveniente de se iniciar ou restartar o Apache HTTP Server, usando a

    biblioteca grfica tk.Particularmente, scripts desenvolvidos em shell possuem uma grande flexibilidade, permitindo a execuo

    simultnea de programas das mais diferentes formas, graas unio dos recursos do bash e o poder das ferra-mentas GNU.

    3 IDEs Open Source

    Uma IDE (Integrated Development Environment) caracteriza-se por um conjunto de ferramentas de progra-mao (editor, compilador, debug, etc.) integradas em um nico ambiente. Nesta seo abordaremos o editorGNU/Emacs, o framework de desenvolvimento Eclipse e, finalmente, 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 linguagensde programao. A presena do GCC em praticamente todas as distribuies leva o Linux a ser um sistema deespecial interesse para desenvolvedores. Nesta seo abordaremos um editor especializado para programado-res: o Emacs. O editor GNU Emacs foi desenvolvido por RMS e pela FSF (Figura 1), sendo o primeiro programaintegrante do que seria o pacote GNU.

    Copyleft (C) 2004 LinuxBR.org 6

  • 8/4/2019 Linux - Ferramentas de Programao

    7/15

    Linux: Ferramentas de Programao

    Figura 1: FSF Logo

    O Emacs roda tanto em linha de comando quanto em modo grfico. O modo grfico bastante intuitivo,mesmo para no programadores. possvel redimensionar buffers, alterar o buffer clicando na barra de statuscom 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 parme-tro, ele iniciar o buffer de Scratch (rascunho - nunca gravado) e de Messages (log de todas as mensagens domini-buffer). O comando list-buffer (C-x C-b) lista todos os buffers disponveis. Na prpria listagem possvelfinalizar um buffer, alternar de buffer, etc.

    A ltima linha do buffer, logo abaixo da linha de modo, chamada de mini-buffer, onde as mensagens dosistema so listadas, os comandos, etc. A linha de modo seria o equivalente barra de status encontrada emmuitos programas, que apresenta informaes a respeito do nome do arquivo, nmero da linha, o major modeativo, 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 representadapela tecla Alt ou ESC. No caso, M-x significa que para acessar o menu de comandos, deve-se teclar Altseguido de x.

    Para programadores, o Emacs apresenta recursos especiais, como os modos de execuo chamados majormodes, especficos para cada linguagem. Os modos incluem recursos de formatao e colorao de cdigoe extenses para o prprio Emacs, incluindo novos menus e teclas de atalho para realizar as mais diferentesoperaes.

    Por exemplo, ao se abrir um cdigo C, o Emacs apresenta o menu:F i l e E d i t O p t i o n s B u f f e r s T o o l s C H e l p

    Ao abrir uma pgina em HTML, o menu passa a ser:F i l e E d i t O p t i o n s B u f f e r s T o o l s HTML SGML H e l p

    Da mesma forma, a linha de modo (status) alterada mostrando este fato. Por exemplo, ao editar este textono Emacs, em tex-mode, tenho as seguintes informaes na minha barra de status (chamada de linha de modo):

    - - 1 1 : - - - F 1 m a n u a l . t e x W e d O c t 2 0 1 0 : 1 5 P M 0 . 2 0 ( L a T e X A b b r e v ) - - L 3 8 4 - - C 0 - - 6 5

    Alm das opes no menu, cada modo possui atalhos especficos, isto , algumas teclas assumem novoscomportamentos. 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 mensagensde compilao retornadas pelo compilador escolhido. Ao utilizar o compile, possvel navegar pelas linhas quecausaram 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 comandode compilao o make -k, podendo ser substituido por qualquer outro no prprio mini-buffer, ou de formadefinitiva, atravs da configurao do .emacs, que ser vista mais adiante.

    Copyleft (C) 2004 LinuxBR.org 7

  • 8/4/2019 Linux - Ferramentas de Programao

    8/15

    Linux: Ferramentas de Programao

    Figura 2: Emacs em modo AuCTeX

    O modo debug pode ser acessado atravs do comando ( M - x ) g d b . importante ressaltar que, no casode um fonte em C, ser preciso compil-lo com o parmetro -g do gcc para que sejam adicionados smbolosde debug especficos do gdb. No cdigo fonte, adicione breakpoints com a sequncia C-x SPC, onde SPCrefere-se tecla de espao, e C-x s teclas CTRL e x.

    De volta ao modo debug, defina o nome do programa a ser depurado com o comando file e execute oprograma 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 emque 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 tambmapresenta 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 deopes (Options), ou atravs do menu de comandos:

    Tabela 2: Opes do Emacs

    Syntax highlighting (global-font-lock-mode 1)Habilita expanso automtica de texto (abbrev-mode 1)

    Realce de parnteses correspondentes (show-paren-mode 1)Define comportamento a uma tecla (ex: f3) (global-set-key [f3] eshell)Quebra de linha (auto-fill-mode 1)

    Estas configuraes so gravadas no diretrio $HOME do usurio, no arquivo .emacs, ao selecionar a opoSave Options do Menu. Os comandos da tabela correspondem a comandos de elisp (Emacs Lisp): a linguagemde desenvolvimento de extenses e do prprio arquivo de configurao do Emacs.

    Para alterar o compilador padro do modo compile, por exemplo, poderamos adicionar o seguinte ao nosso. e m a c s :

    Copyleft (C) 2004 LinuxBR.org 8

  • 8/4/2019 Linux - Ferramentas de Programao

    9/15

    Linux: Ferramentas de Programao

    ( a d d - h o o k ' c - m o d e - h o o k

    ( l a m b d a ( )

    ( s e t ( m a k e - l o c a l - v a r i a b l e ' c o m p i l e - c o m m a n d )

    ( c o n c a t " g c c " b u f f e r - f i l e - n a m e " - o "

    ( f i l e - n a m e - s a n s - e x t e n s i o n b u f f e r - f i l e - n a m e ) )

    ) ) )

    Essa funo, em elisp, define 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-file-name).

    Destacamos tambm algumas configuraes (Tabela 2), entre elas a expanso automtica de texto. H duasopes para a digitao automtica de texto no Emacs: a criao de um arquivo de abreviaturas, e utilizar orecurso de abreviao dinmica (dabbrev). Por padro, o recurso de abreviao dinmica est associado combinao M-/.

    Para criar abreviaturas pr-definidas, 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 desejagravas as abreviaturas para uso posterior. As abreviaturas podem ser globais ou locais. Caso sejam locais, seroespecficas para um determinado modo (as abreviaturas de C no interferem nas abreviaturas de Java, etc.).

    O recurso de configurao de teclas tambm bastante til para as mais diversas operaes. Para definir a

    tecla F12 para o recurso de auto-complete, por exemplo, adicione as seguintes linhas ao. e m a c s

    :( g l o b a l - s e t - k e y [ f 1 2 ] ' d a b b r e v - e x p a n d )

    ( d e f i n e - k e y e s c - m a p [ f 1 2 ] ' d a b b r e v - c o m p l e t i o n )

    Na opo de colorao de cdigos, possvel customizar as cores, bastando acessar o modo list-faces-display. Selecione o comando a ser alterado e clique com o 3 boto (ou os 2 botes simultneos) para customizara sua respectiva cor.

    Finalmente, possvel abrir um shell e executar os comandos do pacote GNU sem sair do emacs, graas aoeshell (M-x eshell).

    Como pode ser observado, o Emacs oferece recursos bastante sofisticados dependendo da linguagem que seestiver trabalhando. Muitas possuem o suporte nativo do Emacs, como o HTML, Java, e claro, C/C++, mas muitosoutros 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 grfica de simples interao, a possibilidade deedio rpida atravs de teclas de atalho e os inmeros recursos embutidos no Emacs fazem dele um canivetesuio, 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 finaliza ao (ESC ESC ESC)C-x C-s salva o buffer ativoC-x C-c finaliza o editorC-x b muda de bufferC-x 1 apenas 1 buffer (unsplit)

    C-x u desfaz ltima alteraoM-w/C-y copiar/colar rea selecionada (C-SPC)C-s busca uma str ingC-x g goto lineC-x k finaliza 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 e m a c s < E N T E R > m p r o g r a m s . Tambm possvel obter informaes via apropos, como a listagem dos modos do Emacs: C - h a - m o d e $ .

    Copyleft (C) 2004 LinuxBR.org 9

  • 8/4/2019 Linux - Ferramentas de Programao

    10/15

    Linux: Ferramentas de Programao

    3.2 Eclipse Framework

    Nas sees anteriores apresentamos as ferramentas mais bsicas de programao, encontradas em pratica-mente todas as distribuies Linux. Entretanto, h um projeto Open-Source que tem apelo de mercado significa-tivo: 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 ferramentasexternas utilizando o Eclipse como base. O Eclipse usa o paradigma de componentizao, sendo todo baseadoem plugins: mdulos que adicionam funcionalidades ao sistema. Um plugin geralmente adiciona uma perspectivaao Eclipse, ou um tipo de arquivo ao wizard de criao de arquivos, aes (menus e cones) e recursos deconfigurao 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 consumiruma parcela significativa de recursos da mquina.

    O Eclipse vem por padro com o plugin JDT Java Developer Toolkit, alm de suporte a CVS e outrasfacilidades para o desenvolvimento dos prprios plugins. Ele to extensvel que pode funcionar no apenascomo uma IDE, mas tambm como um leitor de sites RSS (com o plugin All The News), uma ferramenta demodelagem (com o plugin UML, disponvel no site do projeto), habilitar o suporte a proxy (com o plugin X-Parrots), interface com o banco de dados (com o plugin Quantum), etc. possvel encontrar os mais diversos

    plugins para Eclipse no site: h t t p : / / w w w . e c l i p s e - p l u g i n s . i n f o .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-completede cdigos configurvel.

    Extensibilidade, por ser orientado a componentes. Isso permite sua integrao com ferramentas externas deprogramao 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 lingua-gem C/C++, atravs do plugin CDT, tambm integrante do projeto oficial.

    Modo de depurao sofisticado, com perspectiva de Debug especfica 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 proce-dimento o mesmo: basta descompactar o plugin para seus respectivos diretrios: /plugins (os pacotes compo-nentes do plugin) e /features (recursos de atualizao, se houver). A partir da verso 3.x do Eclipse possvelinstalar os plugins atravs do menu H e l p > I n s t a l l F e a t u r e s > N e w F e a t u r e s ., caso o plugin possua mdulode atualizao pela Internet.

    A rea de trabalho do Eclipse chamada de Workbench, onde podemos visualizar a estrutura do projeto, ajanela de mensagens (compilao, erros, etc), isto , tudo o que relevante para iniciarmos o desenvolvimentode nossos aplicativos. Para isso, o primeiro passo consiste na criao de um Projeto, atravs dos wizardsdisponveis no menu F i l e > N e w > N e w P r o j e c t . Depois de criado o projeto, o Eclipse ir sugerir a alterao daperspectiva, 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 determinadastarefas e linguagens. Por exemplo, ao se trabalhar com um projeto Java, utiliza-se a perspectiva Java, que porsua vez apresentar no workbench o editor Java, a estrutura do projeto organizada em pacotes e APIs, hierarquiade super e subtipos, opes de refactoring, ou seja, todos os elementos relevantes a um programador Java.

    Copyleft (C) 2004 LinuxBR.org 10

    http://www.eclipse-plugins.info/
  • 8/4/2019 Linux - Ferramentas de Programao

    11/15

    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 quevo desde uma classe a um plugin, e at a uma interface SWT, que a prpria biblioteca grfica utilizada nodesenvolvimento 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 osdiversos aspectos da ferramenta.

    Depois de desenvolvido o programa, o Eclipse apresenta diferentes modos de execuo (menu Run, e Runas), o que permite a especificao da classe main, argumentos, classpath e outras configuraes especficasde 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 determinadofonte, acessadas via menu do projeto ( C o m p a r e W i t h > L o c a l H i s t o r y , muito til para acompanhar as modifica-es no decorrer do desenvolvimento.

    Em suma, o Eclipse apresenta recursos sofisticados para desenvolvedores, em especial para programado-res Java. As facilidades no desenvolvimento O.O. so teis no apenas para programadores experientes, mastambm para iniciantes, pois seus recursos facilitam bastante o aprendizado.

    Entretanto, o Eclipse bastante robusto e seu foco so projetos mais complexos. Alm disso, ainda exigebastante da mquina, especialmente memria. Sendo assim, para pequenos projetos as ferramentas que acom-panham a distribuio, como o jed e o kate, muitas vezes so suficientes. Para iniciantes, h tambm ferramentasvoltadas 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 mencionadoentre as principais ferramentas de desenvolvimento encontradas atualmente no Linux.

    O KDevelop uma IDE de programao bastante completa, que permite o desenvolvimento de aplicaesgrficas ou console para Linux. Em uma analogia simplista, o KDeveloper seria o equivalente para Linux daferramenta VC++. Entretanto, o KDevelop apresenta suporte a diversas linguagens (Bash, C/C++, Java, Pascal,

    Copyleft (C) 2004 LinuxBR.org 11

  • 8/4/2019 Linux - Ferramentas de Programao

    12/15

    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 linguagemC/C++ apresenta o suporte completo da ferramenta, afinal ela foi especialmente desenvolvida para a confecode programas C++ para o KDE, com um adicional suporte para a API grafica QT.

    Da mesma forma que o projeto Eclipse, o KDevelop tambm possui uma arquitetura baseada em plugins.

    Por fim, o KDevelop tambm flexvel 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, noMenu do KDevelop. O wizard apresentar uma srie de templates, ou modelos. Para um projeto C++, issoenvolve 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 deambiente QTDIR e KDEDIR, que podem ser configuradas em Project > Project Options > Configure.

    Selecione Project > Build Configuration > default para sair do modo debug neste primeiro momento do de-

    senvolvimento. Em Project Options selecione Make Options > Abort on first error.

    3.4 Qt Designer

    Com a integrao ao QtDesigner, o KDevelop passa a ser uma verdadeira ferramenta RAD (Rapid ApplicationDevelopment). Apesar do QtDesigner incluir tambm um editor de cdigo, utilizaremos o KDevelop para tanto.

    Uma interface grfica, ou Form, possui a extenso .ui, para que possa ser processada pelo uic, o programaque gera o .cpp e .h correspondentes interface. O KDevelop responsabiliza-se por este processo. Sendoassim apenas precisamos criar o Form.

    Copyleft (C) 2004 LinuxBR.org 12

  • 8/4/2019 Linux - Ferramentas de Programao

    13/15

    Linux: Ferramentas de Programao

    Selecione File > New, e o template Widget. Chame-o de khellodlg.ui, e selecione a checkbox Add to project.Confirme a tela seguinte, e ele dever ser adicionado ao Automake Manager. Clique duas vezes no novo arquivopara 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, oucomponentes, 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 datela, ao invs de callbacks, como encontrado em outras bibliotecas grficas.

    Por exemplo, um widget pode ter um sinal para o evento click() associado a um slot clear() de uma label, eassim por diante.

    Aps desenvolver o layout, o estgio final 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 arrasteat o fim 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.cppe 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 linhasreferentes 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 auto-maticamente pelo KDevelop.

    Pronto. Para compilar nosso programa lembre-se de seguir os passos:

    1. Build > Run automake & friends

    2. Build > Run Configure

    3. Build > Build Project

    4. Build > Execute Program

    Isso finaliza a criao de nossa aplicao. Em verses mais novas do KDeveloper nossa aplicao poderia tersido criada pelo wizard S i m p l e D e s i g n e r A p p l i c a t i o n , sem nenhuma interveno no cdigo.

    4 Controle de verso

    Em um projeto de software, essencial que haja algum tipo de controle de fontes, para possibilitar que ml-tiplas pessoas trabalhem no mesmo conjunto de arquivos, sem sobrescrever o trabalho do outro. A forma maissimples de controle atravs de locking de arquivos: se algum abrir um arquivo para edio, ningum poderedit-lo at que o arquivo seja liberado. Em aplicaes complexas, a manuteno das alteraes um fatoressencial, seja para ter um acompanhamento do processo, seja para debug, evitando a passagem bugs desper-cebidos.

    Com um sistema adequado de desenvolvimento com controle de verses, caso haja um problema na aplica-o, possivel retornar para a verso anterior, funcional, e assim permitir que os desenvolvedores trabalhem emsolucoes melhores para o problema sem afetar o projeto como um todo.

    Copyleft (C) 2004 LinuxBR.org 13

  • 8/4/2019 Linux - Ferramentas de Programao

    14/15

    Linux: Ferramentas de Programao

    4.1 CVS

    CVS um sistema de controle de verso tradicional em sistemas Linux. A utilizao do CVS basicamente en-volve um check-out, e posteriores check-ins de cdigo pelo desenvolvedor. O checkout cria a pasta do projetoem seu computador, e efetuado na primeira vez que um desenvolvedor ir trabalhar com um projeto previamentearmazenado em um repositrio. Aps alteraes nos programas, efetua-se o commit, e a cada check-in umanova verso criada, documentada e armazenada no repositorio. Na realidade, apenas as diferenas entre asverses so de fato armazenadas no repositrio. Os arquivos no repositrio no so backups, mas sim arquivos(com a extensao ,v), que guardam apenas as modificaes no projeto original e meta-dados para a recuperaoda verso.[2]

    A criao de um sistema CVS consiste na definio de um repositrio, que ser o responsvel por armazenartodas 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 comopserver (servio) ou localmente. A forma mais simples configurar um repositrio local e efetuar o acesso viaSSH, o que elimina a necessidade de configurao de um servidor, apenas de um cliente e um repositrio.

    Para configurar um repositrio CVS, so necessrios 3 passos:

    1. Definir o meio de acesso ao CVS

    $ e x p o r t C V S _ R S H = s s h

    A forma de conexo via RSH/SSH (EXT) apenas trabalha com as portas default.

    2. Definir o repositrio: setar a varivel de ambiente CVSROOT

    $ e x p o r t C V S R O O T = : e x t : u s e r @ l o c a l h o s t : / h o m e / u s e r n a m e / p r o j e t o s / c v s

    Onde o caracter de : age como separador entre o mtodo de acesso (ext, server ou local), o IP do

    repositrio e o caminho no filesystem, respectivamente.3. Iniciar o repositrio

    $ c v s - d / h o m e / u s e r / p r o j e t o / c v s i n i t

    Para adicionar um mdulo ao repositrio:

    $ e x p o r t C V S R O O T = : e x t : u s e r @ l o c a l h o s t : / h o m e / u s e r n a m e / p r o j e t o s / c v s

    $ c d n o m e _ d o _ p r o j e t o /

    $ c v s i m p o r t p r o j e t o u s e r n a m e s t a r t

    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 finalmente, utilizando o CVS.

    1. Efetuar o primeiro checkout, caso ainda no tenha participado do projeto.

    $ c v s c h e c k o u t p r o j e t o

    ( o u s i m p l e s m e n t e , c v s c o p r o j e t o )

    2. Gravar as alteraes no repositrio: commit

    Copyleft (C) 2004 LinuxBR.org 14

  • 8/4/2019 Linux - Ferramentas de Programao

    15/15

    Linux: Ferramentas de Programao

    $ c v s c o m m i t

    3. Adicionar arquivos ao repositrio: add

    $ c v s a d d n o m e _ a r q u i v o

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

    $ c v s u p d a t e

    $ c v s - Q d i f f

    Caso alteraes sejam feitas no mesmo arquivo, o CVS far o merge. Caso as alteraes tenham sido feitasno mesmo local, o CVS marcar os arquivos como conflitantes, e desta forma voc ter que fazer o mergemanual 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 aser um substituto ao CVS, com operao similar, de forma a no exigir um novo aprendizado de quem j utilizavaCVS 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 aoestado consistente.

    Versionamento de meta-dados: possibilidade de armazenar qualquer par arbitrrio de chave/valor (ou pro-

    priedades) 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 stan-dalone (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. Web: http://www.tldp.org/HOWTO/Bash-Prog-Intro-

    HOWTO.html, 2000.[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 KDevelop-3.0 for beginners. Web:http://women.kde.org/articles/tutorials/kdevelop3/.

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

    Copyleft (C) 2004 LinuxBR.org 15