Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

For me, it's the sheer verbosity. You can't just say "import module; module.function()" without having more boilerplate than code.

Also, "hard to shoot yourself in the foot" can sometimes mean "hard to do mystical stuff when you really, really want to". 99% of the time, regardless of language, you should be writing clear, idiomatic code. 1% of the time, though, you want some voodoo (that you can encapsulate so that no one else really has to understand it), and when that time comes you want the language to get out of the way.

For example, almost no one needs to write metaclasses in Python. It's just not something most people will ever have a nonzero desire or need to do. But, suppose you're writing an ORM or a templating system or something else were it might be darn handy to create a lot of methods at instantiation time. In those cases, it's incredibly convenient to be able to do the magical stuff at all. You only have to get it right once, then all the downstream users can benefit from a much simplified and cleaner experience.

I don't want to shoot my foot. Sometimes, though, I might want to shoot a snake crawling across it. I prefer to use languages that keep things safe in general but allow shoot-footing when you really, really need it.



I get that it is verbose but I kind of like that. It makes reading code less ambiguous. I understand that is just preference though.

As for your import example you can totally do that:

> import java.util.Collections; Collections.sort(someList);

You just have to make use of static methods. I do understand though that a lot of the standard library is not designed like this so your point is taken.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: