On 3/15/14 10:48 PM, Chris Angelico wrote:
There's a cost to refactoring. Suddenly there's a new primitive on the
board - a new piece of language . . . Splitting out all sorts of things into
generators when you could use well-known primitives like enumerate
gets expensive fast {snip}
[1] https://en.wikipedia.org/wiki/Rule_of_three_(computer_programming)
Very good to remember. I am finding the temptation to make all kinds of
generators (as you noted above). Its just that the python generator
makes it so easy to define a function that maintains state between calls
(of next() in this case) and so its also so easy to want to use them...
almost forgetting about primitives!
And the rule of three is one of those things that sneaks up on oneself.
I have actually coded about seven (7) such cases when I discovered that
they were all identical. I am noticing that folks code the same file
reader cases "with open() as fh: yadda yadda" and I've noticed that
they are all pretty close to the same. Wouldn't it be nice to have one
simpler getline() or getnumline() name that does this one simple thing
once and for all. But as simple as it is, it isn't. Well, as you say,
use cases need to determine code refactoring.
The other thing I'm tempted to do is to find names (even new names) that
read like English closely (whatever I mean by that) so that there is no
question about what is going on to a non expert.
for line in getnumline(file):
{whatever}
Well, what if there were a project called SimplyPy, or some such, that
boiled the python language down to a (Rexx like) or (BASIC like) syntax
and usage so that ordinary folks could code out problems (like they did
in 1964) and expert users could use it too including everything else
they know about python? Would it be good?
A SimplyPy coder would use constructs similar to other procedural
languages (like Rexx, Pascal, even C) and without knowing the plethora
of Python intrinsics could solve problems, yet not be an "expert".
SimplyPy would be a structured subset of the normal language for
learning and use (very small book/tutorial/ think the Rexx handbook, or
the K&R).
Its a long way off, and I'm just now experimenting. I'm trying to get my
hands around context managers (and other things). This is an idea I got
from Anthony Briggs' Hello Python! (forward SteveHolden) from Manning
books. Its very small, lite weight, handles real work, but--- its still
too big. I am wanting to condense it even further, providing the minimal
basic core language as an end application product rather than the
"expert" computer science language that will run under it.
or, over it, as you like.
(you think this is a nutty idea?)
marcus
--
https://mail.python.org/mailman/listinfo/python-list