| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/06/2009 16:57:58
|
elomarns
JavaGuru
![[Avatar]](/images/avatar/e044fb795495fd22d8146e50b961e852.jpeg)
Membro desde: 21/04/2006 11:36:58
Mensagens: 241
Localização: Duque de Caxias/RJ
Offline
|
aeciovc wrote:mas... se o Ruby eh fortemente Tipada... o que dizer do Java então???
ALTAMENTE EXTRA FORTEMENTE TIPADA?????
o Ruby consegue fazer isso??
o PHP consegue... então o conceito de Tipagem dinâmica eh diferente para as duas linguagens!
pq no PHP vc pode fazer uma variavel multável (aliais, td eh mutável!)! ou seja uma hora ela eh uma Pessoa logo depois eh um numero! certo??
Você está confundindo os conceitos. O Ruby é dinamicamente tipado, o que permite que uma variável referencie objetos de várias classes diferentes ao longo do tempo, portanto ele pode sim executar o código que você escreveu acima, assim como o PHP, uma vez que ambas são linguagens dinamente tipadas. Em contrapartida, existem as linguagens estaticamente tipadas, como Java e C/C++, que não permitem fazer isso, uma vez que é necessário declarar um tipo para as variáveis. Ou seja, uma linguagem é dinamicamente tipada, como Ruby e PHP, ou estaticamente tipada, como Java e C/C++.
Além disso, o sistema de tipos de uma linguagem, pode ser classificado também como forte ou fraco, além da classificação como dinâmico ou estático explicada acima. Uma linguagem fortemente tipada impede que sejam realizadas operações como "1" + 1, pois os dois valores são de tipos diferentes, no caso uma String e um número inteiro.
Concluindo, uma linguagem pode ter tipagem dinâmica ou estática, e tipagem forte ou fraca, sendo as duas classificações ompletamente independentes. Um exemplo dessa independência é o fato do Ruby e do Java serem ambos fortemente tipados, embora o Ruby tenha tipagem dinâmica e o Java tenha tipagem estática.
This message was edited 1 time. Last update was at 18/06/2009 16:59:59
|
Elomar Nascimento dos Santos.
Não clique aqui
Nem aqui |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/06/2009 20:36:02
|
Schuenemann
GUJ Ranger
Membro desde: 13/01/2005 12:31:27
Mensagens: 854
Offline
|
aeciovc wrote:mas... se o Ruby eh fortemente Tipada... o que dizer do Java então???
ALTAMENTE EXTRA FORTEMENTE TIPADA?????
Não. Uma coisa é ser dinâmica ou estaticamente tipada, outra é ser fraca ou fortemente. Uma coisa não tem nada a ver com a outra.
Tipagem forte ou fraca tem a ver com a conversão implícita de tipos.
Isso é uma tipagem fraca (Java):
Isso é uma tipagem forte (Python):
Dizer que uma tipagem é "forte" ou "fraca" acho que só tem sentido se comparada a outra. Ex: a tipagem de Ruby e Python são mais fortes que a de Java.
Acho que em metade das apresentações que envolvem Java que assisti, o apresentador disse que Java tem tipagem forte por achar que é o mesmo que tipagem estática...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/06/2009 20:49:24
|
Thiagosc
GUJ Master
Membro desde: 27/04/2006 21:01:27
Mensagens: 1134
Offline
|
Schuenemann wrote:Acho que em metade das apresentações que envolvem Java que assisti, o apresentador disse que Java tem tipagem forte por achar que é o mesmo que tipagem estática...
A concatenação de strings em Java é apenas uma conveniência dada ao programador. Todos os objetos em java possuem um tipo associado, logo Java é fortemente tipado, assim como toda variável pode ter apenas um tipo de valor associado em um determinado momento, isto é, estaticamente tipado.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/06/2009 20:51:18
|
elomarns
JavaGuru
![[Avatar]](/images/avatar/e044fb795495fd22d8146e50b961e852.jpeg)
Membro desde: 21/04/2006 11:36:58
Mensagens: 241
Localização: Duque de Caxias/RJ
Offline
|
Ops, falei besteira.
Estou há tantos meses sem programar em Java que esqueci que ele é fracamente tipado.
|
Elomar Nascimento dos Santos.
Não clique aqui
Nem aqui |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2009 10:48:57
|
ronaldoo
Debugger
Membro desde: 04/05/2008 12:42:32
Mensagens: 50
Localização: Erechim - RS
Offline
|
marcobiscaro2112 wrote:
Isso porque a concatenação em PHP não se dá através do sinal de mais, e sim através do ponto. Usando o sinal de mais, ele considera uma soma. E o valor dessas strings na soma é sempre zero. Logo, aquilo seria o mesmo que escrever:
Hahaha, genial. Também não havia entendido e entendi agora com tua explicação, valeu!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2009 15:02:12
|
marcosalex
GUJ Expert
![[Avatar]](/images/avatar/0a8f8b227be2d04a675082cc9d51c127.jpg)
Membro desde: 20/02/2008 12:32:59
Mensagens: 3372
Offline
|
"
This message was edited 1 time. Last update was at 03/07/2011 14:58:35
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2009 15:18:10
|
rubinelli
JavaEvangelist
![[Avatar]](/images/avatar/5e15fb59326e7a9c3d6558ca74621683.jpg)
Membro desde: 26/04/2005 11:18:25
Mensagens: 469
Offline
|
Com licença que eu vou explicar pra vocês de uma vez por todas o que é linguagem fortemente tipada e fracamente tipada. Fortemente tipada é a linguagem de que eu gosto; fracamente tipada é a linguagem que eu quero esculhambar.
Alguma dúvida?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2009 18:05:32
|
ronaldoo
Debugger
Membro desde: 04/05/2008 12:42:32
Mensagens: 50
Localização: Erechim - RS
Offline
|
rubinelli wrote:Com licença que eu vou explicar pra vocês de uma vez por todas o que é linguagem fortemente tipada e fracamente tipada. Fortemente tipada é a linguagem de que eu gosto; fracamente tipada é a linguagem que eu quero esculhambar.
Alguma dúvida?
Foi muito claro, hahahaha... 
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2009 18:11:53
|
javamaniaco
Java Ninja
Membro desde: 04/04/2007 19:21:36
Mensagens: 268
Offline
|
Schuenemann wrote:
aeciovc wrote:mas... se o Ruby eh fortemente Tipada... o que dizer do Java então???
ALTAMENTE EXTRA FORTEMENTE TIPADA?????
Não. Uma coisa é ser dinâmica ou estaticamente tipada, outra é ser fraca ou fortemente. Uma coisa não tem nada a ver com a outra.
Tipagem forte ou fraca tem a ver com a conversão implícita de tipos.
Isso é uma tipagem fraca (Java):
Isso é uma tipagem forte (Python):
Dizer que uma tipagem é "forte" ou "fraca" acho que só tem sentido se comparada a outra. Ex: a tipagem de Ruby e Python são mais fortes que a de Java.
Acho que em metade das apresentações que envolvem Java que assisti, o apresentador disse que Java tem tipagem forte por achar que é o mesmo que tipagem estática...
Gente, o que é isso? Salada de frutas sabor Java, Ruby e PHP? O que tem a ver Tipagem Forte/Fraca com concatenação? Se java consegue converter para concatenar, ótimo. Acho que o erro é do desenvolvedor acreditar que a linguagem tem que sair ajudando em tudo. Se ele depender disso, então não precisa aprender a programar na linguagem.
|
"Iniciante sim, mas ignorante jamais."
"Seu corpo não pode estar onde sua mente SUBCONSCIENTE nunca esteve. Aprenda a leva-la até lá." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2009 12:36:55
|
fabiozoroastro
GUJ Master
![[Avatar]](/images/avatar/d28a3097fa7cf63ad01c4f328314e2f2.jpg)
Membro desde: 15/05/2006 16:23:01
Mensagens: 1262
Offline
|
Rubem Azenha wrote:
aeciovc wrote:
por isso tonyam use Java sempre, pra que vc não desenvolva uma aplicação e ela acabe confundindo 2 aves + 1 Pessoa = 3 Frangos... kkkkkk
Melhor que sempre usar Java, use sempre o seu cérebro para entender como funciona a ferramenta antes de usar-la pra valer.
Eu sei, foi cruel. Mas eu concordei.
|
[]'s
..."Apenas sorria!"
Twitter
Blog
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2009 15:52:01
|
victorcosta
JavaGuru
![[Avatar]](/images/avatar/42c88875bb90aeed57f01609fef5d9d7.png)
Membro desde: 07/01/2007 01:29:37
Mensagens: 220
Localização: Recife - PE
Offline
|
Mas quando se faz "a" + 5 em Java nao eh o compilador que faz as conversoes? Eh diferente de javascript/php onde sao feitos em Runtime acho
Esse conceito de tipagem fraca/forte eh muito confuso e nao tem definicao certa. E acho meio estranho considerar Ruby tipagem forte soh porque o metodo '+' solta excessao se for classes diferentes, isso eh detalhe de API, qualquer um pode sobrescrever esse metodo e fazer ele aceitar qualquer objeto, fazendo as conversoes necessarias
Acho melhor usar os termos tipagem estatica (onde o compilador faz as checagens) e dinamica (onde essas checagens sao feitas em runtime pelo interpretador) e esquecer esse papo de tipagem forte/fraca
|
Meu blog com tutoriais de jQuery
http://www.victorcisneiros.com/blog/
Outros projetos
http://www.todolistr.com
http://www.bibliasocial.com
http://www.dota2feedback.com/
http://www.posjogo.com.br/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2009 19:15:39
|
marcosalex
GUJ Expert
![[Avatar]](/images/avatar/0a8f8b227be2d04a675082cc9d51c127.jpg)
Membro desde: 20/02/2008 12:32:59
Mensagens: 3372
Offline
|
"
This message was edited 1 time. Last update was at 03/07/2011 14:58:52
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/06/2009 14:54:53
|
dlt
JavaEvangelist
![[Avatar]](/images/avatar/f8decd07ac3bcdb30bc816319f3287de.png)
Membro desde: 20/12/2007 16:30:29
Mensagens: 367
Localização: Belo Horizonte
Offline
|
É muito comum ver alguém falar asneira quando vai falar linguagens com tipagem dinâmica. Principalmente se estiverem falando mal de PHP ou Javascript, o que parece que está na moda ultimamente.
victorcosta wrote:
Esse conceito de tipagem fraca/forte eh muito confuso e nao tem definicao certa. E acho meio estranho considerar Ruby tipagem forte soh porque o metodo '+' solta excessao se for classes diferentes, isso eh detalhe de API, qualquer um pode sobrescrever esse metodo e fazer ele aceitar qualquer objeto, fazendo as conversoes necessarias
Quando se diz que uma linguagem tem tipagem forte isso significa que ela é type safe, ou seja, não se pode fazer operações ilegais com um tipo. Por exemplo, em Ruby não se pode somar uma string com um inteiro. Isso não tem nada a ver com detalhe de API, de onde você tirou isso?
Java é fortemente tipada.
Isso é açucar sintático:
String s = "s" + 5;
Na verdade o que acontece é algo parecido com:
String s = "s" + (new Integer(5)).toString();
Se você tentar fazer alguma operação com a variável s, como tentar colocá-la em uma lista de inteiros, você vai ter um erro de tipos. Isso é ser fortemente tipada.
Por último, uma dica: pelo amor de Deus, não digam que uma linguagem é ruim porque ela tem tipagem dinâmica ou fraca. Vocês vão passar vergonha se tiver por perto um programador que sabe quais as vantagens e desvantagens de tipagens estáticas/dinâmicas/fracas/fortes.
|
"It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical?" - Alan Perlis |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/06/2009 17:12:25
|
victorcosta
JavaGuru
![[Avatar]](/images/avatar/42c88875bb90aeed57f01609fef5d9d7.png)
Membro desde: 07/01/2007 01:29:37
Mensagens: 220
Localização: Recife - PE
Offline
|
Na wikipedia tem pelo menos 9 conceitos diferentes q certos autores usam pra definir linguagem de "tipagem forte", por isso q disse q eh ambiguo
http://en.wikipedia.org/wiki/Strongly_typed_programming_language
"Fixed and invariable typing of data objects. The type of a given data object does not vary over that object's lifetime. For example, class instances may not have their class altered."
Se usar esse conceito aqui entao Ruby/Python nao sao linguagens fortes
No topico tinha gente dizendo q Java nao era "tipagem forte" soh pq o compilador faz essas conversoes no '+' por conveniencia
E eu falei que eh detalhe de API pq apesar do metodo '+' do Ruby checar por tipos diferentes, diversos outros metodos no Ruby nao fazem isso. Arrays em Ruby por exemplo permitem vc adicionar objetos de qualquer tipo nele ao mesmo tempo (o que eh estranho pra quem vem de Java)
Eu posso ate alterar o metodo + de Fixnum pra ele aceitar soma de numeros com String
o codigo acima imprime 3
|
Meu blog com tutoriais de jQuery
http://www.victorcisneiros.com/blog/
Outros projetos
http://www.todolistr.com
http://www.bibliasocial.com
http://www.dota2feedback.com/
http://www.posjogo.com.br/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/06/2009 20:19:14
|
Schuenemann
GUJ Ranger
Membro desde: 13/01/2005 12:31:27
Mensagens: 854
Offline
|
victorcosta wrote:
Eu posso ate alterar o metodo + de Fixnum pra ele aceitar soma de numeros com String
o codigo acima imprime 3
Mas isso não muda a forma como a linguagem restringe operações entre tipos diferentes. Você converteu explicitamente o value ali.
|
|
|
 |
|
|