Como pode acontecer isso no PHP??  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
elomarns
JavaGuru
[Avatar]

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
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...
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.
elomarns
JavaGuru
[Avatar]

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
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!
marcosalex
GUJ Expert
[Avatar]

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

[Yahoo!] aim icon [ICQ]
rubinelli
JavaEvangelist
[Avatar]

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?
[WWW]
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...
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á."
fabiozoroastro
GUJ Master
[Avatar]

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

victorcosta
JavaGuru
[Avatar]

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/
[MSN]
marcosalex
GUJ Expert
[Avatar]

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

[Yahoo!] aim icon [ICQ]
dlt
JavaEvangelist
[Avatar]

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
victorcosta
JavaGuru
[Avatar]

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/
[MSN]
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.
 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team