Software Livre dentro das possibilidades acadêmicas
Tudo tem um começo...
E um fim que queremos evitar... Head Hunter 5 anos pra isso?
A universidade é um espaço para aprender e experimentar...
Mas com pouco tempo de aula vão perceber... Queria achar uma coisa  legal p/ fazer.... Já passou em Cálculo?
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.
A lista de áreas não é pequena... ...nem as soluções oferecidas. 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* 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 .
G NU  C ompiler  C ollection  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
G NU  C ompiler  C ollection  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?
G NU  D e b ugger  gdb exemplo.exe Executável do depurador  Arquivo executável (ELF)
$ gdb -q exemplo.exe Reading symbols from /home/maluta/exemplo.exe...done. G NU  D e b ugger  (gdb) l 1  #include <stdio.h> 2 3  int main(int argc, char *argv[]) { 4 5 6  printf(&quot;Olá Mundo!\n&quot;); 7  return 0; 8  } (gdb) r Starting program: /home/maluta/exemplo.exe Olá Mundo! http://www.coding.com.br/programacao/basico-de-ponteiros-com-o-gdb/
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 = 100 start = 0 end = 1 A = rand() B = rand() x =  linspace (start,end,N) y = A*x + B y +=  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=' bes t') 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.

Calourada2010

  • 1.
    Software Livre dentrodas possibilidades acadêmicas
  • 2.
    Tudo tem umcomeço...
  • 3.
    E um fimque queremos evitar... Head Hunter 5 anos pra isso?
  • 4.
    A universidade éum espaço para aprender e experimentar...
  • 5.
    Mas com poucotempo de aula vão perceber... Queria achar uma coisa legal p/ fazer.... Já passou em Cálculo?
  • 6.
    Mostrar como o Sofware Livre pode ajudar a entender algumas matérias na graduação e como isso pode te ajudar no futuro.
  • 7.
    Antes de focarmosem 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
  • 8.
    E toda jornadatem 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.
  • 9.
    A lista deáreas não é pequena... ...nem as soluções oferecidas. 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* Servidores GUI
  • 10.
    Como eu posso começar então?
  • 11.
    A primeira partediz respeito a familiarização com as ferramentas básicas.
  • 12.
    Pré-requisito 1) Instalaralguma distribuição GNU/Linux. 2) Se familiarizar com a interface da linha de comando.
  • 13.
    Nos primeiro semestres,nas parte que envolvem software temos: Introdução a Programação
  • 14.
  • 15.
    Programação Orientada aObjeto (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 .
  • 16.
    G NU C ompiler C ollection 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
  • 17.
    G NU C ompiler C ollection 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
  • 18.
    #include <stdio.h> intmain(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:
  • 19.
    E se algumacoisa der errado? Se você rodar o programa e ele não funcionar da forma como você pretendia?
  • 20.
    G NU D e b ugger gdb exemplo.exe Executável do depurador Arquivo executável (ELF)
  • 21.
    $ gdb -qexemplo.exe Reading symbols from /home/maluta/exemplo.exe...done. G NU D e b ugger (gdb) l 1 #include <stdio.h> 2 3 int main(int argc, char *argv[]) { 4 5 6 printf(&quot;Olá Mundo!\n&quot;); 7 return 0; 8 } (gdb) r Starting program: /home/maluta/exemplo.exe Olá Mundo! http://www.coding.com.br/programacao/basico-de-ponteiros-com-o-gdb/
  • 22.
    Além disso épreciso entender ferramentas que não se aprendem na escola...
  • 23.
    Dominar algum softwareque 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
  • 24.
    Python Bônus ex. Parser Visualização
  • 25.
    # -*- coding:utf-8 -*- from pylab import * N = 100 start = 0 end = 1 A = rand() B = rand() x = linspace (start,end,N) y = A*x + B y += 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=' bes t') show() Um exemplo comum é fazer uma regressão linear (muito utilizado nas atividades práticas de física) $ python reglin.py
  • 26.
  • 27.
    Lá pela metadedo curso novidades que irão refinar seu conhecimento aprendido na base. Design Patterns Banco de Dados Redes Sistemas Operacionais
  • 28.
    Design Patterns Suautilizaçã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 .
  • 29.
    Sistemas Operacionais Oslivros 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 :-)
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
    Livro: Essencial LinuxDevice Drivers
  • 35.
  • 36.
    Banco de DadosConheç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.