Comment Re:Hate (Score 1) 97
Some people seem ready to hate on particular features but it seems more of a fit and tooling problem to me. If things don't fit your brain then it can be hard to appreciate them. If the tools you are comfortable using can't take advantage of particular features then those features become worthless to you. To take a stab at some of the common complaints:
Dynamic typing and the way variable scope works in Python means that a compiler can't catch as many errors. To people used to using a compiler to catch errors this can be very aggrivating, their workflow and productivity will suffer because of this language aspect. On the other hand the people that use a unit test heavy workflow will benefit from this aspect because it reduces compile/start up times and makes writing unit tests much easier. Also if you use an IDE with context aware autocomplete then static typing really helps it help you. OTOH If you like to do most of your debugging within a running program from a gdb/pdb prompt then things being more dynamic can be very helpful.
Syntatically significant whitespace can be great for enforcing style guides for checked in code. It promotes writing smaller units of code (by making long code blocks horrible to work with) and that plays well with TDD and code readability for some people. It can also get in the way of development and stops tools from automattically formatting code for you. It is also a pain when working at interactive prompts and makes that style of interactive debugging harder. Just a tip: if you are forced to work with significant whitespace and hate that you can't even see it then try getting your editor to highlight it differently. I find having spaces, tabs and trailing whitespace all use different background colours most helpful.
Run time speed is often an issue for at least some of the functionality in any given project. The tooling that languages give to handle this can be too specific so people can end up hating the languages because the things they try just don't work. For instance if you are used to using threads for performance then Python is going to be a bit miserable for you until you stop trying that. Some people prefer sticking to just one language for a code base, this favours using something that can go as low-level as you need for the performance critical parts. Some people use something more comfortable for most of the development and switch to a different language just for the performance critical parts. Python with Cython when you need it can be a great combo. I think the ML landscape is a good example of combining high level conveniece (Python) with low level compute (CUDA/OpenCL) to get things done both quickly (developer time) and efficiently (hardware time).
Scripting vs real language... I personally don't get this and haven't heard any salient arguments about it, just bigotry I guess. I've worked with interpreted C and compiled Python so I don't even know where people think the boundaries are. Maybe LISP changed me too much to comprehend
Wishing people happiness with their languages and tools, and the understanding that the two go hand in hand.