SlideShare uma empresa Scribd logo
1 de 49
Baixar para ler offline
“Guiando os primeiros para iniciar o
desenvolvimento no ambiente Linux”




       Jorge Pereira                                    1
<jorge@jorgepereira.com.br>             23 de Abril de 2008
# Licença




            2
# who i'am?

       Meu nome é Jorge Pereira, tive meu primeiro
contato com o Linux por volta de 1996, trabalhando
durante muitos anos com soluções e consultorias
voltadas para sistemas OpenSource, atuando
durante esses anos como desenvolvedor, sysadmin,
instrutor e palestrante. Atualmente trabalhando como
desenvolvedor C/C++ & Embedded Systems.



                                                       3
# Objetivos
   Apresentar ao profissional ou estudante acostumado
a programar em ambiente Windows ou qualquer outro
ambiente diferente do Linux, as ferramentas e
possibilidades disponíveis para programação em
ambiente Linux.
   Indicar caminhos para o desenvolvimento de
aplicações multiplataforma, como preparação para uma
futura migração ao Linux ou como forma de viabilizar
uma rede heterogênea

                                                    4
# Agenda

 Primeiros Passos
 A Cultura Windows x Linux
 Linguagens Suportadas
 Ferramentas
 Aplicações Gráficas
 Perguntas
 Se vira nos 30
 Contato
 Referências

                              5
# Primeiros Passos




                     6
# Primeiros Passos

 • Possuir o Linux instalado na máquina.
 • Conhecer o básico sobre o sistema.
 • Entender o básico sobre seu funcionamento.
 • Acesso a fontes de pesquisa.
 • Conhecimentos sobre programação.
 • Indicado conhecer o básico sobre licenças.
 • Por fim: Força de vontade.



                                                7
# Primeiros Passos / Vantagens
• Custo Zero.
• Open Source.
• Bugs podem ser consertados por qualquer pessoa.
• Maior flexibilidade.
• Vasta base de software.
• Utilização do Linux em aplicações embarcadas.
• Grandes empresas investindo na plataforma:
   • Motorola, Nokia, IBM, SUN, Oracle, Novell ...


                                                     8
# A Cultura Windows x Linux




                              9
# A Cultura Windows x Linux
• Como o SO fornecia apenas componentes de baixo
nível (e nenhuma ferramenta de apoio ao
desenvolvimento), as IDEs tornaram-se “inchados” e
incompatíveis entre si.
• As dificuldades do padrão *OCX fizeram com que
cada IDE fornecesse sua própria biblioteca de
componentes, de modo que o programador não
aproveita quase nada do seu knowhow ao mudar de
IDE.
                                    * (OLE Control Extension)


                                                          10
# A Cultura Windows x Linux

• Pior, frequentemente uma nova versão do mesmo IDE
é incompatível com aplicações desenvolvidas com
versões anteriores do mesmo IDE (ex: VB 4/5/6, Delphi
6/7)
• O foco nos desenhadores de formulários leva a
aplicações de difícil manutenção sem a ajuda dos
famosos “componentes”.




                                                        11
# A Cultura Windows x Linux



      E a cultura Linux?




                              12
# Linguagens Suportadas




                          13
# Linguagens Suportadas
 • C/C++
 • Python
 • Perl
 • PHP
 • Ruby
 • Java
 • Cobol
 • Fortran
 • Pascal
 • Lua
 • ...
                          14
# Linguagens Suportadas
 • C no Linux a linguagem de programação nativa é
 “C”, sua API padrão chama-se “Glibc – GNU
 Library C”, possuindo os principais recursos
 nativos abaixo:
 • Entrada/Saída;
 • Arquivos;
 • Rede;
 • Chamadas de Sistema;
 • Matemática;
 • Multi-Tarefas
 • ...



                                                15
# Ferramentas




                16
# Ferramentas
 O Linux inclui o conjunto de ferramentas de
 desenvolvimento.
 • Editores vim e Emacs
 • Compilador cross-compile GCC
 • Linkeditor dinâmico
 • Depurador GDB (cli), xgdb, DDD e GVD (visuais)
 • Diversas bibliotecas
 • Makefiles (Ferramentas de Build)
 • CVS
 • Man (ajuda online)
 • Entre outras.

                                                    17
