View
377
Download
0
Category
Preview:
DESCRIPTION
Apresentação feita no Calourada Livre 2010 na Universidade Federal de Itajubá
Citation preview
Software Livredentro daspossibilidades acadêmicas
Tudo tem um começo...
E um fim que queremos evitar...
5 anos pra isso?
Head Hunter
A universidade é um espaço para aprender e experimentar...
Queria achar uma coisa legal p/ fazer....
Já passou em Cálculo?
Mas com pouco tempo de aula vão perceber...
Mostrar como o Sofware Livre pode ajudar a entender algumas matérias na graduação e como isso pode te ajudar no futuro.
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
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.
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
Como eu posso começar então?
A primeira parte diz respeito a familiarização com as ferramentas básicas.
Prérequisito
1) Instalar alguma distribuição GNU/Linux.
2) Se familiarizar com a interface da linha de comando.
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.
GNU Compiler Collection
gcc exemplo.c o exemplo.exe
Executável do compilador (gcc ou g++)
Códigofonte (lembrese 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
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
#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:
E se alguma coisa der errado?
Se você rodar o programa e ele não funcionar da forma como você pretendia?
GNU Debugger
gdb exemplo.exe
Executável do depurador
Arquivo executável (ELF)
$ 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/basicodeponteiroscomogdb/
Além disso é preciso entender ferramentas que não se aprendem na escola...
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
Python
Bônus
ex.
Parser Visualização
# -*- 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
Lá pela metade do curso novidades que irão refinar seu conhecimento aprendido na base.
Design Patterns
Banco de Dados
Redes
Sistemas Operacionais
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.
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)
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.
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 DBUS
Servidores de Email (ex.: postfix)
Tem muitas coisa para nos manter entretidos...
E olha que faltou falar de muita coisa...
Conclusão
A universidade vai te ensinar pouca coisa sobre software livre.
Tente aliar os dois lados: matérias vs. aprendizado prático
Tenha o espírito hacker.
Tenha paciência, não é do dia p/ noite que você vai entender as coisas.
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/
Recommended