O que vocês pegariam de Ruby e trariam para o Python?

classic Classic list List threaded Threaded
131 messages Options
1234 ... 7
Reply | Threaded
Open this post in threaded view
|

O que vocês pegariam de Ruby e trariam para o Python?

Danilo Cabello
Bom dia pessoal,

Sei que a maioria dos Pythonistas também já viu Ruby até porque quando
se aprende uma das linguagens a curva de aprendizado da outra é
mínima.

Gostaria de saber do pessoal que gosta de Python como eu:

O que você traria de Ruby para o Python?

Eu inicio minha lista de desejos:
- Tchau self explicíto.
- "abc".length ao contrário de len("abc")
- "!" no final do método que modifica a instancia do objeto, exemplo:
listaX.sort! (ordena a lista e altera a listaX para o resultado
ordenado)
- "?" no final do método que retorna true ou false, exemplo: listaX.vazia?
- "@" para atributos internos, exemplo @nome (em Ruby) = self.nome (em Python)

São pequenas coisas que acredito que deixariam programar em Python
muito mais divertido.

PS: Não quero flamewar ein! =D
Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Bugzilla from thiagocoutinho1@gmail.com
2008/11/5 Danilo Faustinoni Cabello <[hidden email]>:

> Bom dia pessoal,
>
> Sei que a maioria dos Pythonistas também já viu Ruby até porque quando
> se aprende uma das linguagens a curva de aprendizado da outra é
> mínima.
>
> Gostaria de saber do pessoal que gosta de Python como eu:
>
> O que você traria de Ruby para o Python?
>
> Eu inicio minha lista de desejos:
> - Tchau self explicíto.
> - "abc".length ao contrário de len("abc")
> - "!" no final do método que modifica a instancia do objeto, exemplo:
> listaX.sort! (ordena a lista e altera a listaX para o resultado
> ordenado)
> - "?" no final do método que retorna true ou false, exemplo: listaX.vazia?
> - "@" para atributos internos, exemplo @nome (em Ruby) = self.nome (em
> Python)
>
> São pequenas coisas que acredito que deixariam programar em Python
> muito mais divertido.

Uma coisa que eu já senti falta no Python, e não sei se tem no Ruby, é
a sintaxe:

a = b == 1 ? true : false

Já sei, já sei: Explícito é melhor que implícito! :^)


--
Thiago Coutinho - http://thiago.bunghole.com.br/

A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?

echo '16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq' | dc
Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Osvaldo Santana Neto
In reply to this post by Danilo Cabello
Oi Danilo,

2008/11/5 Danilo Faustinoni Cabello <[hidden email]>:

> Bom dia pessoal,
>
> Sei que a maioria dos Pythonistas também já viu Ruby até porque quando
> se aprende uma das linguagens a curva de aprendizado da outra é
> mínima.
>
> Gostaria de saber do pessoal que gosta de Python como eu:
>
> O que você traria de Ruby para o Python?
>
> Eu inicio minha lista de desejos:
> - Tchau self explicíto.

Já foi explicado centenas de vezes aqui e em outros lugares a razão da
existência do self explícito na definição de métodos.

> - "abc".length ao contrário de len("abc")

Uma coisa que eu gosto em Python é a forma de se 'ler' um programa. Eu
leio 'if len("abc") > x: ...' como 'Se tamanho de "abc" for maior que
x: faça tal coisa'.

Eu faço essa leitura um-para-um como se fosse uma tradução literal do texto.

Não acontece o mesmo com "Se 'abc' tamanho for maior que x: faça". A
leitura deixa de ser natural para qualquer um...

> - "!" no final do método que modifica a instancia do objeto, exemplo:
> listaX.sort! (ordena a lista e altera a listaX para o resultado
> ordenado)

Sou -0 pra essa mudança...

> - "?" no final do método que retorna true ou false, exemplo: listaX.vazia?

Isso é legal justamente porque colabora com a leitura do código que eu
citei acima. A forma mais comum é usar métodos 'is_...()' mas
realmente falta a interrogação para facilitar a leitura/tradução.

> - "@" para atributos internos, exemplo @nome (em Ruby) = self.nome (em Python)

Isso não... mesmo lendo '@' como 'at' a coisa não cola porque eu odeio
símbolos desnecessários em código.

Aliás os símbolos de Ruby me impedem de forma recorrente de entender
os códigos nessa linguagem.

Veja... eu programei em Smalltalk por alguns anos que foi uma das
bases da sintaxe de Ruby e mesmo assim não consigo entender um código
em Ruby.

O mesmo problema eu sinto com Perl.

> São pequenas coisas que acredito que deixariam programar em Python
> muito mais divertido.


O que eu gostaria de no universo Python que eu vejo funcionar muito
bem com Ruby:

- O Marketing - Tecnicamente falando os caras precisam 'tomar muito
toddynho' pra se equivaler à Python no quesito ferramentas e
implementação de VM. Mas mesmo assim as poucas ferramentas deles são
conhecidas por todo mundo. Pergunte na rua quantas pessoas conhecem
"Ruby" (nem que seja o RoR) e quantas conhecem Python?

- Preocupação com o visual - Os sites, as aplicações e as
documentações dos projetos em Python são visualmente toscos. Sério.
Chegam a ser uma indecência de horríveis. Elas só conseguem adeptos
porque são realmente muito boas porque se dependessem do visual de
seus sites e do visual de suas documentações estariam perdidos. É
claro existem excessões (Django, SQLAlchemy, ...)

- Ferramentas/bibliotecas/frameworks para deploy - Estamos melhorando
nisso mas acho que o problema está 'mais embaixo'. Acho que o sistema
de pacotes e módulos do Python precisava de um cuidado especial nesse
Py3k e não teve. Isso permitiria melhoras no distutils que permitiria
uma evolução em toda a cadeia de deploy do Python
(setuptools/easy_install, fabric, ...)

> PS: Não quero flamewar ein! =D

Hum... então prepare-se :)

Valeu,
Osvaldo

--
Osvaldo Santana Neto
Fone: 41-9244-1646
http://www.pythonologia.org
Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Vinícius Figueiredo
In reply to this post by Danilo Cabello
2008/11/5 Danilo Faustinoni Cabello <[hidden email]>:

> Bom dia pessoal,
>
> Sei que a maioria dos Pythonistas também já viu Ruby até porque quando
> se aprende uma das linguagens a curva de aprendizado da outra é
> mínima.
>
> Gostaria de saber do pessoal que gosta de Python como eu:
>
> O que você traria de Ruby para o Python?
>
> Eu inicio minha lista de desejos:
> - Tchau self explicíto.
> - "abc".length ao contrário de len("abc")
> - "!" no final do método que modifica a instancia do objeto, exemplo:
> listaX.sort! (ordena a lista e altera a listaX para o resultado
> ordenado)
> - "?" no final do método que retorna true ou false, exemplo: listaX.vazia?
> - "@" para atributos internos, exemplo @nome (em Ruby) = self.nome (em
> Python)
>
> São pequenas coisas que acredito que deixariam programar em Python
> muito mais divertido.
>
> PS: Não quero flamewar ein! =D
>

Eu não gosto muito de símbolos no meio do código, apesar de achar o ?
do Ruby interessante. Descobri que não gosto de símbolos tentando ler
Perl e um pouco de Ruby. Gosto bastante da clareza do Python, muita
coisa parece que é texto literal em inglês.
Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Pedro Werneck-2
In reply to this post by Danilo Cabello
2008/11/5 Danilo Faustinoni Cabello <[hidden email]>:
> Bom dia pessoal,
>
> Sei que a maioria dos Pythonistas também já viu Ruby até porque quando
> se aprende uma das linguagens a curva de aprendizado da outra é
> mínima.
>
> Gostaria de saber do pessoal que gosta de Python como eu:
>
> O que você traria de Ruby para o Python?

Pelo jeito você fala só da sintaxe, então absolutamente nada.

> Eu inicio minha lista de desejos:
> - Tchau self explicíto.

Isso é uma discussão antiga e já muito bem esclarecida aqui. É uma
questão de entender as diferenças. Ruby não tem necessidade do self
explícito porque implementa suporte a programação funcional e OO de
maneira diferente de Python, não é porque seja melhor nisso, é
simplesmente a decisão mais correta dentro do modelo que Ruby
implementa. Em Python a forma mais correta é com o self explícito. Pra
retirar o self explícito de Python, ou será um hack assustador, ou
transformar completamente a linguagem.

> - "abc".length ao contrário de len("abc")

Se insiste em usar assim, Python tem abc.__len__(), a função len() é
apenas uma forma de "açúcar sintático" para manter tudo mais legível e
garantir sempre uma única forma de acesso, pois caso s sequencia não
implemente __len__(), a função len() pode buscar de outras formas.
Você não viu minha palestra na PyconBrasil ano passado (ou dormiu :p).

> - "!" no final do método que modifica a instancia do objeto, exemplo:
> listaX.sort! (ordena a lista e altera a listaX para o resultado
> ordenado)
> - "?" no final do método que retorna true ou false, exemplo: listaX.vazia?

Não. Eu sou totalmente contra o uso de símbolos para qualquer marcação
desse tipo, que eu acredito somente aumentar a confusão da linguagem e
dificultar a leitura de código. Já sou bem contra até a escolha do @
para decorador, mas quem se lembra da discussão disso (que acho que
foi uma das mais longas sobre uma mudança em Python), a coisa chegou a
um ponto insuportável em que precisava escolher o menos pior. Mesmo
que fossem keywords, em Python essas marcações que você sugere não
cumpririam nenhum propósito que já não possa ser feito com o próprio
nome do método e atributo, e com docstrings.

> - "@" para atributos internos, exemplo @nome (em Ruby) = self.nome (em
> Python)

Essa também não faz muito sentido em Python, e se enquadra nos mesmos
argumentos lá do self explícito. Na verdade, a rigor, são exatamente a
mesma coisa!

> São pequenas coisas que acredito que deixariam programar em Python
> muito mais divertido.

<modo pastor on>Então você ainda não entendeu bem o que realmente
torna programar em Python de fato programação em Python! Vai ter de
reler o Zen of Python ajoelhado no grão de milho 1000 vezes!<modo
pastor off>

