22
Ruby versus Python Fernando Favini - 168824 Henrique Lira - 138459 Lukal Cândido - 157079 Priscila Mayumi Sato - 148968 Willians Vieira - 169080 Universidade Metodista de São Paulo

Ruby versus Python

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Ruby versus Python

●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

Ruby x Python

Page 3: Ruby versus 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

Page 4: Ruby versus Python

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

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

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

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

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

Framework DJango

• Voltado para a web• Padrão MVC• Código aberto• Mapeamento Objeto-Relacional • URL's Elegantes

Page 10: Ruby versus Python

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

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

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

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

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

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

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

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

Aplicações Ruby• RubyTorrent• Ruby Pong• Ruby Sudoku• ScreenSvr • RTranscoder

Page 19: Ruby versus Python

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

Caso de Sucesso Ruby on Rails• Grupon• Orangotag• Twitter• Github

Page 21: Ruby versus Python

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

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