On Wed, 04 Jun 2014 20:52:14 +0300 Serhiy Storchaka email@example.com wrote:
That's sad, I agree.
Other languages (Go, Rust) can be happy without O(1) indexing of strings. All string and regex operations work with iterators or cursors, and I believe this approach is not significant worse than implementing strings as O(1)-indexable arrays of characters (for some applications it can be worse, for other it can be better). But Python is different language, it has different operations for strings and different idioms. A language which doesn't support O(1) indexing is not Python, it is only Python-like language.
Sorry, but that's just your personal opinion, not shared by other developers, as this thread showed. And let's not pretend we live in happy-ever world of Python 1.5.2 which doesn't need anything more because it's perfect as it is. Somebody added all those iterators and iterator-returning functions to Pythons. And then the problem Python has is a typical "last mile" problem, that iterators were not applied completely everywhere. There's little choice but to move in that direction, though.
What you call "idioms", other people call "sloppy programming practices". There's common suggestion how to be at peace with Python's indentation for those who find it a problem - "get over it". Well, somehow it itches to say same for people who think that Python3 should be used the same way as Python1: Get over the fact that Python is no longer little funny language being laughed at by Perl crowd for being order of magnitude slower at processing text files. While you still can do little funny tricks we all love Python for, it now also offers framework to do it right, and it makes little sense saying that doing it little funny way is the definitive trait of Python.
(And for me it's easy to be such categorical - the only way I could subscribe to idea of running Python on an MCU and not be laughable is by trusting Python to provide framework for being efficient. I quit working on another language because I have trusted that iterator, generator, buffer protocols are not little funny things but thoroughly engineered efficient concepts, and I don't feel betrayed.)