[python-brasil] Engine de xadrez

86 views
Skip to first unread message

rdavid_cwb

unread,
Mar 30, 2007, 9:40:31 PM3/30/07
to python...@yahoogrupos.com.br

Olá pessoal

Estou estudando para fazer um jogo de xadrez com engine (uma pessoa
joga contra o computador) e tenho vontade de fazer o jogo inteiro em
Python. Como sou novo na linguagem (estou terminando de ler o tutorial
do site oficial) tenho receio que a aplicação possa ter problemas de
performance, pois os algoritmos que fazem o computador jogar são
bastante "pesados". Gostaria de saber a opinião de programadores
experientes em Python a respeito desse assunto.

Obrigado

Rafael

__._,_.___
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

Rodrigo Senra

unread,
Mar 31, 2007, 12:52:24 PM3/31/07
to python...@yahoogrupos.com.br


On 30Mar 2007, at 10:40 PM, rdavid_cwb wrote:

> Olá pessoal
>
> Estou estudando para fazer um jogo de xadrez com engine (uma pessoa
> joga contra o computador) e tenho vontade de fazer o jogo inteiro em
> Python. Como sou novo na linguagem (estou terminando de ler o tutorial
> do site oficial) tenho receio que a aplicação possa ter problemas de
> performance, pois os algoritmos que fazem o computador jogar são
> bastante "pesados".

Bom, qual o seu hardware ? DeepBlue ? ;o)
Hehehe de fato Python (por enquanto) tem um desempenho em tempo
de execução inferior a código nativo. Em compensação o tempo de
desenvolvimento em Python é *muito* mais curto e o processo *muito*
mais agradável.



> Gostaria de saber a opinião de programadores
> experientes em Python a respeito desse assunto.

Eu começaria a escrever em Python e se no futuro vc precisar
melhorar o desempenho, pode isolar trechos críticos do algoritmo
em módulos externos escritos em C ou C++ (cujo interfaceamento
com Python é facilitado por ferramentas e uma API especial).

Abração,
Senra

Rodrigo Senra
______________
rsenra @ acm.org
http://rodrigo.senra.nom.br

__._,_.___

__,_._,___

Sidnei Vladisauskis

unread,
Mar 31, 2007, 1:00:23 PM3/31/07
to python...@yahoogrupos.com.br

É, um jogo de xadrez vai exercer grandes cálculos, mais é uma idéia bem
legal.

Se não tivesse com meu projeto faria 1 desses.

Em relação a desempenho acho o python bem satisfatório.

Meu projeto é um socket que recebe dados vindo de uma interface flash, trata
com cálculos, grava no banco e retorna o resultado pro flash.

Me preocupo muito com o desempenho e notei que com python é bem mais rápido
e leve do que fazer um socket em Java.

Mas isso é um caso específico, não sei como é no geral....

<http://www.v7v.com.br/> logo
<http://www.v7v.com.br/> WWW.V7V.COM.BR

Sidnei Vladisauskis

EMAIL: <mailto:sid...@v7v.com.br> sid...@v7v.com.br

MSN: <mailto:sid...@v7v.com.br> sid...@v7v.com.br

SKYPE: sidneivl

TEL.: 55 (11) 3717-4071

CEL.: 55 (11) 8116-6925

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


__,_._,___

Eduardo Willians

unread,
Mar 31, 2007, 3:36:21 PM3/31/07
to python...@yahoogrupos.com.br

>
>
>
>
>

>
> Bom, qual o seu hardware ? DeepBlue ? ;o)
> Hehehe de fato Python (por enquanto) tem um desempenho em tempo
> de execução inferior a código nativo. Em compensação o tempo de
> desenvolvimento em Python é *muito* mais curto e o processo *muito*
> mais agradável.
>
> > Gostaria de saber a opinião de programadores
> > experientes em Python a respeito desse assunto.
>
> Eu começaria a escrever em Python e se no futuro vc precisar
> melhorar o desempenho, pode isolar trechos críticos do algoritmo
> em módulos externos escritos em C ou C++ (cujo interfaceamento
> com Python é facilitado por ferramentas e uma API especial).
>
> Abração,
> Senra
>
> Rodrigo Senra

