36
Software Livre dentro das possibilidades acadêmicas

Calourada2010

Embed Size (px)

DESCRIPTION

Apresentação feita no Calourada Livre 2010 na Universidade Federal de Itajubá

Citation preview

Page 1: Calourada2010

Software Livredentro daspossibilidades acadêmicas

Page 2: Calourada2010

Tudo tem um começo...

Page 3: Calourada2010

E um fim que queremos evitar...

5 anos pra isso?

Head Hunter

Page 4: Calourada2010

A universidade é um espaço para aprender e experimentar...

Page 5: Calourada2010

Queria achar uma coisa legal p/ fazer....

Já passou em Cálculo?

Mas com pouco tempo de aula vão perceber...

Page 6: Calourada2010

Mostrar como o Sofware Livre pode ajudar a entender algumas matérias na graduação e como isso pode te ajudar no futuro.

Page 7: Calourada2010

Antes de  focarmos em argumentos  técnicos, precisamos compreender o conceito sobre as liberdades  essenciais  para  um  sofware  ser considerado livre.

0. A liberdade para executar o programa, para qualquer propósito

1. A liberdade de estudar como o programa funciona, e adaptá­lo para as suas necessidades 

2. A liberdade de redistribuir, inclusive vender, cópias de modo que você possa ajudar ao seu próximo

3. A liberdade de modificar o programa, e liberar estas modificações, de modo que toda a comunidade se beneficie

Page 8: Calourada2010

E toda jornada tem um começo...

É preciso andar por onde a estrada vai de modo a unir o que você aprende dentro da universidade com o que é praticado fora dela. 

Page 9: Calourada2010

FPGA, SoC, ...

Dataware House

Banco de Dados

Sistemas Embarcados

Compiladores

Virtualização

Jogos

Simulação

Web

Escalabilidade

Sistemas de comunicação

Sistemas Operacionais

RTOS

Arquitetura de Processadores

CAD

Drivers

Office*

A lista de áreas não é pequena...

...nem as soluções oferecidas.

Servidores GUI

Page 10: Calourada2010

Como eu posso começar então?

Page 11: Calourada2010

A primeira parte diz respeito a familiarização com as ferramentas básicas. 

Page 12: Calourada2010

Pré­requisito

1) Instalar alguma distribuição GNU/Linux.

2) Se familiarizar com a interface da linha de comando.

 

Page 13: Calourada2010

Nos primeiro semestres, nas parte que envolvem software temos:

 Introdução a Programação Estrutura de Dados Programação Orientada a Objeto (POO)

A  primeira  coisa  é  um  compilador  para executar  seus  testes.  Vale  a  pena  estudar  e conhecer as opções do  GCC.

A  segunda  coisa  é  um  depurador  para executar  seus  testes.  Vale  a  pena  estudar  e conhecer as opções do GDB.

Page 14: Calourada2010

 

GNU Compiler Collection 

gcc exemplo.c ­o exemplo.exe

Executável do compilador               (gcc ou g++)

Código­fonte (lembre­se da extensão)

Este parâmetro idica um nome de saída,se nada for definido o padrão é a.out

Arquivo de saída

Page 15: Calourada2010

 

GNU Compiler Collection 

gcc ­Wall ­ggdb exemplo.c ­o exemplo.exe 

Habilita todas as warnings que alguns usuários consideram questionáveis e que são fáceis de evitar (ou modificar para previnir)

Gera as informações de debug para o GDB

Page 16: Calourada2010

#include <stdio.h>

int main(int argc, char *argv[]) {

    printf(“Olá Mundo!\n”);    return 0;}

$ gcc ­Wall ­ggdb exemplo.c ­o exemplo.exe 

$ ./exemplo.exe Olá Mundo!

Compilar o programa:

E executar o código:

Page 17: Calourada2010

E se alguma coisa der errado?

Se você rodar o programa e ele não funcionar da forma como você pretendia?

Page 18: Calourada2010

 

GNU Debugger 

gdb exemplo.exe

Executável do depurador       

Arquivo executável (ELF)

Page 19: Calourada2010

$ gdb ­q exemplo.exeReading symbols from /home/maluta/exemplo.exe...done.

GNU Debugger 

