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