I would not expect "1.30" == "13e-1" or "0xb" == "0xB" to compare as true, but it's of kind of cool that they magically do.
I don't think 0 == "zero" is a meaningful comparison, so I don't think there is any single sensible answer. I know "zero" will be cast into 0 and therefore it will be true. That's not a matter of expected language logic, it's just personal preference on do you want your language to fail hard when given garbage input, or continue.
Most input to a PHP program is going to be strings. It is going to have come from an untyped GET or POST request string decoded into string parameters. If you expect it to be integers it needs to be cast somewhere. For most applications you should be doing that explicitly, taking control of the process and deciding how to respond to user error or other invalid input.
Our main difference of opinion seems to be that I think it is good that the language tries to help when the programmer is lazy, and you think it should immediately reprimand them with a rolled up newspaper so they will be forced to do it properly before seeing any output.
I think you are stretching the hammer analogy well beyond its useful limit. I've no idea what php function you think has a redundant left and right version, but to humor you, sure there are lots of nail pullers that have two similar sides or ends to attack different sizes.
eg http://s.shld.net/is/image/Sears/00938076000
There are also lots of physical tools that completely reasonably do have exactly duplicated sides or ends because they wear out, but I don't see how you want that to apply to software.
Talking about == is not trivial or apologetic. That's the way I expect comparison to work in a loosely typed language. I expect 0, 0.0, '0', '0.0', -0, 00, 0x00, null and false to be logically equivalent most of the time. If it also means that if I don't validate input from an http request 0=='0 foodle fish' also evaluates as true, then that's a cost I'm willing to bear.
I've always loved that fractal of bad design rant. Many of his gripes follow really neatly from his initial analogy of the hammer with claws on both sides.
Let's say you want to hammer in a nail. You reach into a tool box and pull out something that you think is a hammer. Instead it has claws on both sides, and is in fact a nail puller. You don't know much about tools so you use it to beat in nails, all the while grumbling to your friends that it's a bad hammer.
For instance, I don't see how you expect to "solve" most of the "issues" in that. The fact that the author does not like the way == works in a weakly typed language is not a bug. Sure, it present bugs in code when programmers don't know how implicit type casting works, but it's really nice if you do.
I'm not sure how closely tied the "please do this easy task for me" behavior is to gender.
I see it as a pretty common bad habit in lots of people and tie it to ignorance rather than insecurity about gender roles. If you don't know much about an area it's hard to tell what tasks within it are easy or hard, so it's easy to assume that all jobs done by other people are easy.
I've seen it expressed as "this is just a website, so I assume you can have it done by Friday" or "sounds like a 10 line Perl script to me" or "I need a favor. I'm sure it will only take you 10 minutes" or "What took you so long?", but the pattern is the same.
The simple reality is scientists don't say things people like.
If you ask a scientist what you should do about your medical condition, they say unhappy, unreasoning things like "the best data we have at the moment says you should do X and it has a 63% chance of showing some improvement but you need to watch for side effects A, B, C, and D"
If you ask a homeopath or other snake oil salesman what you should do about your medical condition, they say happy, reassuring things like "You should do Y. I'm sure it will help and it has no side effects".
Scientists suck at selling things including themselves, and politics is all about selling yourself.
I moved about 40 domains on the 29th. None of them will show up in that data.
Either I was using them, so I was already using a nameserver other than domain control, or I was not using them, so I don't care what the nameserver settings are and I let the new registrar copy them across. Those domains still show up on domaincontrol.com, but are no longer registered through GoDaddy.
It's possible that porting to different registrars has different side effects, but at least for my domains ported to name.com this data will show no change. I'm not surprised then that the data shows no statistically important change.
I don't think 0 == "zero" is a meaningful comparison, so I don't think there is any single sensible answer. I know "zero" will be cast into 0 and therefore it will be true. That's not a matter of expected language logic, it's just personal preference on do you want your language to fail hard when given garbage input, or continue.
Most input to a PHP program is going to be strings. It is going to have come from an untyped GET or POST request string decoded into string parameters. If you expect it to be integers it needs to be cast somewhere. For most applications you should be doing that explicitly, taking control of the process and deciding how to respond to user error or other invalid input.
Our main difference of opinion seems to be that I think it is good that the language tries to help when the programmer is lazy, and you think it should immediately reprimand them with a rolled up newspaper so they will be forced to do it properly before seeing any output.