Re JavaScript, I'm referring to the lowlevel nature of many of its constructs:
- its impoverished way to pass parameters (i.e. there are no keyword parameters; you don't get an error if you pass too many or too few arguments)
- its impoverished exception handling (i.e. you can't catch exceptions of a specified type)
- its impoverished standard library and built-in data structures
- its lowlevel and complicated OOP system
There's more, see http://pwpwp.blogspot.com/2009/08/awesome-helma-and-lacking-...
Re Python and Ruby, I'm mostly referring to the fact that both languages started out with broken lexical scoping, and had to change their scoping rules repeatedly, which is a huge red warning sign. Additionally, it seems very hard to implement both languages so that they run fast, another factor. Ruby also has an array of different kinds of first-class functions (blocks, procs, lambdas, I lost track), with different capabilities and restrictions, which is a design failure to me. That said, I think they're acceptable languages, even if they force you to memorize a lot of irrelevant stuff.