# Ferramentas / Vim




                      18
# Ferramentas / Emacs




                        19
# Ferramentas / GCC   (GNU Compiler
Collection)




                                      20
# Ferramentas / Linkeditor




                             21
# Ferramentas / GDB




                      22
# Ferramentas / Builder




                          23
# Ferramentas / CVS




                      24
# Aplicações Gráficas




                        25
# Aplicações Gráficas
• O Linux dispõe de vários componentes para
desenvolvimento de aplicativos gráficos, também
conhecidos como “toolkits”.
• Os mais famosos e o GTK, utilizado no desenvolvimento
do Gnome e o QT utilizado no KDE.
• Ambos os toolkits também são disponíveis para outros
ambientes, inclusive o Windows e sistemas embarcados.
• Grande parte dos aplicativos são desenvolvidos na
linguagem C e C++, possuindo bindings para outras
linguagens.

                                                    26
# Aplicações Gráficas / GTK
• O GTK+ nasceu como um toolkit alternativo para o X
Window System no desenvolvimento do GIMP, pois
nenhum toolkit livre existente na época fornecia a
qualidade visual e riqueza de componentes exigidos
pela aplicação.
• A popularidade do GIMP e as características do
GTK+ o tornaram apropriado para muitas outras
aplicações, e hoje ele talvez seja o toolkit mais popular
para o desenvolvimento de aplicações para Linux e
Unix

                                                       27
# Aplicações Gráficas / GTK
• O GTK+ foi desenvolvido em ANSI C, embora
baseado em um projeto orientado a objetos
• Assim se torna fácil criar bindings do toolkit para
outras linguagens, como Perl, Python, PHP, Pascal,
Java, ADA, etc.
• Todos esses bindings são muito semelhantes,
apenas adaptados às peculiaridades de cada
linguagem, de modo que o conhecimento sobre o
GTK+ é preservado em uma mudança de linguagem.


                                                        28
# Aplicações Gráficas / GTK
• O GTK e um projeto bastante estável e rico de componentes
gráficos para desenvolvimento de aplicações das mais diversas,
abaixo seguem alguns exemplos de aplicativos que utilizam o
GTK como sendo o toolkit visual.

    •   Gimp                        •   Gnumeric
    •   Mozilla                     •   Dia
    •   OpenOffice                  •   MrProject
    •   Evolution                   •   xmms
    •   Ethereal                    •   Anjuta
    •   Glade                       •   File Roller
    •   AbiWord                     •   O próprio GNOME
                                                             29
# Aplicações Gráficas / GTK
• Abaixo segue uma imagem da arquitetura de um
programa utilizando GTK.




                                                 30
# Aplicações Gráficas / GTK




              “Exemplo de código GTK feito em C”
                                               31
# Aplicações Gráficas / Complicado?
 • A o código aparentemente complicado, cheio de
 ponteiros, casts, e funções com nomes longos, não é
 conseqüência da natureza do GTK+ e sim da
 linguagem C, que manipula ponteiros diretamente e
 não implementa polimorfismo.
 • Linguagens com características semelhantes, como
 PHP, geram programas semelhantes “de uma forma
 menos traumatizante”. =)


                                                   32
# Aplicações Gráficas / Complicado?


 Em seguida, um exemplo do mesmo código sendo
feito em PHP com suporte a GTK, chamado de “php-
                      gtk”.




                                                   33
# Aplicações Gráficas / GTK




                                                 34
           “Exemplo de código GTK feito em PHP-GTK”
# Aplicações Gráficas / GTK

GTK com as facilidades do desenvolvimento
                  Visual.




                                        35
# Aplicações Gráficas / GTK / Glade
 • Proposta de desenvolvimento visual diferente dos IDEs do
 mundo Windows.
 • O GTK+ é independente de linguagem e de SO.
 • O Glade também tenta ser, apesar de oferecer recursos
 (opcionais) específicos para o Gnome.
 • Pode gerar o código das janelas em C e outras linguagens.
 • Mas o preferido é salvar apenas a descrição das janelas em
 formato XML, processado em tempo de execução pela
 biblioteca libGlade.
 • Permite modificar o layout das janelas sem recompilar.


                                                          36
# Aplicações Gráficas / GTK / Glade




                                      37
# Aplicações Gráficas / GTK / Glade
 • Ele não é um IDE estilo Delphi ou VB, é apenas uma
 IDE utilizada para desenhar janelas.
 • É capaz de gerar código em C, C++, Ada, Eiffel e
 Perl correspondente à interface desenhada
 • Entretanto, via LibGlade, pode ser utilizado com
 qualquer outra linguagem.
 • IDEs como o Anjuta utilizam o Glade para fornecer
 Um ambiente completo de desenvolvimento


                                                  38
# Aplicações Gráficas / GTK / Ambiente
• Glade (desenhar formulários)
• Emacs, SciTE, Moleskine, Ajuta (editor de programas)
• GCC, Java, Perl, Python, PHP (compilador ou
interpretador)
• DDD, GVD, GDB (depurador)
• CVS (trabalho em equipe)
• MySQL, PostgreSQL, Firebird (Banco de Dados)



                                                    39
# Aplicações Gráficas / GTK / Ambiente

      Anjuta é um Ambiente de Desenvolvimento
Integrado para C e C++ em GNU/Linux. Ele foi escrito
para GTK+/GNOME e suporta muitas capacidades
avançadas como gerenciamento de projetos e um
poderoso editor de código fonte.




                                                   40
# Aplicações Gráficas / GTK / Anjuta




                                       41
# Aplicações Gráficas / DevHelp
       E possível obter ajuda sobre diversas API,
inclusive o GTK através do próprio Linux, basta
instalar e utilizar a ferramenta Devhelp.
Pois ele possui recurso de busca e fácil acesso a
descrição das API.




                                                    42
# Aplicações Gráficas / DevHelp




                                  43
# Aplicações Gráficas / DevHelp




                                  44
# Perguntas?




               45
# Referências     • Sobre o Glade
                  www.glade.org
• Sobre o Gimp
www.gimp.org      wingtk.sourceforge.net
www.wingimp.org
                  • GNU C
• Sobre o GTK     gcc.gnu.org
www.gtk.org
                  mingw.sourceforge.net
• Sobre o Gnome
www.gnome.org     • Free Pascal
                  www.freepascal.org
                                           46
# Referências
• PHP                    • Fernando Lozano
www.php.net              www.lozano.eti.br
pear.php.net
                         • CinLug
• Java-Gnome (J/GTK+)    www.cin.ufpe.br/~cinlug/
java-gnome.sourceforge



                                                47
# Se vira nos 30
   Demonstração de um projeto feito no Glade!
          será que da tempo?!?!? :P

    Projeto: “$PWD/GTK-EditorTexto-Glade/editor.glade”




                                                         48
Obrigado! ;)

<jorge@jorgepereira.com.br>
  www.jorgepereira.com.br     49

Mais conteúdo relacionado

Mais procurados

Dart e Flutter do Server ao Client Side
Dart e Flutter do Server ao Client SideDart e Flutter do Server ao Client Side
Dart e Flutter do Server ao Client SideGDGFoz
 
Games Open Source: experiências na comunidade KDE
Games Open Source: experiências na comunidade KDEGames Open Source: experiências na comunidade KDE
Games Open Source: experiências na comunidade KDEJogos Digitais, PUC - SP
 
Kde para iniciantes - Camila Ayres
Kde para iniciantes - Camila AyresKde para iniciantes - Camila Ayres
Kde para iniciantes - Camila AyresTchelinux
 
Desenvolvendo Aplicações Android com Qt
Desenvolvendo Aplicações Android com QtDesenvolvendo Aplicações Android com Qt
Desenvolvendo Aplicações Android com QtSandro Andrade
 
Facebook's Hack programming language / Linguagem de programação Hack do Facebook
Facebook's Hack programming language / Linguagem de programação Hack do FacebookFacebook's Hack programming language / Linguagem de programação Hack do Facebook
Facebook's Hack programming language / Linguagem de programação Hack do FacebookRafael Alves
 
Apresentação wxWidgets
Apresentação wxWidgetsApresentação wxWidgets
Apresentação wxWidgetsRenzo Petri
 
XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010 4ª ...
XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010  4ª ...XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010  4ª ...
XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010 4ª ...Dafmet Ufpel
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes Rhuan Karlus Silva
 
Palestra Software Livre [UPDATE]
Palestra Software Livre [UPDATE]Palestra Software Livre [UPDATE]
Palestra Software Livre [UPDATE]Edson Silva
 
As vantagens do desenvolvimento em .NET
As vantagens do desenvolvimento em .NETAs vantagens do desenvolvimento em .NET
As vantagens do desenvolvimento em .NETJoel Rodrigues
 

Mais procurados (19)

Introdução ao Qt
Introdução ao QtIntrodução ao Qt
Introdução ao Qt
 
Php Gtk
Php GtkPhp Gtk
Php Gtk
 
Dart e Flutter do Server ao Client Side
Dart e Flutter do Server ao Client SideDart e Flutter do Server ao Client Side
Dart e Flutter do Server ao Client Side
 
Games Open Source: experiências na comunidade KDE
Games Open Source: experiências na comunidade KDEGames Open Source: experiências na comunidade KDE
Games Open Source: experiências na comunidade KDE
 
Kde para iniciantes - Camila Ayres
Kde para iniciantes - Camila AyresKde para iniciantes - Camila Ayres
Kde para iniciantes - Camila Ayres
 
Desenvolvendo Aplicações Android com Qt
Desenvolvendo Aplicações Android com QtDesenvolvendo Aplicações Android com Qt
Desenvolvendo Aplicações Android com Qt
 
Facebook's Hack programming language / Linguagem de programação Hack do Facebook
Facebook's Hack programming language / Linguagem de programação Hack do FacebookFacebook's Hack programming language / Linguagem de programação Hack do Facebook
Facebook's Hack programming language / Linguagem de programação Hack do Facebook
 
Seminário: Delphi
Seminário: DelphiSeminário: Delphi
Seminário: Delphi
 
Games imersivos
Games imersivosGames imersivos
Games imersivos
 
Introdução a golang
Introdução a golangIntrodução a golang
Introdução a golang
 
Apresentação wxWidgets
Apresentação wxWidgetsApresentação wxWidgets
Apresentação wxWidgets
 
Conhecendo Go
Conhecendo GoConhecendo Go
Conhecendo Go
 
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGOEVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
 
Delphi6bd
Delphi6bdDelphi6bd
Delphi6bd
 
XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010 4ª ...
XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010  4ª ...XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010  4ª ...
XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010 4ª ...
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes
 
Palestra Software Livre [UPDATE]
Palestra Software Livre [UPDATE]Palestra Software Livre [UPDATE]
Palestra Software Livre [UPDATE]
 
Linguagem Dart (Google)
Linguagem Dart (Google)Linguagem Dart (Google)
Linguagem Dart (Google)
 
As vantagens do desenvolvimento em .NET
As vantagens do desenvolvimento em .NETAs vantagens do desenvolvimento em .NET
As vantagens do desenvolvimento em .NET
 

Destaque

Mantendo a Sanidade com o Glade
Mantendo a Sanidade com o GladeMantendo a Sanidade com o Glade
Mantendo a Sanidade com o GladeMarcelo Lira
 
Avaliação das distribuições Linux
Avaliação das distribuições LinuxAvaliação das distribuições Linux
Avaliação das distribuições LinuxMauro Tapajós
 
Aula 1 Mini Curso de Linux
Aula 1 Mini Curso de LinuxAula 1 Mini Curso de Linux
Aula 1 Mini Curso de LinuxRogério Cardoso
 
Desenvolvendo GUI com GTK+ - Frederico Schardong
Desenvolvendo GUI com GTK+ - Frederico SchardongDesenvolvendo GUI com GTK+ - Frederico Schardong
Desenvolvendo GUI com GTK+ - Frederico SchardongTchelinux
 
Mini-tutorial de GTK+
Mini-tutorial de GTK+Mini-tutorial de GTK+
Mini-tutorial de GTK+Marcelo Lira
 
Aplicações multicore com Linux Embarcado usando Raspberry Pi 2 - TDC2015
Aplicações multicore com Linux Embarcado usando Raspberry Pi 2 - TDC2015Aplicações multicore com Linux Embarcado usando Raspberry Pi 2 - TDC2015
Aplicações multicore com Linux Embarcado usando Raspberry Pi 2 - TDC2015André Curvello
 
Aula 1 sistema operacional linux
Aula 1 sistema operacional linuxAula 1 sistema operacional linux
Aula 1 sistema operacional linuxRogério Cardoso
 

Destaque (9)

Mantendo a Sanidade com o Glade
Mantendo a Sanidade com o GladeMantendo a Sanidade com o Glade
Mantendo a Sanidade com o Glade
 
Avaliação das distribuições Linux
Avaliação das distribuições LinuxAvaliação das distribuições Linux
Avaliação das distribuições Linux
 
Aula 1 Mini Curso de Linux
Aula 1 Mini Curso de LinuxAula 1 Mini Curso de Linux
Aula 1 Mini Curso de Linux
 
Desenvolvendo GUI com GTK+ - Frederico Schardong
Desenvolvendo GUI com GTK+ - Frederico SchardongDesenvolvendo GUI com GTK+ - Frederico Schardong
Desenvolvendo GUI com GTK+ - Frederico Schardong
 
Mini-tutorial de GTK+
Mini-tutorial de GTK+Mini-tutorial de GTK+
Mini-tutorial de GTK+
 
Servidores linux
Servidores linuxServidores linux
Servidores linux
 
Aplicações multicore com Linux Embarcado usando Raspberry Pi 2 - TDC2015
Aplicações multicore com Linux Embarcado usando Raspberry Pi 2 - TDC2015Aplicações multicore com Linux Embarcado usando Raspberry Pi 2 - TDC2015
Aplicações multicore com Linux Embarcado usando Raspberry Pi 2 - TDC2015
 
Comandos linux
Comandos linuxComandos linux
Comandos linux
 
Aula 1 sistema operacional linux
Aula 1 sistema operacional linuxAula 1 sistema operacional linux
Aula 1 sistema operacional linux
 

Semelhante a Guiando iniciantes no desenvolvimento Linux

Ruby No Desktop - Marcelo Castellani
Ruby No Desktop - Marcelo CastellaniRuby No Desktop - Marcelo Castellani
Ruby No Desktop - Marcelo Castellaniguest2a3a90
 
Ruby No Desktop - Marcelo Castellani
Ruby No Desktop - Marcelo CastellaniRuby No Desktop - Marcelo Castellani
Ruby No Desktop - Marcelo CastellaniHugo Borges
 
FLTK Summer Course - Part I - First Impact
FLTK Summer Course - Part I - First ImpactFLTK Summer Course - Part I - First Impact
FLTK Summer Course - Part I - First ImpactMichel Alves
 
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...Renato Groff
 
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorFelipe Pedroso
 
Aplicações livres para o seu Desktop - Leonardo Menezes Vaz
Aplicações livres para o seu Desktop - Leonardo Menezes VazAplicações livres para o seu Desktop - Leonardo Menezes Vaz
Aplicações livres para o seu Desktop - Leonardo Menezes VazTchelinux
 
Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017
Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017
Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017Renato Groff
 
KDE Edu & Linux Educacional: como o Projeto KDE, o Linux e o Software Livre p...
KDE Edu & Linux Educacional: como o Projeto KDE, o Linux e o Software Livre p...KDE Edu & Linux Educacional: como o Projeto KDE, o Linux e o Software Livre p...
KDE Edu & Linux Educacional: como o Projeto KDE, o Linux e o Software Livre p...Mário Araújo Xavier
 
Tupiniquizando o desktop com KDE
Tupiniquizando o desktop com KDETupiniquizando o desktop com KDE
Tupiniquizando o desktop com KDEFernando Boaglio
 
Linux para-iniciantes-explorando
Linux para-iniciantes-explorandoLinux para-iniciantes-explorando
Linux para-iniciantes-explorandogastaovalle
 
Linux para-iniciantes-explorando
Linux para-iniciantes-explorandoLinux para-iniciantes-explorando
Linux para-iniciantes-explorandogastaovalle
 
Programação em Shell Script
Programação em Shell ScriptProgramação em Shell Script
Programação em Shell ScriptReinaldo Lima
 

Semelhante a Guiando iniciantes no desenvolvimento Linux (20)

Ruby No Desktop - Marcelo Castellani
Ruby No Desktop - Marcelo CastellaniRuby No Desktop - Marcelo Castellani
Ruby No Desktop - Marcelo Castellani
 
