On Wed, May 2, 2018 at 4:41 PM, John Cremona <john.crem...@gmail.com> wrote:
> On another python project I contribute to  (LMFDB) we have for some time
> only merged commits which satisfy pyflakes 100%.  It's a much smaller
> project than Sage, and when we first started using pyflakes there was quite
> a lot of work to do, some of which seemed rather unnecessary, but also a lot
> of actual and potential bugs were discovered and fixed.
>
> Doing the same to Sage would also be  a huge amount of work if all done at
> once, but it could be done incrementally (*).  In fact, I already use
> pyflakes to examine Sage course files I am working on and slip in some
> changes it prompts as well as everything else in the patch.
>
> I know that there are many such tools out there and am not proposing using
> any of them in particular, just reporting on one situation where the result
> was positive and where LMFDB developers would not want to put the clock
> back.  This has nothing to do with algorithmic efficiency.

Indeed--at some point I plan to start running pyflakes over Sage.  A
lot of stuff is getting fixed up in the process of implementing the
Python 3 support, but that should be the primary focus first.  Later,
adding a per-commit pyflakes check will be easy.

> (*) For example in src/sage/schemes/elliptic_curves/*.py there are "only"
> 138 lines of output from pyflakes now almost all of which would be trivial
> to fix (things imported but not used, variables assigned to but not used --
> which can be an indication of a typo giving a bug.  You also see
> "ell_curve_isogeny.py:1672: undefined name 'InputError'" which I already
> fixed as part of https://trac.sagemath.org/ticket/23222 .
>
> On 2 May 2018 at 14:21, Peter Luschny <peter.lusc...@gmail.com> wrote:
>>
>>
>> rjf> The chance that Machine Learning AI programs will find
>> rjf> important algorithmic efficiency fixes in algebraic
>> rjf> mathematical implementations seems pretty slim.
>>
>> Improving code is something other than improving algorithmic
>> efficiency of high-level algorithms, of whatever kind. The
>> latter is certainly not an option yet. But as soon as such
>> tools look simultaneously on written and compiled code new
>> opportunities will arise.
>>
>> rjf> On the other hand, if you have gobs of code written by high
>> rjf> school summer interns just learning Python, it is possible
>> rjf> their code is filled with non-idiomatic and inefficient
>> rjf> constructions that might be detected/repaired.
>>
>> The assumption that only the inexperienced beginner makes
>> stupid mistakes or writes optimizable code is not likely to be
>> shared here. But if, as you can seemingly imagine, such can
>> be pointed to by checkers/optimizers, then the level of
>> experience of the coder obviously does not matter.
>>
>> Between these two extremes are the daily necessaries of the
>> programmer, and that is what it is all about. In this respect
>> I find Volker's answer informative and revealing at the same
>> time.
>>
>> vb> First we should add one of the plain old rule-based linters
>> vb> to our testsuite, imho that would go a long way of maintaining
>> vb> a consistent code style (and avoid trivial review friction).
>>
>> I have expected a lot of people answering Volker: "Hey, you
>> are right, after the next release let's introduce such tools
>> before we continue."
>>
>> Since such answers did not come in I gladly admit to having
>> asked the question in the wrong place and at the wrong time.
>>
>> The question for me remains whether this reluctance towards
>> such tools is typical for open-source/academic projects.
>> Interestingly also Volker writes only about 'code style', not
>> of other forms of improvements. I have the impression that
>> the situation in the industry is quite different.
>>
>> rjf> It's your choice how to spend your time. Is it worth a try?
>>
>> You are absolutely right. I don't know any plausible estimate
>> that the programming time developers spend for debugging is
>> less than 50%; many estimates are significantly higher. But
>> that's an old hat.
>>
>> P.
>>
>> --
>> 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.
>
>
> --
> 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.

-- 
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