Brincadeiras à parte, eu diria que Python e Ruby são linguagens
igualmente capazes, mas estão no extremo oposto em uma série de pontos
diferentes. Para quem acompanha Python e Ruby, muito mais Python do
que Ruby, vê como as duas linguagens se afastam cada vez mais nesse
sentido à medida que evoluem. É o natural, e acho impossível alguém
gostar igualmente das duas. Por alguma razão, mais pessoas gostam de
Python, acham ser mais clara e produtiva.


> PS: Não quero flamewar ein! =D

Ninguém nunca quer, mas é assim que eles começam...


---
Pedro Werneck
Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Leonardo Santagada
In reply to this post by Osvaldo Santana Neto

On Nov 5, 2008, at 12:04 PM, Osvaldo Santana wrote:

> Oi Danilo,
>
> 2008/11/5 Danilo Faustinoni Cabello <[hidden email]>:
>> Bom dia pessoal,
>>
>> Sei que a maioria dos Pythonistas também já viu Ruby até porque  
>> quando
>> se aprende uma das linguagens a curva de aprendizado da outra é
>> mínima.
>>
>> Gostaria de saber do pessoal que gosta de Python como eu:
>>
>> O que você traria de Ruby para o Python?
>>
>> Eu inicio minha lista de desejos:
>> - Tchau self explicíto.
>
> Já foi explicado centenas de vezes aqui e em outros lugares a razão da
> existência do self explícito na definição de métodos.
>
>> - "abc".length ao contrário de len("abc")
>
> Uma coisa que eu gosto em Python é a forma de se 'ler' um programa. Eu
> leio 'if len("abc") > x: ...' como 'Se tamanho de "abc" for maior que
> x: faça tal coisa'.
>
> Eu faço essa leitura um-para-um como se fosse uma tradução literal  
> do texto.
>
> Não acontece o mesmo com "Se 'abc' tamanho for maior que x: faça". A
> leitura deixa de ser natural para qualquer um...

Não sei se esse é um bom motivo... eu simpelsmente não vejo muita  
diferença para len do que <obj>.length. Uma coisa legal é que len  
chama um metodo especial, que é a mesma forma que o + faz para somar  
dois objetos. Isso pra mim deixa a linguagem mais simples.

em suma eu votaria -0


>> - "!" no final do método que modifica a instancia do objeto, exemplo:
>> listaX.sort! (ordena a lista e altera a listaX para o resultado
>> ordenado)
>
> Sou -0 pra essa mudança...

+0 se viesse junto com a mudança de baixo.

>> - "?" no final do método que retorna true ou false, exemplo:  
>> listaX.vazia?
>
> Isso é legal justamente porque colabora com a leitura do código que eu
> citei acima. A forma mais comum é usar métodos 'is_...()' mas
> realmente falta a interrogação para facilitar a leitura/tradução.

+0

is_ é mais simples e mais fácil de ler. ambas eu acharia redundante.

>> - "@" para atributos internos, exemplo @nome (em Ruby) = self.nome  
>> (em Python)
>
> Isso não... mesmo lendo '@' como 'at' a coisa não cola porque eu odeio
> símbolos desnecessários em código.
>
> Aliás os símbolos de Ruby me impedem de forma recorrente de entender
> os códigos nessa linguagem.
>
> Veja... eu programei em Smalltalk por alguns anos que foi uma das
> bases da sintaxe de Ruby e mesmo assim não consigo entender um código
> em Ruby.
>
> O mesmo problema eu sinto com Perl.

-1 e eu tb acho muito bizarro códigos em ruby.


>> São pequenas coisas que acredito que deixariam programar em Python
>> muito mais divertido.
>
>
> O que eu gostaria de no universo Python que eu vejo funcionar muito
> bem com Ruby:
>
> - O Marketing - Tecnicamente falando os caras precisam 'tomar muito
> toddynho' pra se equivaler à Python no quesito ferramentas e
> implementação de VM. Mas mesmo assim as poucas ferramentas deles são
> conhecidas por todo mundo. Pergunte na rua quantas pessoas conhecem
> "Ruby" (nem que seja o RoR) e quantas conhecem Python?
>
> - Preocupação com o visual - Os sites, as aplicações e as
> documentações dos projetos em Python são visualmente toscos. Sério.
> Chegam a ser uma indecência de horríveis. Elas só conseguem adeptos
> porque são realmente muito boas porque se dependessem do visual de
> seus sites e do visual de suas documentações estariam perdidos. É
> claro existem excessões (Django, SQLAlchemy, ...)
>
> - Ferramentas/bibliotecas/frameworks para deploy - Estamos melhorando
> nisso mas acho que o problema está 'mais embaixo'. Acho que o sistema
> de pacotes e módulos do Python precisava de um cuidado especial nesse
> Py3k e não teve. Isso permitiria melhoras no distutils que permitiria
> uma evolução em toda a cadeia de deploy do Python
> (setuptools/easy_install, fabric, ...)

+3 para as três propostas do osvaldo, e eu acho que esses são  
realmente os pontos importantes. Eu acho que python não é tão hype  
quanto ruby, mas poderia ser.