Senra, deixa eu perguntar uma coisa. Como Python poderia se tornar
mais rápido? Só se for escrito em Assmbly, ou sei-lá. Aliás,
aproveitando, se Python foi escrito em C, em que foi escrito C?

Ps.: A velocidade de python para mim não é problema pra minhas
pequenas aplicações. Sou devoto. "Time is not a problem until is it is
a problem".

Na paz,

Eduardo Willians


__,_._,___

Luciano Pacheco

unread,
Mar 31, 2007, 4:40:37 PM3/31/07
to python...@yahoogrupos.com.br

Eduardo Willians escreveu:
[...]


> Senra, deixa eu perguntar uma coisa. Como Python poderia se tornar
> mais rápido?

Essa pergunta eu vou deixar para o pessoal responder.



>Só se for escrito em Assmbly, ou sei-lá. Aliás,
> aproveitando, se Python foi escrito em C, em que foi escrito C?

Bom o CPython foi escrito em C, esse é o Python padrão que utilizamos
hoje em dia.

Mas temos o PyPy (Python escrito em Python!), o Stackless Python
(variação do CPython), o IronPython (.Net).

Uma coisa que já foi dita aqui na lista é que o IronPython em algumas
coisas é bem mais rápido que o CPython.

Ai você vai ficar indignado e peguntar como ? porque ? Pelo menos eu
fiquei assim. :)

O CPython é feito pensando em ter um código simples de manter e que seja
portável para outras arquiteturas e plataformas.

Já o IronPython foi feito para rodar sobre o .Net, e essa plataforma tem
"trocentas" coisas feitas pensando em velocidade.

Por isso no geral o CPython tem poucos bugs, roda em Linux, Unix, Mac, e
até no Windows. Ah ia me esquencendo roda no Maemo e no Symbian também.

Isso quer dizer que também roda em arm, x86, ppc e sei lá mais o que.

Depois que formei esse raciocínio, fique muito feliz pelo CPython ser
"tão lento", mas sempre é estável mesmo sempre tendo muitas novidades. :)



> Ps.: A velocidade de python para mim não é problema pra minhas
> pequenas aplicações. Sou devoto. "Time is not a problem until is it is
> a problem".

Para mim também não. :)

Até mais,
--
Luciano Pacheco
http://lucmult.wordpress.com/


__,_._,___

Rodrigo Senra

unread,
Mar 31, 2007, 4:49:44 PM3/31/07
to python...@yahoogrupos.com.br


On 31Mar 2007, at 4:36 PM, Eduardo Willians wrote:

>
> Senra, deixa eu perguntar uma coisa. Como Python poderia se tornar
> mais rápido?

Parte da "lerdeza" do Python advém de sua dinamicidade,
muita coisa só é definida em tempo de execução:

- onde estão os objetos (escopo local, global, builtin)
- que função vai ser executada
- quais os tipos dos parâmetros



> Só se for escrito em Assmbly, ou sei-lá.

Não precisaria ser assembly. Linguagens estaticamente tipadas
já possuem técnicas consagradas de otimização:

- sabendo onde está a função eu apenas dou um salto para
o offset na posição de memória onde está o código a ser
executado
- da mesma forma, acessar "objetos" muitas vezes significa
pegar um região pré-definida de bytes na memória (conhecendo
o offset e tamanho)
- conhecendo os tipos dos parâmetros é possível alocar registradores
ao invés de empilar os parâmetros na pilha
etc etc etc

As linguagens de execução rápida estão próximas do modelo da máquina.
Ex.: Assembly, C

As linguagens de desenvolvimento rápido estão próximas do modelo
mental do
desenvolvedor
Ex.: Python, Lisp, Prolog

Esse é o yin/yang do design de linguagens de programação.
Existe o projeto Psyco que agregou algumas otimizações para
programas em Python. Seu criador, Armin Rigo, agora trabalha
no projeto Pypy. O Pypy entre outros objetivos visa a criar
VMs otimizadas para execução de código Python.



