One 'problem' I have in duck-typing languages is .. they (and Python is like this) have less 'documentation' right smack up front in the declaration, and polymorphism is generalyl done inside a function.
ie:
In Algol derived languages such as C++ and Jave and so on, you can do such tricks as..
int foo ( int )
int foo ( char * )
int foo ( int a, char b )
Just looking at the declaration 'helps' (though in python and lisp, you can use doc-strings of course, but doc-stgrings are often out of date, while a declaration must be more or less up to date); but more, I find it uglier in python to fake a polymorphic call..
in function foo, check for 'b' to be empty, and then assume we're doing the first or second invocation of foo; if b is populated, try the third. Just makes it a bit 'messy'.
for the first two invocations of foo, the python approach is to just try and perform and see how it goes before failing, but if you do have to do somethign differently by type, you really shoudl have another function (say), or multiple argument sets and have the coder react based on which arguments are supplied. Just feels 'ugly', though thats coming from a much more procedural background (I love lisp, but don't actually do much in it.)
That said, I really enjoy Python .. I just don't want to go back to uglier languages anymore, though I'm still a huge fan of C (heres to you Dennis Ritchie!)
--
I don't much like java for two main reasons..
-- 1) its verbose; I measure in C/C++ terms.. if a codebase is 1000 lines of C code, then it'd be 500 in python, and 2000 in java, in my books.
-- 2) due to (1) and the whole java community, eclipse, etc, people are raised to 'right click, generate' code in java, so you end up with _Monstrous_ number of classes and factories and nonsense that just complicates the actual design, and you need an IDE to decipher it. Dreadful. Single inheritence with 'interface' bullshit doesn't help .. just have real multiple inheritence like a man, as in python and C++
--
So python hits that spot for me .. its slower in runtime (though pypy and such are win!), but so comfortable to use, and so expressive, its very much the way to go, or fall back to C and C++
jeff