Ruby No Desktop - Marcelo Castellani
Ruby No Desktop - Marcelo CastellaniRuby No Desktop - Marcelo Castellani
Ruby No Desktop - Marcelo Castellani
 
Mini Curso de C
Mini Curso de CMini Curso de C
Mini Curso de C
 
FLTK Summer Course - Part I - First Impact
FLTK Summer Course - Part I - First ImpactFLTK Summer Course - Part I - First Impact
FLTK Summer Course - Part I - First Impact
 
Kde comunidade
Kde comunidadeKde comunidade
Kde comunidade
 
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
 
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
 
Aplicações livres para o seu Desktop - Leonardo Menezes Vaz
Aplicações livres para o seu Desktop - Leonardo Menezes VazAplicações livres para o seu Desktop - Leonardo Menezes Vaz
Aplicações livres para o seu Desktop - Leonardo Menezes Vaz
 
Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017
Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017
Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017
 
KDE EDU - Linux Educacional
KDE EDU - Linux EducacionalKDE EDU - Linux Educacional
KDE EDU - Linux Educacional
 
KDE Edu & Linux Educacional: como o Projeto KDE, o Linux e o Software Livre p...
KDE Edu & Linux Educacional: como o Projeto KDE, o Linux e o Software Livre p...KDE Edu & Linux Educacional: como o Projeto KDE, o Linux e o Software Livre p...
KDE Edu & Linux Educacional: como o Projeto KDE, o Linux e o Software Livre p...
 
Csharp
CsharpCsharp
Csharp
 
Intro linux
Intro linuxIntro linux
Intro linux
 
Tupiniquizando o desktop com KDE
Tupiniquizando o desktop com KDETupiniquizando o desktop com KDE
Tupiniquizando o desktop com KDE
 
Paradigmas de Linguagem
Paradigmas de LinguagemParadigmas de Linguagem
Paradigmas de Linguagem
 
Janela Livre
Janela LivreJanela Livre
Janela Livre
 
Linux para-iniciantes-explorando
Linux para-iniciantes-explorandoLinux para-iniciantes-explorando
Linux para-iniciantes-explorando
 
Linux para-iniciantes-explorando
Linux para-iniciantes-explorandoLinux para-iniciantes-explorando
Linux para-iniciantes-explorando
 
Seminário: C++
Seminário: C++Seminário: C++
Seminário: C++
 
Programação em Shell Script
Programação em Shell ScriptProgramação em Shell Script
Programação em Shell Script
 

