●Ruby versus Python
Fernando Favini - 168824Henrique Lira - 138459
Lukal Cândido - 157079Priscila Mayumi Sato - 148968
Willians Vieira - 169080
Universidade Metodistade São Paulo
Ruby x Python
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
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
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
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
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
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
Framework DJango
• Voltado para a web• Padrão MVC• Código aberto• Mapeamento Objeto-Relacional • URL's Elegantes
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
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
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
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
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
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
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
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
Aplicações Ruby• RubyTorrent• Ruby Pong• Ruby Sudoku• ScreenSvr • RTranscoder
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
Caso de Sucesso Ruby on Rails• Grupon• Orangotag• Twitter• Github
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)
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