Coisas que eu não quero em python:

- Prometer ser escalavel e não ser.
- modificar strings como se fossem dicionários string = "foo";  
string['foo'] = 'bar'
   é a coisa mais boba que eu já vi numa linguagem.


>> PS: Não quero flamewar ein! =D
>
> Hum... então prepare-se :)

--
Leonardo Santagada
santagada at gmail.com



Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Allison Vollmann
In reply to this post by Vinícius Figueiredo
Apesar de ter apenas visto o ruby bem por cima tem uma coisa que eu gostei bastante, que não tem no python, é a forma na qual ele deixa você inserir métodos em uma classe, por exemplo inserir um método na classe string, sem ter que criar uma outra classe herdando as propriedades dela como é feito no python

ex:

ruby:
"string".meumetodo()

python
d"string".meumetodo()

onde "d" seria a classe filha de str com o método desejado.

--- Em qua, 5/11/08, Vinícius de Figueiredo Silva <[hidden email]> escreveu:
De: Vinícius de Figueiredo Silva <[hidden email]>
Assunto: Re: [python-brasil] O que vocês pegariam de Ruby e trariam para o Python?
Para: [hidden email]
Data: Quarta-feira, 5 de Novembro de 2008, 12:10










   
            2008/11/5 Danilo Faustinoni Cabello <danilo.cabello@ gmail.com>:

> Bom dia pessoal,

>

> Sei que a maioria dos Pythonistas também já viu Ruby até porque quando

> se aprende uma das linguagens a curva de aprendizado da outra é

> mínima.

>

> Gostaria de saber do pessoal que gosta de Python como eu:

>

> O que você traria de Ruby para o Python?

>

> Eu inicio minha lista de desejos:

> - Tchau self explicíto.

> - "abc".length ao contrário de len("abc")

> - "!" no final do método que modifica a instancia do objeto, exemplo:

> listaX.sort! (ordena a lista e altera a listaX para o resultado

> ordenado)

> - "?" no final do método que retorna true ou false, exemplo: listaX.vazia?

> - "@" para atributos internos, exemplo @nome (em Ruby) = self.nome (em

> Python)

>

> São pequenas coisas que acredito que deixariam programar em Python

> muito mais divertido.

>

> PS: Não quero flamewar ein! =D

>



Eu não gosto muito de símbolos no meio do código, apesar de achar o ?

do Ruby interessante. Descobri que não gosto de símbolos tentando ler

Perl e um pouco de Ruby. Gosto bastante da clareza do Python, muita

coisa parece que é texto literal em inglês.


     

   
   
 
         
       
       








       


       
       


      Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses

[As partes desta mensagem que não continham texto foram removidas]

Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Kao Cardoso Felix
In reply to this post by Leonardo Santagada
Pra mim a coisa ficou muito estranha em Ruby quando eu vi isso:

a = %w[ foo bar baz ]

tipo, trocar umas aspas no meio do teu array por um xingamento no
começo dele é muito bizarro.

-1 para a inclusão de símbolos estranhos em Python

(apesar de eu ter achado a interrogação do Ruby bem bonitinha. a
exclamação, no entanto, eu acho desnecessária e feia)

--
Kao Cardoso Félix

Página pessoal: http://www.inf.ufrgs.br/~kcfelix
Blog: http://kaofelix.blogspot.com
Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Pedro Werneck-2
In reply to this post by Leonardo Santagada
On Wednesday 05 November 2008 12:24:24 Leonardo Santagada wrote:
> On Nov 5, 2008, at 12:04 PM, Osvaldo Santana wrote:
[corta]
> > - Ferramentas/bibliotecas/frameworks para deploy - Estamos melhorando
> > nisso mas acho que o problema está 'mais embaixo'. Acho que o sistema
> > de pacotes e módulos do Python precisava de um cuidado especial nesse
> > Py3k e não teve. Isso permitiria melhoras no distutils que permitiria
> > uma evolução em toda a cadeia de deploy do Python
> > (setuptools/easy_install, fabric, ...)

Uma coisa que me incomoda é o fato de começarem a ter se preocupado com o
release do 3k e não com todas essas mudanças que mereciam cuidado! Logo
começam as piadas com Python 4000...


[corta]
> - modificar strings como se fossem dicionários string = "foo";
> string['foo'] = 'bar'  é a coisa mais boba que eu já vi numa linguagem.

Hein? Isso é sério?


--
Pedro Werneck
Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Italo Maia-2
In reply to this post by Kao Cardoso Felix
Danilo, pois tudo oq vc sente falta no ruby, eu dow graças a deus todo dia
não ter no python! Acho que o ruby usa marcação em excesso!

2008/11/5 Kao Cardoso Felix <[hidden email]>

>   Pra mim a coisa ficou muito estranha em Ruby quando eu vi isso:
>
> a = %w[ foo bar baz ]
>
> tipo, trocar umas aspas no meio do teu array por um xingamento no
> começo dele é muito bizarro.
>
> -1 para a inclusão de símbolos estranhos em Python
>
> (apesar de eu ter achado a interrogação do Ruby bem bonitinha. a
> exclamação, no entanto, eu acho desnecessária e feia)
>
> --
> Kao Cardoso Félix
>
> Página pessoal: http://www.inf.ufrgs.br/~kcfelix<http://www.inf.ufrgs.br/%7Ekcfelix>
> Blog: http://kaofelix.blogspot.com
>  
>