> Aliás, aproveitando, se Python foi escrito em C,

O Pypy é uma VM Python escrita em ... Python ;o)



> em que foi escrito C?

O ovo ou a galinha certo ? Bom o primeiro compilador C foi escrito
em uma linguagem certamente diferente de C (provavelmente Assembly ou
BCPL).
Mas este conceito não devia causar supresa:
- hoje o Linux é desenvolvido em máquinas rodando ... Linux
- o projeto (fonte) svn é hospedado em um servidor SVN
e por aí vai

Reflexão por toda parte.



Abração,
Senra

Rodrigo Senra
______________
rsenra @ acm.org
http://rodrigo.senra.nom.br


__,_._,___

Rafael Colucci

unread,
Mar 31, 2007, 4:57:39 PM3/31/07
to python...@yahoogrupos.com.br

Pelo que sei C e escrito em assembly com algumas partes em linguagem de
maquina mesmo.

Rafael Colucci


__,_._,___

Paul Eipper

unread,
Mar 31, 2007, 6:11:59 PM3/31/07
to python...@yahoogrupos.com.br

C não é escrito em nada, pois C é a linguagem. O que é escrito são os
compiladores. E existem muitos compiladores C.
O GCC, que é um dos mais importantes, por exemplo, é escrito em -- pasme --
C ! :P

Aliás, Assembly é diretamente equivalente à linguagem de máquina ;)

http://www.bellevuelinux.org/gcc.html
http://cm.bell-labs.com/cm/cs/who/dmr/primevalC.html
http://www.thescripts.com/forum/thread212166.html
--
Paul Eipper

Em 31/03/07, Rafael Colucci <rafacolucci@gmail.com> escreveu:

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

__._,_.___
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

Paul Eipper

unread,
Mar 31, 2007, 6:16:19 PM3/31/07
to python...@yahoogrupos.com.br

Hm, estamos off-topic.

Voltando ao assunto, recomendo dar uma olhada em TDD, ou Test Driven
Development, especialmente no blog do Danilo Sato [1], onde ele começa a
implementar o jogo Stratego em Python usando o método TDD. Pode ser de
alguma ajuda.

[1] http://www.dtsato.com/blog/default/Agile/XP/?query=TDD em combate -
parte
--
Paul Eipper

Em 31/03/07, Paul Eipper <lkraider@gmail.com> escreveu:


__,_._,___

Leonardo Santagada

unread,
Mar 31, 2007, 6:57:18 PM3/31/07
to python...@yahoogrupos.com.br



Eduardo Willians wrote:
>
>
> Senra, deixa eu perguntar uma coisa. Como Python poderia se tornar
> mais rápido? Só se for escrito em Assmbly, ou sei-lá. Aliás,
> aproveitando, se Python foi escrito em C, em que foi escrito C?
>
> Ps.: A velocidade de python para mim não é problema pra minhas
> pequenas aplicações. Sou devoto. "Time is not a problem until is it is
> a problem".
>
> Na paz,
>
> Eduardo Willians
>
>

A pergunta foi pro senra, mas eu vou me candidatar a responde-la, de um
jeito mais senra possivel :)

Para se ter tempo de execução menor, que é o que normalmente se fala quando
o assunto é performance existem 2 caminhos a se seguir. Um é limitando a
dinamicidade da linguagem e usar as mesmas abordagens das linguagens
estaticamente tipadas como c, c++, haskell que é de se inferir os tipos e
fazer uma compilação do código para código de maquina. O outro é fazendo o
que o pessoal do projeto pypy (no qual eu me incluo, pelo menos em espirito)
que é de se construir um interpretador melhor, tão melhor a ponto de ter um
jit dinamico de python por exemplo. Esse jit dinamico significa gerar
durante a execução código de maquina que é especializado para o tipo de dado
sendo tratado. Isso teoricamente pode acançar uma performance melhor do que
compilação estatica em casos onde os tipos mudam durante o programa, mas são
razoavelmente estaticos durante um periodo (relativamente mais curto do que
a execução do programa todo), assim conseguindo o que a gente chama de "mais
rapido do que C".