(gdb) l1       #include <stdio.h>23       int main(int argc, char *argv[]) {456               printf("Olá Mundo!\n");7               return 0;8       }

(gdb) rStarting program: /home/maluta/exemplo.exeOlá Mundo!

http://www.coding.com.br/programacao/basico­de­ponteiros­com­o­gdb/

Page 20: Calourada2010

Além disso é preciso entender ferramentas que não se aprendem na escola...

Page 21: Calourada2010

Dominar  algum  software  que  faça  o controle de versão do seu código. 

Existem vários,  vale  a pena entender pelo menos:

GIT [git]

Mercurial [hg]

Bazaar [bzr]

Dominar  algum  software  que  faça  a automatização  na  construção  do  seu executável. 

Existem vários,  vale  a pena entender pelo menos:

autotools

cmake

scons

Page 22: Calourada2010

 Python 

Bônus

ex.

Parser Visualização

Page 23: Calourada2010

# -*- coding: utf-8 -*-from pylab import *

N = 100start = 0end = 1

A = rand()B = rand()

x = linspace(start,end,N)y = A*x + By += randn(N)/10

p = polyfit(x,y,1)

figure()

title('Regressao linear')plot(x,y,'o',label='A=%.2f, B=%.2f' % (A,B))plot(x,polyval(p,x),'-',label='A=%.2f, B=%.2f' % tuple(p))legend(loc='best')

show()

Um exemplo comum é fazer uma regressão linear (muito utilizado nas atividades práticas de física) 

$ python reglin.py

Page 24: Calourada2010
Page 25: Calourada2010

Lá pela metade do curso novidades que irão refinar seu conhecimento aprendido na base. 

Design Patterns

Banco de Dados

Redes

Sistemas Operacionais

Page 26: Calourada2010

Design Patterns

Sua utilização na maioria dos casos será intuitiva, o quanto antes você se acostumar com a prática melhor será seu código. Os padrões de desenvolvimento são utilizados em programas que utilizam Interface Gráfica, acesso a Banco de Dados, ...

Mas também em código estruturais, como o kernel.

Page 27: Calourada2010

Sistemas Operacionais

Os livros tradicionais que abordam S.O são teóricos, abordam o conceito mas não a prática.

O kernel Linux ao longo do tempo foi sendo aprimorado, são boas fontes de informação:

 Source :­) Documentation/ Linux Kernel Maillist (lkml) Livro: Linux Kernel Development  (Robert Love) Livro: Essencial Linux Device Drivers (Sreekrishnan Venkateswaran)

Page 28: Calourada2010

Banco de Dados

Conheçer os wrappers de acesso, novamente o Python é um começo.

MySQL é um bom começo, mas infelizmente a industria é voltada também as soluções proprietárias

BD orientado a objeto é uma promessa.

Page 29: Calourada2010

Redes

Primeiro terreno que o Linux se tornou popular.

Servidor de páginas (ex:. Apache)Servidores de Impressão (ex.: CUPS)Servidores de Arquivos  (ex.: proftpd)

O NFS (Network File System) que além se ser uma das melhores maneiras de compartilhar arquivos é utilizado no desenvolvimento de sistemas embarcadose em algumas implementações de clusters.

O 9P (Plan 9 Filesystem Protocol) utilizado no Plan9

O sistemas distribuídos criaram situações onde outras soluções foram propostas,No âmbito geral conhecer CORBA e o D­BUS 

Servidores de Email  (ex.: postfix)

Page 30: Calourada2010

Tem muitas coisa para nos manter entretidos... 

E olha que faltou falar de muita coisa...

Page 31: Calourada2010

Conclusão

Page 32: Calourada2010

A universidade vai te ensinar pouca coisa sobre software livre.

Page 33: Calourada2010

Tente aliar os dois lados: matérias vs. aprendizado prático

Page 34: Calourada2010

Tenha o espírito hacker.

Page 35: Calourada2010

Tenha paciência, não é do dia p/ noite que você vai entender as coisas.

Page 36: Calourada2010

www.twitter.com/maluta

Obrigado pela atenção

www.coding.com.br

Tiago Maluta

Imagens utilizadas em  http://www.flickr.com/photos/st3f4n/sets/72157616350171741/