So why can't Java become more like Python? The answer is — actually, Java and Python are quite similar: Python users also waited nearly 10 years to get support for generators. And after playing around with it for a few days, I spent just a few hours adding generator support to Scheme. Nevertheless, some people might still argue that features like generators, and more recent additions in Python such as list comprehensions, make Python easier to write — I completely agree with this point — but fundamentally, Java and Python are the same in this regard: neither of them allows you to modify the language itself.
Java, Python, and almost all other non-Lisp languages leave you at the mercy of the language designers. You have to wait for them to implement the language features you need, and they may only prioritize the top few on the list. Even when they eventually give you something new to scratch your itch, who can guarantee that you'll like the result?
So why did it take 10 years for Java to gain enhanced iteration syntax? This is because, in Java and many other programming languages, syntax is a big issue. Ordinary users don't modify the language itself. It's difficult to do so, and only a small number of people who have learned the necessary techniques are capable of doing it. When changes to the syntax are needed, the priorities of expressiveness and clarity often take a back seat to maintaining backward compatibility.
...