Does weak typing offer any advantages?
Posted
by sub
on Stack Overflow
See other posts from Stack Overflow
or by sub
Published on 2010-04-02T14:47:39Z
Indexed on
2010/04/02
14:53 UTC
Read the original article
Hit count: 523
Don't confuse this with static vs. dynamic typing!
You all know JavaScripts/PHPs infamous type systems:
PHP example:
echo "123abc"+2; // 125 - the reason for this is explained
// in the PHP docs but still: This hurts
echo "4"+1; // 5 - Oh please
echo "ABC"*5; // 0 - WTF
// That's too much, seriously now.
// This here might be actually a use for weak typing, but no -
// it has to output garbage.
JavaScript example:
// A good old JavaScript, maybe you'll do better?
alert("4"+1); // 51 - Oh come on.
alert("abc"*3); // NaN - What the...
// Have your creators ever heard of the word "consistence"?
Python example:
# Python's type system is actually a mix
# It spits errors on senseless things like the first example below AND
# allows intelligent actions like the second example.
>>> print("abc"+1)
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
print("abc"+1)
TypeError: Can't convert 'int' object to str implicitly
>>> print("abc"*5)
abcabcabcabcabc
Ruby example:
puts 4+"1" // Type error - as supposed
puts "abc"*4 // abcabcabcabc - makes sense
After these examples it should be clear that PHP/JavaScript probably have the most inconsistent type systems out there. This is a fact and really not subjective.
Now when having a closer look at the type systems of Ruby and Python it seems like they are having a much more intelligent and consistent type system.
I think these examples weren't really necessary as we all know that PHP/JavaScript have a weak and Python/Ruby have a strong type system. I just wanted to mention why I'm asking this.
Now I have two questions:
When looking at those examples, what are the advantages of PHPs and JavaScripts type systems? I can only find downsides:
- They are inconsistent and I think we know that this is not good
- Types conversions are hardly controllable
- Bugs are more likely to happen and much harder to spot
Do you prefer one of the both systems? Why?
Personally I have worked with PHP, JavaScript and Python so far and must say that Pythons type system has really only advantages over PHPs and JavaScripts.
- Does anybody here not think so? Why then?
© Stack Overflow or respective owner