Agora o outro ponto da tua pergunta é uma confusão entre o que significa
performance. Não faz diferença a linguagem em que um "compilador" foi
escrito mas sim a qualidade do código que ele gera. O python hoje gera
bytecodes que são rodados numa maquina virtual, essa escrita em C, a qual
tem baixa performance. Mesmo escrevendo a maquina virtual em assembly não
faria muita diferença em termos de performance, o que precisa mudar é mais
profundo é a natureza do código gerado, e provavelmente não fazer
interpretação em uma vm como é feita hoje. A idéia é tipo a de implementar
um bublesort em C ou em assembly, ambos vão ter performances muito
parecidas, enquanto um timsort (o algoritmo de sort que o python usa) seria
mais rapido que ambos mesmo em python.

Agora sobre o motor de xadrez, eu vou escrever um motor para um jogo de IA
que eu recebi de trabalho final de uma cadeira. A minha idéia vai ser tentar
escrever ele todo em RPython e usar o pypy pra compilar ele pra código de
maquina... A minha idéia é mais pra aprender sobre as limitações do pypy mas
pode ser divertido pra ti também é mais uma dica. A outra é usar o psyco, eu
lembro de ler sobre uma engine de xadrez q ficava mais de 20 vezes mais
rapida usando ele. No ramo de escrever código C/C++ tu pode usar o pyrex,
swig, boost.python pra te ajudar ou até fazer uma lib normal e usar o ctypes
para fazer chamadas(cuidado pode não ficar tão bom usando o ctypes do que
com os outros). Ou ainda faz a engine e espera que o pypy 1.0 já foi
lançado e estamos quase lá pra fazer um python mais rapido!

obs: segura essa senra, agora tu virou um adjetivo :)

Meus 2 centavos,
Leonardo Santagada

--
View this message in context: http://www.nabble.com/Engine-de-xadrez-tf3497040.html#a9773134
Sent from the Python - Brasil mailing list archive at Nabble.com.

__._,_.___
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

Leonardo Gregianin

unread,
Mar 31, 2007, 7:13:49 PM3/31/07
to python...@yahoogrupos.com.br, Paul Eipper

Rafael,
Os dois principais jogos de xadrez em Python são o Pychess e o
glChess, os dois são escritos em pygtk e não perdem em nada em
performance com relação a outros jogos em outras linguagens e para
hardwares popularmente usados. Só o Pychess tem uma engine própria de
xadrez que nas versões inferiores a 0.6 tinha problemas de algoritmos
lentos, mas a partir da 0.6 está muita rápida.

leonardo.


__,_._,___

Nilton Volpato

unread,
Mar 31, 2007, 11:09:47 PM3/31/07
to python...@yahoogrupos.com.br

Oi Leonardo,

On 3/31/07, Leonardo Santagada <santagada@gmail.com> wrote:
[...]


> Agora sobre o motor de xadrez, eu vou escrever um motor para um jogo de IA
> que eu recebi de trabalho final de uma cadeira. A minha idéia vai ser tentar
> escrever ele todo em RPython e usar o pypy pra compilar ele pra código de
> maquina... A minha idéia é mais pra aprender sobre as limitações do pypy mas

[...]

Aliás, esse é um assunto muito interessante: usar o tradutor do pypy
para traduzir um código em RPython para C, por exemplo. Eu fiz o
checkout do pypy justamente para tentar fazer isso, mas acho que me
perdi dentro de vários sub-projetos que o pypy possui atualmente.

Você sabe se existe algum tutorial voltado para isso especificamente?
Ou, se não houver, já que você está envolvido no pypy e pretende fazer
exatamente isso para a sua engine do jogo de IA, que tal escrever um
pequeno tutorial sobre como fazer isso?

Abração,
-- Nilton

__._,_.___
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

Rodrigo Senra

unread,
Apr 1, 2007, 9:18:09 AM4/1/07
to python...@yahoogrupos.com.br


On 31Mar 2007, at 7:57 PM, Leonardo Santagada wrote:

>
> A pergunta foi pro senra, mas eu vou me candidatar a responde-la,

