PHP presta como linguagem?

13. Re: PHP presta como linguagem?

Hector Nagao
heckjp

(usa elementary OS)

Enviado em 12/07/2017 - 12:43h

Não entendi, checar as strings por quê?


Porque cachorros são diferentes de patos. hahaha!

Falando sério, o que eu entendi o que nosso amigo quis dizer é que essas strings deveriam ser separadas de modo que a gente consiga o resultado obvio que cachorros não são patos.


  


14. Re: PHP presta como linguagem?

Paulo Dias
di4s

(usa XUbuntu)

Enviado em 12/07/2017 - 13:48h

Oi.

Entendi, mas na verdade o problema não é exatamente as strings... Vou tentar explicar o que acontece com esse código:

O primeiro detalhe é que o operador + não concatena strings em PHP. Para concatenar strings é usado o operador . ( ponto ).

Além disso, em PHP o tipo de um dado pode ser alterado dependendo do contexto, ou seja, se uma string aparece onde era esperado um valor numérico, ocorre um conversão. Exemplo:



$a = 2;

$b = "3";

echo $a * $b; #6



Nesse exemplo, $b é uma string, mas foi usada em um contexto numérico( uma multiplicação ) e ocorreu uma conversão de tipo. Como a string $b representa um número, o resultado de echo $a * $b é um pouco mais previsível ou pelo menos é mais fácil perceber o que aconteceu... A string "3" foi usada na operação como o inteiro 3.

Porém, se a string não representar um número, o PHP tenta aproveitar o que for possível ou converte para zero. Por exemplo: No código do meu primeiro post, a conversão usa a parte numérica e ignora o resto das strings. Assim, esse código:



<?php

if( "2 cachorros" + "3 gatos" == "5 patos" ) {

echo "São iguais";
}


Com as conversões, pode ser entendido( apenas para compreensão ) como esse:



<?php

if( 2 + 3 == 5 ) {

echo "São iguais";
}


Um desenvolvedor acostumado com outra linguagem e que esteja começando seus estudos com PHP, pode acreditar que a linguagem não presta, pois recebeu um resultado que parece errado, mas na verdade não se trata disso... Apenas ele não conhecia as características do PHP, isso pode explicar um pouco da má fama entre desenvolvedores de outras linguagens?

Ainda assim, mesmo sabendo das conversões automáticas e que o operador de concatenação de strings da linguagem é o .( ponto ) , não é esperado( violação do POLA ) que 2 cachorro + 3 gatos sejam iguais a 5 patos.

Linux Professional Institute - LPIC-1
Novell Certified Linux Administrator - CLA
Oracle Certified Associate, Java SE Programmer - OCA

http://twitter.com/p4ulodi4s
http://www.prminformatica.com.br/


15. Re: PHP presta como linguagem?

Hector Nagao
heckjp

(usa elementary OS)

Enviado em 12/07/2017 - 15:39h

Perfeita sua explicação. O problema em ter uma tipagem fraca na linguagem é esse. Em casos como esse devemos explicitamente separar as informações para que não fiquem como no exemplo citado.


16. Re: PHP presta como linguagem?

Buckminster
Buckminster

(usa Debian)

Enviado em 12/07/2017 - 18:37h

heckjp escreveu:

Não entendi, checar as strings por quê?


Porque cachorros são diferentes de patos. hahaha!

Falando sério, o que eu entendi o que nosso amigo quis dizer é que essas strings deveriam ser separadas de modo que a gente consiga o resultado obvio que cachorros não são patos.


Porque é contraproducente (senão impossível) para qualquer linguagem checar toda e qualquer string, como no caso em tela, para verificar se cachorros mais gatos são iguais a patos.
E soma-se a isso que PHP é fracamente tipada, apesar de que as novas versões do PHP já permitem uma tipagem mais forte.
Talvez inteligência artificial resolveria o problema de patos, cachorros e gatos.
Mas como eu disse, foi só uma provocação.


17. Re: PHP presta como linguagem?

Rodrigo
omag0

(usa Debian)

Enviado em 15/07/2017 - 14:53h

Cara, Delphi é um emaranhado de idéias que, a meu ver, não deu certo. Somado isso a programadores que utilizam o paradigma POG (programação orientada a gambiarra) temos um resultado final impossível de dar suporte, a não ser o próprio programador e olhe lá.
O PHP sofria com isso no começo. Cada programador fazia do seu jeito. Se.voce pegasse o mesmo programa feito por pessoas diferentes, podia achar até que se tratava de linguagens diferentes. Aí chegou o composer pra botar ordem na bagaça e dar uma direção unificada a linguagem.
Outro ponto, adoro a fraca tipagem do PHP. Permite uma flexibilidade enorme. Eu sempre indico a quem quer aprender programação, aprender Java é c#. Não por serem as melhores linguagens mas por serem as mais utilizadas comercialmente.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts