Lua 5.2 change log e o goto

17 views
Skip to first unread message

Italo Maia

unread,
Aug 19, 2011, 2:38:58 PM8/19/11
to lua...@googlegroups.com
Depois de ler um pouquinho sobre o moonscript, fiquei curioso em saber o que estava no forno para o lua5.2 o que me levou à página de changelog 

Uma nova funcionalidade me chamou a atenção: a adição do goto 

Desde minha primeira linha de código, o goto sempre me foi dito como uma funcionalidade nefasta produtora de código maligno. Cheguei até a vislumbrar alguns trechos de código muito compromissados a provar isto. 

Aí vem a minha dúvida: por que lua resolveu adicionar o goto? Era mesmo necessário? Vai mesmo adicionar algum valor à linguagem? 

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

===========================
Italo Moreira Campelo Maia
Bacharel em Ciência da Computação - UECE
Desenvolvedor WEB e Desktop (Java, Python, Lua)
Coordenador do Pug-CE
-----------------------------------------------------
http://www.italomaia.com/
http://twitter.com/italomaia/
http://eusouolobomau.blogspot.com/
-----------------------------------------------------
Turtle Linux  9.10 - http://tiny.cc/blogturtle910
Turtle Linux 10.10 - http://bit.ly/cEw4ET
===========================

Italo Maia

unread,
Aug 19, 2011, 3:07:50 PM8/19/11
to lua...@googlegroups.com
Corsix, no canal do IRC deu um exemplo muito bom de bom uso do gotohttp://pastebin.com/d0x1mYta

Roberto Ierusalimschy

unread,
Aug 19, 2011, 3:55:23 PM8/19/11
to lua...@googlegroups.com
> > Desde minha primeira linha de c�digo, o *goto* sempre me foi dito como uma
> > funcionalidade nefasta produtora de c�digo maligno. Cheguei at� a vislumbrar
> > alguns trechos de c�digo muito compromissados a provar isto.
> >
> > A� vem a minha d�vida: por que lua resolveu adicionar o *goto?* Era mesmo
> > necess�rio? Vai mesmo adicionar algum valor � linguagem?

� verdade que o uso irrestrito de gotos podem levar a programas
grotescos. Mas isso � verdade para muitos outros mecanismos comuns
em linguagens (e.g., vari�veis globais).

Por outro lado, o uso restrito de gotos em determinadas situa��es
� bastante ben�fico. N�o por acaso, quase todas as linguagens
oferecem formas restritas de gotos, como break, continue, break com
label, continue com label, redo, etc. Como Lua sempre procurou poucos
mecanismos poderosos ao inv�s de uma mir�ade de mecanismos para
situa��es espec�ficas, nos pareceu bastante adequado introduzir um
simples goto ao inv�s de continue, break com label, e outros. (Seria
at� o caso de removermos 'break' para manter a linguagem pequena,
mas iria gerar muitos problemas de compatibilidade.)

Gotos tamb�m s�o �teis em outras situa��es espec�ficas, como
por exemplo programa��o de m�quinas de estado e c�digo gerado
automaticamente.

Por �ltimo, lembre-se que o fato de haver goto na linguagem n�o obriga
ningu�m a us�-lo :)

-- Roberto

Italo Maia

unread,
Aug 19, 2011, 4:12:55 PM8/19/11
to lua...@googlegroups.com
Verdade. Mas o goto do lua será no estilo do código do corsix? http://pastebin.com/d0x1mYta Com labels nomeadas?

Em 19 de agosto de 2011 16:55, Roberto Ierusalimschy <rob...@inf.puc-rio.br> escreveu:
> > Desde minha primeira linha de código, o *goto* sempre me foi dito como uma
> > funcionalidade nefasta produtora de código maligno. Cheguei até a vislumbrar
> > alguns trechos de código muito compromissados a provar isto.
> >
> > Aí vem a minha dúvida: por que lua resolveu adicionar o *goto?* Era mesmo
> > necessário? Vai mesmo adicionar algum valor à linguagem?

É verdade que o uso irrestrito de gotos podem levar a programas
grotescos.  Mas isso é verdade para muitos outros mecanismos comuns
em linguagens (e.g., variáveis globais).

Por outro lado, o uso restrito de gotos em determinadas situações
é bastante benéfico. Não por acaso, quase todas as linguagens

oferecem formas restritas de gotos, como break, continue, break com
label, continue com label, redo, etc. Como Lua sempre procurou poucos
mecanismos poderosos ao invés de uma miríade de mecanismos para
situações específicas, nos pareceu bastante adequado introduzir um
simples goto ao invés de continue, break com label, e outros. (Seria
até o caso de removermos 'break' para manter a linguagem pequena,

mas iria gerar muitos problemas de compatibilidade.)

Gotos também são úteis em outras situações específicas, como
por exemplo programação de máquinas de estado e código gerado
automaticamente.

Por último, lembre-se que o fato de haver goto na linguagem não obriga
ninguém a usá-lo :)

-- Roberto

--
Lua BR - http://groups.google.com/group/lua-br

Roberto Ierusalimschy

unread,
Aug 19, 2011, 4:22:19 PM8/19/11
to lua...@googlegroups.com
> Verdade. Mas o goto do lua ser� no estilo do c�digo do corsix?

> http://pastebin.com/d0x1mYta Com labels nomeadas?

Sim. Veja o manual:

http://www.corsix.org/lua/5.2-beta-annotated/manual.html#3.3.4

-- Roberto

Marcello Henrique

unread,
Aug 19, 2011, 2:56:42 PM8/19/11
to lua...@googlegroups.com
Olá Italo,

Apena para mostrar o outro lado da moeda achei uma interessante página
[0] sobre o assunto.

[0] http://www.sergioprado.org/2011/02/15/voce-usa-goto-nos-seus-codigos-em-c/

Abraços.

2011/8/19 Italo Maia <italo...@gmail.com>:

--
Marcello Henrique
Blog - http://faraohh.wordpress.com
Equipe Web - Cercomp - UFG (www.cercomp.ufg.br)
Associação Software Livre de Goiás (www.aslgo.org.br)

Italo Maia

unread,
Aug 22, 2011, 12:07:33 AM8/22/11
to lua...@googlegroups.com
Ctz. Agora imagino que o lua poderia tentar adicionar "algo +" ao seu goto. Tipo, um goto sem label, por exemplo, ou algo assim.

ps: excelente link!

Jefferson Padilha

unread,
Aug 23, 2011, 2:23:23 PM8/23/11
to Grupo Lua
Alguém tem algum algoritimo que exibe um texto/imagem com FadeIn em Lua?
 
Att,
 
Jefferson Padilha
 

Date: Mon, 22 Aug 2011 01:07:33 -0300
Subject: Re: [lua-br] Lua 5.2 change log e o goto
From: italo...@gmail.com
To: lua...@googlegroups.com

Alex Fernando Ferreira

unread,
Aug 24, 2011, 8:58:38 AM8/24/11
to lua...@googlegroups.com
não querendo ser chato, mas o que isso tem a ver com goto?
você não deveria ter criado outro topico já que esta falando de uma coisa diferente?

digo isso pq arquivo as mensagens do lua-br, e fica um bocado desorganizado se você fica enviando duvidas em resposta  a emails de assuntos diferentes...principalmente no gmail que agrupa as conversas e respostas como se fossem uma unica mensagem.
        ^
     .     .
      Linux
   /    -    \
  Choice.of.the
.Next.Generation.
Slackware Forever...
Reply all
Reply to author
Forward
0 new messages