Hehehe aqui qualquer pergunta é *sempre* para a Galera ;o)



> de um jeito mais senra possivel :)

> obs: segura essa senra, agora tu virou um adjetivo :)

s/senra/Senra/ ;oP



> Agora sobre o motor de xadrez, eu vou escrever um motor para um
> jogo de IA
> que eu recebi de trabalho final de uma cadeira. A minha idéia vai
> ser tentar
> escrever ele todo em RPython e usar o pypy pra compilar ele pra
> código de
> maquina

Muuuuuuito maaaaacho!



> No ramo de escrever código C/C++ tu pode usar o pyrex,
> swig, boost.python pra te ajudar ou até fazer uma lib normal e usar
> o ctypes
> para fazer chamadas(cuidado pode não ficar tão bom usando o ctypes
> do que
> com os outros).

Tirando o ctypes, eu experimentei essas alternativas e ainda assim achei
mais simples e gerenciável escrever C-extensions na mão sem
"wrapper-generators".

Não é tão complicado quanto parece e dá muito mais segurança para o
desenvolvedor quando algo dá errado. O SWIG é simpático quando vc
precisa
extender em mais de uma linguagem (além do Python), mas este "use
case" é
mais raro.



> Ou ainda faz a engine e espera que o pypy 1.0 já foi
> lançado e estamos quase lá pra fazer um python mais rapido!

Concordo, para quem puder esperar, é o caminho mais transparente e
com melhor potencial de bons resultados. Todavia, eu não prenderia
a respiração enquanto espero ;o)



Abração,
Senra

Rodrigo Senra
______________
rsenra @ acm.org
http://rodrigo.senra.nom.br

__._,_.___
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

Leonardo Santagada

unread,
Apr 1, 2007, 10:28:24 AM4/1/07
to python...@yahoogrupos.com.br



Nilton Volpato wrote:
>
> Oi Leonardo,


>
> Aliás, esse é um assunto muito interessante: usar o tradutor do pypy
> para traduzir um código em RPython para C, por exemplo. Eu fiz o
> checkout do pypy justamente para tentar fazer isso, mas acho que me
> perdi dentro de vários sub-projetos que o pypy possui atualmente.
>
> Você sabe se existe algum tutorial voltado para isso especificamente?
> Ou, se não houver, já que você está envolvido no pypy e pretende fazer
> exatamente isso para a sua engine do jogo de IA, que tal escrever um
> pequeno tutorial sobre como fazer isso?
>

Cara deve ter algo na documentação, mas o jeito mais simple é ir em
pypy/translator/goal e ver o targetjsstandalone.py... dificil ser mais fácil
que aquilo. ai tu usa o translator.py no mesmo diretorio pra fazer a
tradução, e um arquivo como o targetjsstandalone que é o teu programa. tem
também o diretório demo, que usa o translator de forma mais programatica.
Vou ver se não tem documentação sobre isso e escrevo algo, mas já aviso que
vai se em inglês.

--
View this message in context: http://www.nabble.com/Engine-de-xadrez-tf3497040.html#a9778200


Sent from the Python - Brasil mailing list archive at Nabble.com.

__._,_.___
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

Rafael Colucci

unread,
Apr 1, 2007, 3:47:14 PM4/1/07
to python...@yahoogrupos.com.br

Assembly nao e equivalente a linguagem de maquina ao. Assembly e uma
abstracao da linguagem de maquina. Linguagem de maquina e 0 ou 1.
Assembly seria algo como mov ax,bx.

Rafael

Paul Eipper escreveu:


>
> C não é escrito em nada, pois C é a linguagem. O que é escrito são os
> compiladores. E existem muitos compiladores C.
> O GCC, que é um dos mais importantes, por exemplo, é escrito em --
> pasme --
> C ! :P
>
> Aliás, Assembly é diretamente equivalente à linguagem de máquina ;)
>
> http://www.bellevuelinux.org/gcc.html

> <http://www.thescripts.com/forum/thread212166.html>
> --
> Paul Eipper
>
> Em 31/03/07, Rafael Colucci <rafacolucci@gmail.com

> <mailto:rafacolucci%40gmail.com>> escreveu:


__,_._,___

Luciano Ramalho

unread,
Apr 1, 2007, 3:20:52 PM4/1/07
to python...@yahoogrupos.com.br

On 4/1/07, Rafael Colucci <rafacolucci@gmail.com> wrote:
> Assembly nao e equivalente a linguagem de maquina ao. Assembly e uma
> abstracao da linguagem de maquina. Linguagem de maquina e 0 ou 1.
> Assembly seria algo como mov ax,bx.

Rafael, o Paul Eipper está certo quando diz que "Assembly é
diretamente equivalente à linguagem de máquina".

Existe uma relação de um-para-um entre comandos em linguagem de
máquina e comandos em Assembly.

Portanto, não existe nenhuma diferença de performance ou de
expressividade entre as duas. Consequentemente, não há nenhum motivo
para alguém codificar algo diretamente em linguagem de máquina, a
menos que o programador seja masoquista.

[ ]s
Luciano


__,_._,___

José Alexandre Nalon

unread,
Apr 1, 2007, 5:52:31 PM4/1/07
to python...@yahoogrupos.com.br

Olá!



> Consequentemente, não há nenhum motivo
> para alguém codificar algo diretamente em linguagem de máquina, a
> menos que o programador seja masoquista.

Ah, os bons tempos em que se codificava operações em
ponto flutuante nos monitores Z80, inspecionando byte
a byte e convertendo na mão para checar se o resultado
estava correto... Opa, acabei de revelar o quanto eu
sou velho. :D

--
José Alexandre Nalon
nalon@terra.com.br


__,_._,___

Eduardo Willians

unread,
Apr 1, 2007, 10:28:30 PM4/1/07
to python...@yahoogrupos.com.br

PyAmigos, grato pelas respostas, embora algumas tenham sido
divergentes, achei a discussão bastante esclarecedora.
Nalon, fiquei abismado, achei que não existisse nada no Brasil antes
do FORTRAN. Falando em flashback, lembro-mo quando era menino e meu
pai me ensinou um pouco de DBase. Era incrível.

Na paz,

Eduardo Willians

__._,_.___
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

Condector

unread,
Apr 2, 2007, 2:23:23 PM4/2/07
to python...@yahoogrupos.com.br

É dito que Assembly é uma pseudo-linguagens que codifica as instruções em
0 e 1 em mnemônicos.

C é dita uma linguagem de médio nível por alguns livros e de alto por
outros.. mas médio é interessante, pois é a denominação dada as linguagens
de programação que tem acesso direto a Assembly em seu código.

Bem, realmente existe uma equivalência de 1 para 1 de asm para linguagem
de máquina.

[ ]'s
Brivaldo Jr

Em 01/04/07, Eduardo Willians <edujurista@gmail.com> escreveu:


>
> PyAmigos, grato pelas respostas, embora algumas tenham sido
> divergentes, achei a discussão bastante esclarecedora.
> Nalon, fiquei abismado, achei que não existisse nada no Brasil antes
> do FORTRAN. Falando em flashback, lembro-mo quando era menino e meu
> pai me ensinou um pouco de DBase. Era incrível.
>
> Na paz,
>
> Eduardo Willians
>
>

--
Debian Linux em MS, eu apoio esta idéia e você?
--
.''`. Debian GNU/Linux
: :' : Free Operating System
`. `' http://debian.org/
`- DEBIAN-MS



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

__._,_.___
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

Eduardo Willians

unread,
Apr 2, 2007, 2:39:08 PM4/2/07
to python...@yahoogrupos.com.br

Dizer que C é de alto nível é realmente novo para mim. Sempre existe um
autor que quer mudar as classificações ao seu próprio entendimento a troco
de sei-lá o que. Isso já está bem off-topic...


__,_._,___

Pinguim Azul

unread,
Apr 2, 2007, 2:52:56 PM4/2/07
to python...@yahoogrupos.com.br

On 4/2/07, Condector <condector@gmail.com> wrote:
> Bem, realmente existe uma equivalência de 1 para 1 de asm para linguagem
> de máquina.

Claro que não, existem comandos em assembly com mais de um encoding
possível em código de máquina. Por exemplo, uma coisa boba em x86 como
ADD EAX,1 tem três encodings diferentes:

05 01 00 00 00 (usando a forma custom add eax,imm32)
81 38 01 00 00 00 (usando a forma add r32,imm32)
83 38 01 (usando a forma add r32,imm8)

Por isso não dá pra dizer que é 1 pra 1, no máximo 1 pra muitos.

Pra quem faz micro-otimização orientada a tamanho isso faz diferença,
por exemplo, quando você está criando demos de 512 bytes. Tem umas
coisas realmente muito estranhas no mapeamento do x86, por exemplo, o
mínimo de espaço que você precisa pra um MOV EBX,10 é cinco bytes, mas
se você fizer PUSH 10 / POP EBX, gasta só três bytes e faz
essencialmente a mesma coisa.

----------------------------------------------------------
Ricardo Bittencourt http://www.mundobizarro.tk
ricbit@700km.com.br "Save the trees. Eat more woodpeckers"
------ União contra o forward - crie suas proprias piadas ------


__,_._,___

rdavid_cwb

unread,
Apr 2, 2007, 10:22:10 PM4/2/07
to python...@yahoogrupos.com.br

Olá pessoal

Muito obrigado pelas aulas! Valeu mesmo! Baseado no que vcs falaram,
já tenho uma idéia de como vou fazer o engine.

Bom, já tenho bastante coisa pra estudar também (ctypes, PyPy, pyetc).

[]s

Rafael

--- Em python-brasil@yahoogrupos.com.br, Rodrigo Senra <rsenra@...>
escreveu

Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

Rodrigo Senra

unread,
Apr 2, 2007, 11:10:34 PM4/2/07
to python...@yahoogrupos.com.br


On 2Apr 2007, at 3:39 PM, Eduardo Willians wrote:

> Dizer que C é de alto nível é realmente novo para mim.

Concordo em parte. É o lance da teoria da relatividade,
como estávamos falando de linguagem demáquina e assembly
pode se dizer que C é *alto nível em relação* a essas alternativas.
Não em termos absolutos, ou sequer comparado com Python ou
Lisp ou Prolog, etc.



> Isso já está bem off-topic...

Eu não sou moderador desta lista, mas acho que quando o papo
varia um pouco do tema Python mais ainda está relacionado
a programação não custa deixar rolar um pouco.

My 2 cents.



Abração,
Senra

Rodrigo Senra
______________
rsenra @ acm.org
http://rodrigo.senra.nom.br

__._,_.___
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

Leonardo Santagada

unread,
Apr 3, 2007, 6:12:02 PM4/3/07
to python...@yahoogrupos.com.br



>> Dizer que C é de alto nível é realmente novo para mim.

>Concordo em parte. É o lance da teoria da relatividade,
>como estávamos falando de linguagem demáquina e assembly
>pode se dizer que C é *alto nível em relação* a essas alternativas.
>Não em termos absolutos, ou sequer comparado com Python ou
>Lisp ou Prolog, etc.

que eu lembre C era alto nivel por ter funções e variaveis e não ter acesso
direto aos registradores ou algo assim.
seguindo essa linha python é uma VHLL very high level language.

--
View this message in context: http://www.nabble.com/Engine-de-xadrez-tf3497040.html#a9827345


Sent from the Python - Brasil mailing list archive at Nabble.com.

__._,_.___
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

Adam Victor Nazareth Brandizzi

unread,
Apr 3, 2007, 7:02:46 PM4/3/07
to python...@yahoogrupos.com.br

On 4/3/07, Leonardo Santagada <santagada@gmail.com> wrote:
> >> Dizer que C é de alto nível é realmente novo para mim.
>
> >Concordo em parte. É o lance da teoria da relatividade,
> >como estávamos falando de linguagem demáquina e assembly
> >pode se dizer que C é *alto nível em relação* a essas alternativas.
> >Não em termos absolutos, ou sequer comparado com Python ou
> >Lisp ou Prolog, etc.
>
> que eu lembre C era alto nivel por ter funções e variaveis e não ter acesso
> direto aos registradores ou algo assim.
> seguindo essa linha python é uma VHLL very high level language.

