Ruby versus Python

5.340 visualizações

Publicada em

Apresentação de Ruby versus Python para a Universidade Metodista de São Paulo

Publicada em: Tecnologia
1 comentário
3 gostaram
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
5.340
No SlideShare
0
A partir de incorporações
0
Número de incorporações
7
Ações
Compartilhamentos
0
Downloads
44
Comentários
1
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Ruby versus Python

  1. 1. <ul><li>Ruby versus Python </li></ul>Fernando Favini - 168824 Henrique Lira - 138459 Lukal Cândido - 157079 Priscila Mayumi Sato - 148968 Willians Vieira - 169080 Universidade Metodista de São Paulo
  2. 2. Ruby x Python
  3. 3. Dinâmica e Interpretada <ul><li>Alto nível </li></ul><ul><li>Compilação no runtime </li></ul><ul><li>Operações de compilação no runtime </li></ul><ul><ul><li>Redefinição de classes </li></ul></ul><ul><ul><li>Redefinição de métodos </li></ul></ul><ul><ul><li>Modificação de tipos de váriaveis </li></ul></ul><ul><li>Eval </li></ul><ul><li>Closures </li></ul><ul><li>Programação funcional </li></ul><ul><li>Reflexão </li></ul>
  4. 4. Ruby <ul><li>Tipagem dinâmica </li></ul><ul><li>Não há tipos primitivos </li></ul><ul><li>operadores que são métodos e podendo ser redefinidos </li></ul><ul><li>Escrita em C </li></ul><ul><li>Open Sorce </li></ul><ul><li>Sem especificações </li></ul><ul><li>Reflêxiva </li></ul><ul><li>Enxuta </li></ul><ul><li>Multiparadigma </li></ul><ul><ul><li>Funcional </li></ul></ul><ul><ul><li>Orientada a objetos </li></ul></ul><ul><ul><li>Imperativa </li></ul></ul><ul><ul><li>Reflexiva </li></ul></ul>
  5. 5. Framework Rails <ul><li>Meta Framework </li></ul><ul><ul><li>Active Record </li></ul></ul><ul><ul><li>Action Pack </li></ul></ul><ul><ul><li>Action Mailer </li></ul></ul><ul><ul><li>Active Support </li></ul></ul><ul><ul><li>Action WebServices </li></ul></ul><ul><li>Desenvolvimento: </li></ul><ul><ul><li>DRY (Don't Repeat Yourself, Não se repita) </li></ul></ul><ul><ul><li>Convention over configuration </li></ul></ul><ul><li>Altamente Escalavel </li></ul><ul><li>Seguido por outras linguagens </li></ul><ul><ul><li>Groovy </li></ul></ul>
  6. 6. Ruby <ul><li>Ruby fez 18 anos de criação no dia 24/02 </li></ul><ul><li>É tida como a décima linguagem de programação mais utilizada </li></ul><ul><li>Foi criada por Yukihiro Matsumoto </li></ul><ul><li>O nome “Ruby” teria sido escolhido por ser uma pedra zodiacal de um dos colegas de Matz </li></ul><ul><li>O primeiro livro de Ruby foi lançado em setembro de 2000 </li></ul>
  7. 7. Python <ul><li>Altíssimo nível </li></ul><ul><li>Tipagem dinâmica porém forte </li></ul><ul><li>Licença compatível com a GPL </li></ul><ul><li>Blocos de códigos separados por indentação e não por chaves </li></ul><ul><li>Qualquer tipo de dado pode ser considerado um objeto </li></ul><ul><li>Coletor de lixo automático </li></ul><ul><li>Portável. Basta ter o interpretador </li></ul><ul><li>Multi paradgma </li></ul><ul><li>Pilhas incluídas. É só chamar a biblioteca XYZ que está tudo resolvido </li></ul><ul><li>Código aberto </li></ul>
  8. 8. Python <ul><li>Pronuncia-se “Páifon” com o th fazendo som de f </li></ul><ul><li>Criada em 1990 por Guido Van Rossum </li></ul><ul><li>A imagem da linguagem é associada a cobra píton por causa do livro Programming Python da editora O’Reily </li></ul><ul><li>O nome surgiu por causa do grupo inglês de humor Monty Python, da qual o criador Guido Van Rossum era fã. O nome era para ser provisório </li></ul><ul><li>Muito usada pela NASA e pela Google, e até mesmo era usada em celulares Nokia e PlayStation 2 </li></ul><ul><li>Basiada nas linguagens ABC </li></ul><ul><li>É a quinta linguagem mais usada no muno </li></ul>
  9. 9. Framework DJango <ul><li>Voltado para a web </li></ul><ul><li>Padrão MVC </li></ul><ul><li>Código aberto </li></ul><ul><li>Mapeamento Objeto-Relacional  </li></ul><ul><li>URL's Elegantes </li></ul>
  10. 10. Closure <ul><ul><li>Closures criam funções com escopo alem do contexto léxico </li></ul></ul><ul><ul><li>Função acessando variáveis de outras funções </li></ul></ul><ul><ul><li>Implementação dummy de objeto </li></ul></ul><ul><ul><li>Variável semi estática </li></ul></ul>Função A Função B Variavel A Função A Função B Retorno
  11. 11. Exemplo de closure – Python Contador def foo(): counter = [0] def bar(): counter[0] = counter[0] + 1 return counter[0] return bar count = foo() // 1 print count() // 2 print count() // 3 print count() // 4 print count() // 5
  12. 12. Exemplo de closure – Ruby Contador def new_counter i = 0 lambda { i += 1 } end c1 = new_counter puts c1.call // 1 puts c1.call // 2 puts c1.call // 3 puts c1.call // 4 puts c1.call // 5
  13. 13. Closure – Outros Exemplos Ruby Python def managers(emps) return emps.select {|e| e.isManager} end def managers(emps): return filter(lambda e: e.isManager, emps) def highPaid(emps) threshold = 150 return emps.select {|e| e.salary > threshold} end def highPaid(emps): threshold = 150 return filter(lambda e: e.salary > threshold, emps) def paidMore(amount) return Proc.new {|e| e.salary > amount} end def paidMore(amount): return lambda e: e.salary > amount
  14. 14. Teste Ruby versus Python <ul><ul><li>Teste: criar um livro de visitas e ver a resposta </li></ul></ul><ul><ul><li>Teste usando: </li></ul></ul><ul><ul><li>Ruby, banco de dados SQLite, rodando localmente sobre Mongrel, framework Rails </li></ul></ul><ul><ul><li>Python, Google Datastore rodando sobre GoogleAppEngine localmente, framework Webapp/Django </li></ul></ul>
  15. 15. Resultado do teste <ul><li>Tempo de desenvolvimento: 13 min </li></ul><ul><li>Linhas de código: 64 </li></ul><ul><li>Tempo de resposta: 80ms </li></ul><ul><li>Tempo de desenvolvimento: 7 min </li></ul><ul><li>Linhas de código: 31 </li></ul><ul><li>Tempo de resposta: 122 ms </li></ul>Python Ruby
  16. 16. Património e Filosofia <ul><li>Herda da ABC, Algol e ModulaThree </li></ul><ul><li>“ Deve haver um meio mais simples” </li></ul><ul><li>Linguagem produtiva, depois divertida </li></ul><ul><li>Herda da Smaltalk e da Perl </li></ul><ul><li>“ Tudo é um Objeto” </li></ul><ul><li>Linguagem divertida, depois produtiva </li></ul>Python Ruby
  17. 17. Popularidade <ul><li>É mais usada que Ruby </li></ul><ul><li>É menos pesquisada no Google, tendo sido pesquisada 5.000.000 </li></ul><ul><li>É mais usada no ensino e pesquisa do que Ruby </li></ul><ul><li>Está em maior evidencia que Python </li></ul><ul><li>É mais pesquinada no Google, tendo sido pesquisada 6.120.000 </li></ul><ul><li>É mais usado comercialmente que Python </li></ul>Python Ruby
  18. 18. Aplicações Ruby <ul><li>RubyTorrent </li></ul><ul><li>Ruby Pong </li></ul><ul><li>Ruby Sudoku </li></ul><ul><li>ScreenSvr </li></ul><ul><li>RTranscoder </li></ul>
  19. 19. Aplicação Python <ul><li>BitTorrent </li></ul><ul><li>Blender (scripts) </li></ul><ul><li>Vampire: The Masquerade – Bloodlines </li></ul><ul><li>Gajim </li></ul><ul><li>YUM </li></ul><ul><li>GNU Mailman </li></ul><ul><li>Civilization IV </li></ul><ul><li>Battlefield 2 (Add-Ons) </li></ul><ul><li>Freedom Force </li></ul><ul><li>The Temple of Elemental Evil </li></ul><ul><li>Frets on Fire </li></ul>
  20. 20. Caso de Sucesso Ruby on Rails <ul><li>Grupon </li></ul><ul><li>Orangotag </li></ul><ul><li>Twitter </li></ul><ul><li>Github </li></ul>
  21. 21. Caso de sucesso Python/Django <ul><li>Lupo </li></ul><ul><li>Universidade de Caxias do Sul </li></ul><ul><li>Muito usado pela Google </li></ul><ul><li>Muito usado pela NASA </li></ul><ul><li>Usado pela Industrial Light and Magic (empresa de George Lucas) </li></ul>
  22. 22. Webgráfia - 14/04/2011 <ul><li>http://c2.com/cgi/wiki?PythonVsRuby </li></ul><ul><li>http://en.wikipedia.org/wiki/Dynamic_programming_language </li></ul><ul><li>http://en.wikipedia.org/wiki/Interactive_Ruby_Shell </li></ul><ul><li>http://en.wikipedia.org/wiki/Python_(programming_language) </li></ul><ul><li>http://hilgenstieler.com/blog/main/modulos_em_python </li></ul><ul><li>http://ivan.truemesh.com/archives/000392.html </li></ul><ul><li>http://ivan.truemesh.com/archives/000411.html </li></ul><ul><li>http://ligeirinhos-ufs.blogspot.com/2008/10/histria-do-ruby.html </li></ul><ul><li>http://los.io.usp.br/matcurso/just.html </li></ul><ul><li>http://pt.wikipedia.org/wiki/Closure </li></ul><ul><li>http://pt.wikipedia.org/wiki/Ruby_on_Rails </li></ul><ul><li>http://rubyforge.org/ </li></ul><ul><li>http://rubyonrails.org/applications </li></ul><ul><li>http://rubytorrent.rubyforge.org/ </li></ul><ul><li>http://sourceforge.net </li></ul><ul><li>http://twitter.com/about/opensource </li></ul><ul><li>http://www.async.com.br/projects/python/pnp/basicoo.html </li></ul><ul><li>http://www.compute-rs.com/pt/conselho-711570.htm </li></ul><ul><li>http://www.freelancersbrasil.com/linguagens-compiladas-x-linguagens-interpretadas/ </li></ul><ul><li>http://www.gpr.com.br/download/python21.pdf </li></ul><ul><li>http://www.pion.com.br/python/curso_python.html </li></ul><ul><li>http://www.python.org.br/wiki/AprendaProgramar </li></ul><ul><li>http://www.python.org.br/wiki/PerguntasFrequentes/SobrePython </li></ul><ul><li>http://www.python.org.br/wiki/PythonParaWeb#Caracter.2BAO0-sticas </li></ul><ul><li>http://www.rubyonrails.pro.br/aplicacoes </li></ul><ul><li>http://www.sanainside.com/2009/01/19/php-java-python-ruby-asp-qual-e-a-linguagem-de-programacao-mais-popular/ </li></ul><ul><li>http://www.screencaster.com.br/php-x-python-x-ruby-comparando-as-linguagens-e-seus-frameworks/ </li></ul><ul><li>http://www.wikivs.com/wiki/Python_vs_Ruby </li></ul>

×