--
"A arrogância é a arma dos fracos."

===========================
Italo Moreira Campelo Maia
Ciência da Computação - UECE
Desenvolvedor WEB e Desktop
Programador Java, Python
Ubuntu User For Life!
-----------------------------------------------------

Meu blog ^^ http://eusouolobomal.blogspot.com/

Meu site \ö/
http://www.italomaia.com

===========================


[As partes desta mensagem que não continham texto foram removidas]

Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Francisco A. S. Souza
In reply to this post by Bugzilla from thiagocoutinho1@gmail.com
Uma coisa que eu já senti falta no Python, e não sei se tem no Ruby, é
a sintaxe:

a = b == 1 ? true : false

Também já senti falta disso. (:

2008/11/5 Thiago Coutinho <[hidden email]>

>   2008/11/5 Danilo Faustinoni Cabello <[hidden email]<danilo.cabello%40gmail.com>
> >:
> > Bom dia pessoal,
> >
> > Sei que a maioria dos Pythonistas também já viu Ruby até porque quando
> > se aprende uma das linguagens a curva de aprendizado da outra é
> > mínima.
> >
> > Gostaria de saber do pessoal que gosta de Python como eu:
> >
> > O que você traria de Ruby para o Python?
> >
> > Eu inicio minha lista de desejos:
> > - Tchau self explicíto.
> > - "abc".length ao contrário de len("abc")
> > - "!" no final do método que modifica a instancia do objeto, exemplo:
> > listaX.sort! (ordena a lista e altera a listaX para o resultado
> > ordenado)
> > - "?" no final do método que retorna true ou false, exemplo:
> listaX.vazia?
> > - "@" para atributos internos, exemplo @nome (em Ruby) = self.nome (em
> > Python)
> >
> > São pequenas coisas que acredito que deixariam programar em Python
> > muito mais divertido.
>
> Uma coisa que eu já senti falta no Python, e não sei se tem no Ruby, é
> a sintaxe:
>
> a = b == 1 ? true : false
>
> Já sei, já sei: Explícito é melhor que implícito! :^)
>
> --
> Thiago Coutinho - http://thiago.bunghole.com.br/
>
> A: Because it messes up the order in which people normally read text.
> Q: Why is top-posting such a bad thing?
> A: Top-posting.
> Q: What is the most annoying thing on usenet and in e-mail?
>
> echo '16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq' | dc
>  
>



--
Francisco A. S. Souza
Development with Opensource Software Evangelist (:


[As partes desta mensagem que não continham texto foram removidas]

Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Osvaldo Santana Neto
In reply to this post by Bugzilla from thiagocoutinho1@gmail.com
Oi Thiago,


2008/11/5 Thiago Coutinho <[hidden email]>:
> 2008/11/5 Danilo Faustinoni Cabello <[hidden email]>:
[corta]

> Uma coisa que eu já senti falta no Python, e não sei se tem no Ruby, é
> a sintaxe:
>
> a = b == 1 ? true : false
>
> Já sei, já sei: Explícito é melhor que implícito! :^)

É uma sintaxe nova (não lembro se veio com o Python 2.4 ou 2.5) mas:

a = ('foo' if bar else 'baz')

É o equivalente em C:

a = bar ? "foo" : "baz";

Valeu,
Osvaldo

--
Osvaldo Santana Neto
Fone: 41-9244-1646
http://www.pythonologia.org
Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Marinho Brandao
In reply to this post by Osvaldo Santana Neto
Concordo com o Osvaldo de ponta a ponta.

Sem sentido pejorativo, sério, acho que o marketing, seja na
apresentação visual, seja na retórica ou no cuidado com a comunicação,
o Ruby dá show, especialmente em adotar as palavras "divertisão" e
"divertido" excessivamente ao ponto de virar sinônimo popular.

;)

2008/11/5 Osvaldo Santana <[hidden email]>:

> Oi Danilo,
>
> 2008/11/5 Danilo Faustinoni Cabello <[hidden email]>:
>> Bom dia pessoal,
>>
>> Sei que a maioria dos Pythonistas também já viu Ruby até porque quando
>> se aprende uma das linguagens a curva de aprendizado da outra é
>> mínima.
>>
>> Gostaria de saber do pessoal que gosta de Python como eu:
>>
>> O que você traria de Ruby para o Python?
>>
>> Eu inicio minha lista de desejos:
>> - Tchau self explicíto.
>
> Já foi explicado centenas de vezes aqui e em outros lugares a razão da
> existência do self explícito na definição de métodos.
>
>> - "abc".length ao contrário de len("abc")
>
> Uma coisa que eu gosto em Python é a forma de se 'ler' um programa. Eu
> leio 'if len("abc") > x: ...' como 'Se tamanho de "abc" for maior que
> x: faça tal coisa'.
>
> Eu faço essa leitura um-para-um como se fosse uma tradução literal do texto.
>
> Não acontece o mesmo com "Se 'abc' tamanho for maior que x: faça". A
> leitura deixa de ser natural para qualquer um...
>
>> - "!" no final do método que modifica a instancia do objeto, exemplo:
>> listaX.sort! (ordena a lista e altera a listaX para o resultado
>> ordenado)
>
> Sou -0 pra essa mudança...
>
>> - "?" no final do método que retorna true ou false, exemplo: listaX.vazia?
>
> Isso é legal justamente porque colabora com a leitura do código que eu
> citei acima. A forma mais comum é usar métodos 'is_...()' mas
> realmente falta a interrogação para facilitar a leitura/tradução.
>
>> - "@" para atributos internos, exemplo @nome (em Ruby) = self.nome (em
>> Python)
>
> Isso não... mesmo lendo '@' como 'at' a coisa não cola porque eu odeio
> símbolos desnecessários em código.
>
> Aliás os símbolos de Ruby me impedem de forma recorrente de entender
> os códigos nessa linguagem.
>
> Veja... eu programei em Smalltalk por alguns anos que foi uma das
> bases da sintaxe de Ruby e mesmo assim não consigo entender um código
> em Ruby.
>
> O mesmo problema eu sinto com Perl.
>
>> São pequenas coisas que acredito que deixariam programar em Python
>> muito mais divertido.
>
> O que eu gostaria de no universo Python que eu vejo funcionar muito
> bem com Ruby:
>
> - O Marketing - Tecnicamente falando os caras precisam 'tomar muito
> toddynho' pra se equivaler à Python no quesito ferramentas e
> implementação de VM. Mas mesmo assim as poucas ferramentas deles são
> conhecidas por todo mundo. Pergunte na rua quantas pessoas conhecem
> "Ruby" (nem que seja o RoR) e quantas conhecem Python?
>
> - Preocupação com o visual - Os sites, as aplicações e as
> documentações dos projetos em Python são visualmente toscos. Sério.
> Chegam a ser uma indecência de horríveis. Elas só conseguem adeptos
> porque são realmente muito boas porque se dependessem do visual de
> seus sites e do visual de suas documentações estariam perdidos. É
> claro existem excessões (Django, SQLAlchemy, ...)
>
> - Ferramentas/bibliotecas/frameworks para deploy - Estamos melhorando
> nisso mas acho que o problema está 'mais embaixo'. Acho que o sistema
> de pacotes e módulos do Python precisava de um cuidado especial nesse
> Py3k e não teve. Isso permitiria melhoras no distutils que permitiria
> uma evolução em toda a cadeia de deploy do Python
> (setuptools/easy_install, fabric, ...)
>
>> PS: Não quero flamewar ein! =D
>
> Hum... então prepare-se :)
>
> Valeu,
> Osvaldo
>
> --
> Osvaldo Santana Neto
> Fone: 41-9244-1646
> http://www.pythonologia.org
>
>



--
Marinho Brandão (José Mário)
http://marinhobrandao.com/
Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Marinho Brandao
*diversão

2008/11/5 Marinho Brandao <[hidden email]>:

> Concordo com o Osvaldo de ponta a ponta.
>
> Sem sentido pejorativo, sério, acho que o marketing, seja na
> apresentação visual, seja na retórica ou no cuidado com a comunicação,
> o Ruby dá show, especialmente em adotar as palavras "divertisão" e
> "divertido" excessivamente ao ponto de virar sinônimo popular.
>
> ;)
>
> 2008/11/5 Osvaldo Santana <[hidden email]>:
>> Oi Danilo,
>>
>> 2008/11/5 Danilo Faustinoni Cabello <[hidden email]>:
>>> Bom dia pessoal,
>>>
>>> Sei que a maioria dos Pythonistas também já viu Ruby até porque quando
>>> se aprende uma das linguagens a curva de aprendizado da outra é
>>> mínima.
>>>
>>> Gostaria de saber do pessoal que gosta de Python como eu:
>>>
>>> O que você traria de Ruby para o Python?
>>>
>>> Eu inicio minha lista de desejos:
>>> - Tchau self explicíto.
>>
>> Já foi explicado centenas de vezes aqui e em outros lugares a razão da
>> existência do self explícito na definição de métodos.
>>
>>> - "abc".length ao contrário de len("abc")
>>
>> Uma coisa que eu gosto em Python é a forma de se 'ler' um programa. Eu
>> leio 'if len("abc") > x: ...' como 'Se tamanho de "abc" for maior que
>> x: faça tal coisa'.
>>
>> Eu faço essa leitura um-para-um como se fosse uma tradução literal do texto.
>>
>> Não acontece o mesmo com "Se 'abc' tamanho for maior que x: faça". A
>> leitura deixa de ser natural para qualquer um...
>>
>>> - "!" no final do método que modifica a instancia do objeto, exemplo:
>>> listaX.sort! (ordena a lista e altera a listaX para o resultado
>>> ordenado)
>>
>> Sou -0 pra essa mudança...
>>
>>> - "?" no final do método que retorna true ou false, exemplo: listaX.vazia?
>>
>> Isso é legal justamente porque colabora com a leitura do código que eu
>> citei acima. A forma mais comum é usar métodos 'is_...()' mas
>> realmente falta a interrogação para facilitar a leitura/tradução.
>>
>>> - "@" para atributos internos, exemplo @nome (em Ruby) = self.nome (em
>>> Python)
>>
>> Isso não... mesmo lendo '@' como 'at' a coisa não cola porque eu odeio
>> símbolos desnecessários em código.
>>
>> Aliás os símbolos de Ruby me impedem de forma recorrente de entender
>> os códigos nessa linguagem.
>>
>> Veja... eu programei em Smalltalk por alguns anos que foi uma das
>> bases da sintaxe de Ruby e mesmo assim não consigo entender um código
>> em Ruby.
>>
>> O mesmo problema eu sinto com Perl.
>>
>>> São pequenas coisas que acredito que deixariam programar em Python
>>> muito mais divertido.
>>
>> O que eu gostaria de no universo Python que eu vejo funcionar muito
>> bem com Ruby:
>>
>> - O Marketing - Tecnicamente falando os caras precisam 'tomar muito
>> toddynho' pra se equivaler à Python no quesito ferramentas e
>> implementação de VM. Mas mesmo assim as poucas ferramentas deles são
>> conhecidas por todo mundo. Pergunte na rua quantas pessoas conhecem
>> "Ruby" (nem que seja o RoR) e quantas conhecem Python?
>>
>> - Preocupação com o visual - Os sites, as aplicações e as
>> documentações dos projetos em Python são visualmente toscos. Sério.
>> Chegam a ser uma indecência de horríveis. Elas só conseguem adeptos
>> porque são realmente muito boas porque se dependessem do visual de
>> seus sites e do visual de suas documentações estariam perdidos. É
>> claro existem excessões (Django, SQLAlchemy, ...)
>>
>> - Ferramentas/bibliotecas/frameworks para deploy - Estamos melhorando
>> nisso mas acho que o problema está 'mais embaixo'. Acho que o sistema
>> de pacotes e módulos do Python precisava de um cuidado especial nesse
>> Py3k e não teve. Isso permitiria melhoras no distutils que permitiria
>> uma evolução em toda a cadeia de deploy do Python
>> (setuptools/easy_install, fabric, ...)
>>
>>> PS: Não quero flamewar ein! =D
>>
>> Hum... então prepare-se :)
>>
>> Valeu,
>> Osvaldo
>>
>> --
>> Osvaldo Santana Neto
>> Fone: 41-9244-1646
>> http://www.pythonologia.org
>>
>>
>
>
>
> --
> Marinho Brandão (José Mário)
> http://marinhobrandao.com/
>



--
Marinho Brandão (José Mário)
http://marinhobrandao.com/
Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Thiago F. Pappacena
In reply to this post by Osvaldo Santana Neto
[cut]
> É uma sintaxe nova (não lembro se veio com o Python 2.4 ou 2.5) mas:
>
> a = ('foo' if bar else 'baz')
>
> É o equivalente em C:
>
> a = bar ? "foo" : "baz";

Veio no Python 2.5... no python-2.4 eu ainda sentia falta disso... :-P

--
[]'s,
Thiago F. Pappacena

Good things come for those who wait...
... and for the efficient people who doesn't wait too, but faster:
Open source, XP, OO, Python, VIM, Bash and Gentoo.
Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Danilo Cabello
In reply to this post by Italo Maia-2
2008/11/5 Italo Maia <[hidden email]>:
> Danilo, pois tudo oq vc sente falta no ruby, eu dow graças a deus todo dia
> não ter no python! Acho que o ruby usa marcação em excesso!

Pelo visto o pessoal realmente não gosta de símbolos, mas eu fico
pensando, não usamos símbolos diariamente?

Se um método modifica o objeto ao invés de apenas retornar o resultado
a exclamação não faz parte do nosso mundo como um todo? Exemplo:
Atenção! ganha mais efeito que Atenção.

Assim como uma pergunta, está certo que muitas perguntas não são
respondidas em meros sims e nãos mas não faz sentido perguntarmos algo
pra máquina e ela nos retornar Verdadeiro ou Falso?

Eu acho que em matéria de pseudo-código o Python ganha de Ruby de
lavada, o exemplo do Kao "a = %w[ foo bar baz ]" já mostra isso.

Na minha humilde opinião ao ler um livro que trata de algum assunto de
computação, onde os exemplos são em Python e sem nunca ter estudado
Python na vida, fica muito fácil ler o código (se o autor seguir o
Zen) como se fosse até um pseudo-código, nesse sentido interrogações e
exclamações aproximariam programador do mundo não programador.

Talvez a arroba realmente seja uma má idéia pesando nos simbolismos.

PS: Sabemos de discussões anteriores a explicitade do self, sei que o
buraco é mais embaixo é de implementação, eu acostumei a digitar self
até fazer sentido de tanto que digitei, mas se eu paro por um momento
e pisco os olhos, não faz sentido o self explicito (pelo menos pra mim
:D).
Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Luciano Ramalho
In reply to this post by Danilo Cabello
2008/11/5 Danilo Faustinoni Cabello <[hidden email]>:
> São pequenas coisas que acredito que deixariam programar em Python
> muito mais divertido.
>
> PS: Não quero flamewar ein! =D

Eu também não quero flamewar, mas vou dizer aqui uma coisa do Python
que faz muita falta no Ruby: namespaces.

Acho péssimo que quando eu dou require usina_nuclear (perdão se a
sintaxe tá errada, não uso Ruby desde 2006) eu não sei quantos nomes
de usina_nuclear passarão a poluir o meu namespace local.

Uma consequencia disso é que fica mais difícil ler código dos outros.
Se eu estou lendo um programa e encontro uma referência a xyz, vou até
o topo do arquivo e vejo que tem 4 requires. Aí eu fico sem saber em
qual dos módulos está a definição de xyz.

Em Python isso não acontece porque a gente usa imports explícitos do tipo:

from abc import xyz

ou então

import abc

e neste caso eu tenho que ser explícito ao me referir ao xyz, assim: abc.xyz


Agora, em casos muito particulares o comportamento do Ruby pode ser
mais conveniente, mas aí o Python também resolve. Basta escrever:

from usina_nuclear import *

E pronto!

[ ]s
Luciano

PS. Outra coisa que eu acho demais em Python, e falta no Ruby, é toda
a flexibilidade de passagem de parâmetros que a gente tem. Veja estes
slides:

http://ramalho.org/apres/oo-python/slides.html#passagem-flex-vel-de-par-metros
Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Laércio Benedito de Sousa Júnior
In reply to this post by Danilo Cabello
Algo que eu gostaria que houvesse em Python e que é razoavelmente
implementado em Ruby é o encapsulamento. Em alguns dos programas que eu já
fiz em Python, senti uma grande vontade de implementar variáveis
"read-only", mas, por não haver encapsulamento em Python, isso fica
impossível (o máximo que eu já consegui foi criar um "property" cujo "fset"
retorna uma mensagem de erro do tipo "Attribute <x> is intended to be a
read-only variable. Please do not modify it!")

Apesar disso, estou conformado de que muito dificilmente verei
encapsulamento implementado em Python no futuro, mesmo porque encapsulamento
parece não combinar com linguagens interpretadas.


[As partes desta mensagem que não continham texto foram removidas]

Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Kao Cardoso Felix
In reply to this post by Danilo Cabello
2008/11/5 Danilo Faustinoni Cabello <[hidden email]>:
> Se um método modifica o objeto ao invés de apenas retornar o resultado
> a exclamação não faz parte do nosso mundo como um todo? Exemplo:
> Atenção! ganha mais efeito que Atenção.

Danilo, eu acho que o uso de símbolos no caso do ? é bem explícito
quanto ao fato de estarmos perguntando algo, mas no caso da exclamação
(!) o que exatamente quer dizer "Atenção!" na execução de um método?
Acho que tem diversos casos para dizer que um método precisa de
atenção! e decidir quais são eles é muito mais subjetivo do que no
caso da interrogação. Pelo menos é o que eu acho.

A caminho do almoço, pensando no assunto, também me veio na cabeça que
foo.metodo?() ficaria meio feio por causa do ?().
--
Kao Cardoso Félix

Página pessoal: http://www.inf.ufrgs.br/~kcfelix
Blog: http://kaofelix.blogspot.com
Reply | Threaded
Open this post in threaded view
|

Re: O que vocês pegariam de Ruby e trariam para o Python?

Leonardo Santagada

On Nov 5, 2008, at 2:45 PM, Kao Cardoso Felix wrote:

> 2008/11/5 Danilo Faustinoni Cabello <[hidden email]>:
>> Se um método modifica o objeto ao invés de apenas retornar o  
>> resultado
>> a exclamação não faz parte do nosso mundo como um todo? Exemplo:
>> Atenção! ganha mais efeito que Atenção.
>
> Danilo, eu acho que o uso de símbolos no caso do ? é bem explícito
> quanto ao fato de estarmos perguntando algo, mas no caso da exclamação
> (!) o que exatamente quer dizer "Atenção!" na execução de um método?
> Acho que tem diversos casos para dizer que um método precisa de
> atenção! e decidir quais são eles é muito mais subjetivo do que no
> caso da interrogação. Pelo menos é o que eu acho.

Esse é justamente o problema que eu não tinha pensado, ! não quer  
dizer in place em nenhuma lingua ou cultura que eu conheço.

Ainda é algo estranho alguns metodos de string retornarem o resultado  
e outros serem inplace.


> A caminho do almoço, pensando no assunto, também me veio na cabeça que
> foo.metodo?() ficaria meio feio por causa do ?().

Bem feio na verdade... só funciona no ruby porque executar um metodo  
sem argumentos ou acessar uma variavel é feito da mesma forma, o que  
eu acho meio bizarro. Properties existem em python mas ainda bem são  
usadas com parcimonia (acertei a palavra?) então não me irritam tanto  
quanto algo embutido na linguagem e forçado.

Ficamos com o is_ na frente de metodos que retornam booleanos e que  
não seriam claros sobre isso.

--
Leonardo Santagada
santagada at gmail.com



1234 ... 7