Como diria o autor do Terror Island
(http://www.terrorisland.net/strips/101.html), "that makes your remark
irrelevant, not false" ;)

Já vi gente quase saindo no tapa em lista de discussão para decidir se
C é de médio nível de abstração ou alto nível. Nâo dá para decidir
este tipo de coisa em um sentido absoluto. Você pode comparar
linguagens e até dizer que uma está "mais ou menos" em mais alto
nível de abstração que outra, mas não dá para fazer isto em um sentido
amplo para todas as linguagens.

Aliás, até entre duas linguagens a definição é artificial. O que é
mais abstrato: Python, com toda sua dinamicidade, ou Java, com seu
poderoso sistema de definição de interfaces? Mesmo que você diga que
uma linguagem é "mais alto nível" que outra (ou ainda melhor, que uma
linguagem é "mais ou menos mais alto nível" que outra) ainda poderá
haver pontos onde a linguagem "desprivilegiada" poderá ser mais
abstrata que a a linguagem "vencedora". Afinal, como decidir quem é
mais alto nível, C ou Forth? ;)

EMHO não há muito sentido em falar sobre nível de linguagens, mas
nível de abstrações que uma linguagem possui. O nível de abstração de
list comprehentions, closures ou classes é altíssimo quando comparado
com loops while, que já é mais abstrato que gotos, por exemplo. Note
que estou falando da funcionalidade, não da linguagem. Mesmo certas
funcionalidades opostas podem estar em níveis de abstração próximos.
Compare a tipagem dinâmica em Python com a tipagem estática de Java e
de Haskell. É meio difícil definir quem é "mais alto nível", né?

No final das contas, há de se considerar também a função da linguagem.
Você já mexeu com sed? sed é, de fato, uma liguagem de programação
surpreendente, com poucas mas poderosas abstrações para processar
texto, que, porém, só possui gotos condicionais bem no nível de um
"jump if zero" de Assembly. Mesmo Visual Basic (ou seu parente que
prefiro, Gambas), PHP 3 etc são linguagens de altíssimo nível de
abstração para construção de interfaces, mas com poucas ferramentas de
abstração para lógica de negócio. SQL é uma linguagem extremamente
abstrata para processar consultas em banco de dados, XSLT é
poderosíssima para processar texto etc. etc. mas são linguagens cujo
nível de abstração para outras tarefas é simplesmente muito baixo.

Resumindo: falar de "nível" de linguagem não é uma boa idéia. Ok, se
você e os outros interlocutores concordam que linguagem A é mais alto
nível que linguagem B então uma conversa é possível, mas apenas porque
todos sabem os termos da discussão. Nâo quero dizer que Python é "mais
alto nível" que C, nem que esta afirmação não possa ser feita. Quero
dizer que esta afirmação, solta aqui, é cogniscível para todos - mas
tentar criar uma regra universal para definir quem é mais "alto nível"
é um trabalho desnecessário e até indesejável. Python é "mais alto
nível" que C, eu entendo esta frase;ambíguo é quem fala que "C é médio
nível" ou "Python é de altíssimo nível". Eu posso até concordar com as
afirmações, mas que são complicadas quando postas neste sentido
absoluta, são ;)

--
Adam Victor Nazareth Brandizzi
http://brandizzi.googlepages.com/
http://www.google.com/reader/shared/05979608432730590670


__,_._,___

Eduardo Willians

unread,
Apr 3, 2007, 7:39:11 PM4/3/07
to python...@yahoogrupos.com.br

Acho que o problema está na idéia que o vocábulo "nível" transmite, o que
pode gerar maus-entendidos. Quando se fala em nível da linguagem, está se
falando em quão próxima a linguagem está do hardware. C nunca encontrou
alguém que a substitua no que ela faz bem, isto é, opera próxima ao
hardware, porque quando se fala em hardware/velocidade, se fala em C (no
máximo C++).



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


__,_._,___
Reply all
Reply to author
Forward
0 new messages