On Mon, May 30, 2016 at 6:42 PM, William Stein <wst...@gmail.com> wrote:
> On Mon, May 30, 2016 at 9:22 AM, Erik Bray <erik.m.b...@gmail.com> wrote:
>> Hi all,
>>
>> I recently needed to dive into the sage_setup.autogen.interpreters
>> module in order to make some small changes.
>
> Quick link:
>   
> https://github.com/sagemath/sage/blob/master/src/sage_setup/autogen/interpreters.py
>
> It's the fast_callable stuff.
>
> Were you diving in to make (sage expression)(numpy array) work?  If so, 
> awesome!

Sadly, not this time. It's to make the generated code build on
Windows.  However, I also want to work on the issue you mentioned, and
cleaning up this code a bit will likely help.

>>  The file is over 4000
>> lines long, which is a bit on the long side for your typical Python
>> file, though not egregious by any means.  That said, when trying to
>> understand some relatively complicated code I find it helpful to break
>> up into smaller bite-sized logical chunks that are easy to get around
>> in an editor and reason about.  When and how to do this can of course
>> be highly subjective.
>>
>> In the case of autogen.interpreters, in the process of understanding
>> it, it was my immediate instinct, perhaps a bit impulsive, to start
>> breaking it into multiple files anyways, and about half an hour later
>> I've done so with success.
>>
>> I think it would be a good change to feed back into sage, but it's
>> also a bit frivolous since there are no other substantive changes.  I
>> think it makes the code easier to understand.  But of course the main
>> downside to this kind of refactoring is that it makes the history
>> harder to follow--not impossible--just harder.
>>
>> How does this community feel about this sort of refactoring?  On the
>> outset it could be seen as frivolous, but in the long term it can be
>> for the best, especially as development continues and some of the
>> resulting modules grow larger on their own.
>
> +1 -- my only concern is for code that does something like:
>
>    "from sage_setup.autogen.interpreters import blah"
>
> Maybe this isn't an issue in this case, but in general it could be.

Yep. I made sure that it still fills out the same namespace more or
less (as far as anything seems to care about).

> Sage devs are very good at git, so dealing with the history issue
> isn't at all a show stopper.

I've seen people complain about this before which is partly why I ask.
I think it's a valid complaint too, but definitely not impossible to
overcome.

> Separating code into many smaller modules really does provide a lot of
> genuine value, in that it makes scope and dependencies much, much
> clearer, which makes the code potentially way easier to understand.

Yep, I agree completely.

Thanks,
Erik

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to