Re:PHP introduces "goto"
by prodigal_erik on Tuesday June 09, 2009 @11:22PM
(#650499)
PHP has to look up variables by name at runtime, because it doesn't know which ones will really exist, much less their types. It doesn't know whether any array will be used as an ordered list or a lookup table, so it has to maintain a complex data structure for both. It has to allow any value to actually be a reference which shares state with any other value. These are very expensive features which preclude a lot of optimizations, yet they're rarely used because they're more often surprising than helpful. We ported an app server from PHP to Java and picked up a 6x speed improvement with hardly any tuning.
And 0 == "" isn't really confusing. You want confusing?
array(0 => false, 1 => true) == array(false => "0", 1.9 => " 0")
The real problem with PHP is there's no simple way to stop it from guessing what you might have wanted when it's utterly wrong.People like functional languages in theory, for the style. But not so much when it comes to actually using them.
Really? I use the functional capabilities of Python and JavaScript all the time when I use those languages.
And what's ugly about PHP? It looks almost exactly like C.
It is inconsistent (sometimes), but it's not "easy to write slow code in", there is nothing in PHP that makes slow code more or less likely.
It's 2009. Everyone IS using PHP, and almost no one uses functional languages. Oh they get a lot of press, but few deployments.
I'm really tired of these illogical attacks on PHP. No one has ever told me a problem in PHP compared to other procedural languages except that 0 == "" is confusing.
It's always "but everyone knows it's bad". Sure go along with peer pressure if you like, but I prefer to look at reality.