150 likes | 233 Views
Ambiente de desenvolvimento. Curso de Nivelamento LCG - 2004. Sistemas Operacionais. Duas escolha + óbvias Microsoft Windows (98 / NT / 2000 / XP / ?) Grande base instalada 90% dos computadores pessoais usam Windows Popular e relativamente fácil de usar
E N D
Ambiente de desenvolvimento Curso de Nivelamento LCG - 2004
Sistemas Operacionais • Duas escolha + óbvias • Microsoft Windows (98 / NT / 2000 / XP / ?) • Grande base instalada • 90% dos computadores pessoais usam Windows • Popular e relativamente fácil de usar • Grande base de software disponível • Vulnerável • 99.9% dos vírus são desenhados para explorar fraquezas do Windows • Estabilidade precária • Proprietário ($) • Microsoft é a única detentora dos fontes e direitos • Microsoft Product Activation • Qualquer bug/defeito/inconveniência precisa ser reconhecido e corrigido pela Microsoft
Linux • Gratuito • Open-source • Fontes são abertos -> bugs / características podem ser consertados e alterados por qualquer pessoa • Ganhando popularidade • Grande base de software • Menos que windows, porém mais que windows se considerarmos softwares de custo zero • Diversidade de distribuições • RedHat / Mandrake / Suse / Debian / etc • vantagem ou uma desvantagem?
Plataformas de desenvolvimento • Gnu (free-source) • Compiladores C, C++, Pascal, Fortran, Java, etc • Disponíveis também em Windows • Cygwin (Ambiente pseudo-windows) • Mingw32 (Minimalistic Gnu for Windows-32) • Windows • Visual – XXX (Microsoft) • XXX – Builder (Borland) • Algumas ferramentas portadas para Linux (Kylix) • Outras • Java (Sun)
Pragmática do desenvolvimento • Algoritmos e estruturas de dados • Alguns têm que ser desenvolvidos • Muitos podem ser reutilizados • Bibliotecas • Componentes • Aplicações prontas • Programação • Linguagem • Imperativa / Funcional / Declarativa ? • OO ou não ? • Compilada ou Interpretada? • Disciplina de programação • OO / Programação Estruturada / Outras
Pragmática do desenvolvimento • Edição / Compilação / Execução • IDEs (Integrated Development Environments) ou Editores de Texto “espertos” • Edição de vários arquivos simultaneamente • Realce de Sintaxe • Integração com compiladores para achar linhas de código erradas • Exemplos: Kate, Emacs, Nedit, Crimson Editor (windows) • Make • Depuração • Inspeção visual • Prints • Asserts • Debuggers
Ferramentas GNU • Variantes de ferramentas historicamente ligadas ao Unix • Compiladores • gcc (C) • g++ (C++) • g77 (Fortran-77) • Bibliotecas • runtime (chamadas do sistema operacional) • glib (I/O, matemática, etc) • STL (C++ Standard Template Library) • muitas outras
Exemplo: Digitando • Programa simples digitado com editor “esperto” • Realce de sintaxe • Balanceamento de terminadores (aspas, chaves, etc)
Exemplo: Rodando o programa • Programa salvo como exemplo0.c • Compilando: $ gcc –O -c exemplo0.c • Gerando executável: $ gcc -o exemplo0 exemplo0.o • Executando: $ exemplo0 abc def g Argumentos: 0: exemplo0 1: abc 2: def 3: g
Compilador gcc • gcc opção1 ... opçãoN arquivo1 ... arquivoN • Algumas opções -o nome executável terá este nome (default = a.out) -c apenas compile, não gere executável -O otimize código -g gere informações para depuradores -Idir procure includes em dir -Ldir procure bibliotecas em dir -lbib junte (link) biblioteca bib
Compilador gcc • Exemplos • gcc -o exemplo1 exemplo1.c • gcc –g –O –I/usr/local/include –o exemplo2 main.c\part1.c part2.c part3.o –L/usr/local/lib –lcurses
Compilando um programa • As opções de compilação necessárias para compilar um programa podem ser bastante complicadas • Um programa pode ser composto de muitas unidades de compilação (fontes) • Se um fonte é alterado, não queremos compilar todos, mas apenas os afetados • Solução: Usar uma ferramenta chamada make • Solução alternativa: usar IDEs e “Projetos” • Não tão legal: projetos são arquivos de formato proprietário e tipicamente binários
Make • Ferramenta para construção de arquivos (tipicamente programas executáveis) a partir de seus componentes • Uso: make?-f makefile? ?target? • makefile • arquivo de instruções • default: makefile ou Makefile • target • programa ou arquivo se quer construir • default: o primeiro target to makefile
Makefile • regras • 2 partes: • dependências target: dependência, ... dependência • comando (opcional): diz como construir target • regras podem ser implícitas (genéricas) ou explícitas (específicas) • variáveis variável = valor • comentários # comentário • diretivas • Incluir outro makefile • compilação condicional
Tabs, não espaços! Makefile: exemplo CC = gcc CFLAGS = -O .c.o: $*.h $(CC) $(CFLAGS) -c $*.c exemplo: part1.o main.o $(CC) $(CFLAGS) -o $@ $^