Guiando iniciantes no desenvolvimento Linux

  • 1. “Guiando os primeiros para iniciar o desenvolvimento no ambiente Linux” Jorge Pereira 1 <jorge@jorgepereira.com.br> 23 de Abril de 2008
  • 3. # who i'am? Meu nome é Jorge Pereira, tive meu primeiro contato com o Linux por volta de 1996, trabalhando durante muitos anos com soluções e consultorias voltadas para sistemas OpenSource, atuando durante esses anos como desenvolvedor, sysadmin, instrutor e palestrante. Atualmente trabalhando como desenvolvedor C/C++ & Embedded Systems. 3
  • 4. # Objetivos Apresentar ao profissional ou estudante acostumado a programar em ambiente Windows ou qualquer outro ambiente diferente do Linux, as ferramentas e possibilidades disponíveis para programação em ambiente Linux. Indicar caminhos para o desenvolvimento de aplicações multiplataforma, como preparação para uma futura migração ao Linux ou como forma de viabilizar uma rede heterogênea 4
  • 5. # Agenda  Primeiros Passos  A Cultura Windows x Linux  Linguagens Suportadas  Ferramentas  Aplicações Gráficas  Perguntas  Se vira nos 30  Contato  Referências 5
  • 7. # Primeiros Passos • Possuir o Linux instalado na máquina. • Conhecer o básico sobre o sistema. • Entender o básico sobre seu funcionamento. • Acesso a fontes de pesquisa. • Conhecimentos sobre programação. • Indicado conhecer o básico sobre licenças. • Por fim: Força de vontade. 7
  • 8. # Primeiros Passos / Vantagens • Custo Zero. • Open Source. • Bugs podem ser consertados por qualquer pessoa. • Maior flexibilidade. • Vasta base de software. • Utilização do Linux em aplicações embarcadas. • Grandes empresas investindo na plataforma: • Motorola, Nokia, IBM, SUN, Oracle, Novell ... 8
  • 9. # A Cultura Windows x Linux 9
  • 10. # A Cultura Windows x Linux • Como o SO fornecia apenas componentes de baixo nível (e nenhuma ferramenta de apoio ao desenvolvimento), as IDEs tornaram-se “inchados” e incompatíveis entre si. • As dificuldades do padrão *OCX fizeram com que cada IDE fornecesse sua própria biblioteca de componentes, de modo que o programador não aproveita quase nada do seu knowhow ao mudar de IDE. * (OLE Control Extension) 10
  • 11. # A Cultura Windows x Linux • Pior, frequentemente uma nova versão do mesmo IDE é incompatível com aplicações desenvolvidas com versões anteriores do mesmo IDE (ex: VB 4/5/6, Delphi 6/7) • O foco nos desenhadores de formulários leva a aplicações de difícil manutenção sem a ajuda dos famosos “componentes”. 11
  • 12. # A Cultura Windows x Linux E a cultura Linux? 12
  • 14. # Linguagens Suportadas • C/C++ • Python • Perl • PHP • Ruby • Java • Cobol • Fortran • Pascal • Lua • ... 14
  • 15. # Linguagens Suportadas • C no Linux a linguagem de programação nativa é “C”, sua API padrão chama-se “Glibc – GNU Library C”, possuindo os principais recursos nativos abaixo: • Entrada/Saída; • Arquivos; • Rede; • Chamadas de Sistema; • Matemática; • Multi-Tarefas • ... 15
  • 17. # Ferramentas O Linux inclui o conjunto de ferramentas de desenvolvimento. • Editores vim e Emacs • Compilador cross-compile GCC • Linkeditor dinâmico • Depurador GDB (cli), xgdb, DDD e GVD (visuais) • Diversas bibliotecas • Makefiles (Ferramentas de Build) • CVS • Man (ajuda online) • Entre outras. 17
  • 18. # Ferramentas / Vim 18
  • 19. # Ferramentas / Emacs 19
  • 20. # Ferramentas / GCC (GNU Compiler Collection) 20
  • 21. # Ferramentas / Linkeditor 21
  • 22. # Ferramentas / GDB 22
  • 23. # Ferramentas / Builder 23
  • 24. # Ferramentas / CVS 24
  • 26. # Aplicações Gráficas • O Linux dispõe de vários componentes para desenvolvimento de aplicativos gráficos, também conhecidos como “toolkits”. • Os mais famosos e o GTK, utilizado no desenvolvimento do Gnome e o QT utilizado no KDE. • Ambos os toolkits também são disponíveis para outros ambientes, inclusive o Windows e sistemas embarcados. • Grande parte dos aplicativos são desenvolvidos na linguagem C e C++, possuindo bindings para outras linguagens. 26
  • 27. # Aplicações Gráficas / GTK • O GTK+ nasceu como um toolkit alternativo para o X Window System no desenvolvimento do GIMP, pois nenhum toolkit livre existente na época fornecia a qualidade visual e riqueza de componentes exigidos pela aplicação. • A popularidade do GIMP e as características do GTK+ o tornaram apropriado para muitas outras aplicações, e hoje ele talvez seja o toolkit mais popular para o desenvolvimento de aplicações para Linux e Unix 27
  • 28. # Aplicações Gráficas / GTK • O GTK+ foi desenvolvido em ANSI C, embora baseado em um projeto orientado a objetos • Assim se torna fácil criar bindings do toolkit para outras linguagens, como Perl, Python, PHP, Pascal, Java, ADA, etc. • Todos esses bindings são muito semelhantes, apenas adaptados às peculiaridades de cada linguagem, de modo que o conhecimento sobre o GTK+ é preservado em uma mudança de linguagem. 28
  • 29. # Aplicações Gráficas / GTK • O GTK e um projeto bastante estável e rico de componentes gráficos para desenvolvimento de aplicações das mais diversas, abaixo seguem alguns exemplos de aplicativos que utilizam o GTK como sendo o toolkit visual. • Gimp • Gnumeric • Mozilla • Dia • OpenOffice • MrProject • Evolution • xmms • Ethereal • Anjuta • Glade • File Roller • AbiWord • O próprio GNOME 29
  • 30. # Aplicações Gráficas / GTK • Abaixo segue uma imagem da arquitetura de um programa utilizando GTK. 30
  • 31. # Aplicações Gráficas / GTK “Exemplo de código GTK feito em C” 31
  • 32. # Aplicações Gráficas / Complicado? • A o código aparentemente complicado, cheio de ponteiros, casts, e funções com nomes longos, não é conseqüência da natureza do GTK+ e sim da linguagem C, que manipula ponteiros diretamente e não implementa polimorfismo. • Linguagens com características semelhantes, como PHP, geram programas semelhantes “de uma forma menos traumatizante”. =) 32
  • 33. # Aplicações Gráficas / Complicado? Em seguida, um exemplo do mesmo código sendo feito em PHP com suporte a GTK, chamado de “php- gtk”. 33
  • 34. # Aplicações Gráficas / GTK 34 “Exemplo de código GTK feito em PHP-GTK”
  • 35. # Aplicações Gráficas / GTK GTK com as facilidades do desenvolvimento Visual. 35
  • 36. # Aplicações Gráficas / GTK / Glade • Proposta de desenvolvimento visual diferente dos IDEs do mundo Windows. • O GTK+ é independente de linguagem e de SO. • O Glade também tenta ser, apesar de oferecer recursos (opcionais) específicos para o Gnome. • Pode gerar o código das janelas em C e outras linguagens. • Mas o preferido é salvar apenas a descrição das janelas em formato XML, processado em tempo de execução pela biblioteca libGlade. • Permite modificar o layout das janelas sem recompilar. 36
  • 37. # Aplicações Gráficas / GTK / Glade 37
  • 38. # Aplicações Gráficas / GTK / Glade • Ele não é um IDE estilo Delphi ou VB, é apenas uma IDE utilizada para desenhar janelas. • É capaz de gerar código em C, C++, Ada, Eiffel e Perl correspondente à interface desenhada • Entretanto, via LibGlade, pode ser utilizado com qualquer outra linguagem. • IDEs como o Anjuta utilizam o Glade para fornecer Um ambiente completo de desenvolvimento 38
  • 39. # Aplicações Gráficas / GTK / Ambiente • Glade (desenhar formulários) • Emacs, SciTE, Moleskine, Ajuta (editor de programas) • GCC, Java, Perl, Python, PHP (compilador ou interpretador) • DDD, GVD, GDB (depurador) • CVS (trabalho em equipe) • MySQL, PostgreSQL, Firebird (Banco de Dados) 39
  • 40. # Aplicações Gráficas / GTK / Ambiente Anjuta é um Ambiente de Desenvolvimento Integrado para C e C++ em GNU/Linux. Ele foi escrito para GTK+/GNOME e suporta muitas capacidades avançadas como gerenciamento de projetos e um poderoso editor de código fonte. 40
  • 41. # Aplicações Gráficas / GTK / Anjuta 41
  • 42. # Aplicações Gráficas / DevHelp E possível obter ajuda sobre diversas API, inclusive o GTK através do próprio Linux, basta instalar e utilizar a ferramenta Devhelp. Pois ele possui recurso de busca e fácil acesso a descrição das API. 42
  • 43. # Aplicações Gráficas / DevHelp 43
  • 44. # Aplicações Gráficas / DevHelp 44
  • 46. # Referências • Sobre o Glade www.glade.org • Sobre o Gimp www.gimp.org wingtk.sourceforge.net www.wingimp.org • GNU C • Sobre o GTK gcc.gnu.org www.gtk.org mingw.sourceforge.net • Sobre o Gnome www.gnome.org • Free Pascal www.freepascal.org 46
  • 47. # Referências • PHP • Fernando Lozano www.php.net www.lozano.eti.br pear.php.net • CinLug • Java-Gnome (J/GTK+) www.cin.ufpe.br/~cinlug/ java-gnome.sourceforge 47
  • 48. # Se vira nos 30 Demonstração de um projeto feito no Glade! será que da tempo?!?!? :P Projeto: “$PWD/GTK-EditorTexto-Glade/editor.glade” 48
  • 49. Obrigado! ;) <jorge@jorgepereira.com.br> www.jorgepereira.com.br 49