[Python-ideas] Better error messages [was: (no subject)]
Stephen J. Turnbull
turnbull.stephen.fw at u.tsukuba.ac.jp
Sun Dec 4 18:57:28 EST 2016
victor rajewski writes:
> - I personally find the current error messages quite useful, and
> they have the advantage of being machine-parseable, so that IDEs
> such as PyCharm can add value to them. However, the audience of
> this idea is not me, and probably not you. It is students who
> are learning Python, and probably haven't done any programming
> at all. But it might also be casual programmers who never really
> look at error message as they are too computer-y.
That's a misconception. You have not yet given up on a change to the
Python interpreter, so the audience is *every* user of the Python
interpreter (including other programs), and that's why you're getting
pushback. The Python interpreter's main job is to execute code. A
secondary job is provide *accurate* diagnostics of errors in
execution. Interpreting those diagnostics is somebody else's job,
typically the programmer's. For experienced programmers, that's
usually what you want, because (1) the interpretation is frequently
data-dependent and (2) the "obvious" suggestion may be wrong.
FYI, a *lot* of effort has gone into making error messages more
precise, more accurate, and more informative, eg, by improving stack
traces.
OTOH, if the diagnostics are accurate and machine-parsable, then the
amount of annoying detail that needs to be dealt with in providing a
"tutorial" front-end for those messages is small. That suggests to me
that the problem really is that interpreting errors, even in "student"
programs, is *hard* and rules of thumb are frequently mistaken.
That's an excellent tradeoff if there's a teacher looking over the
(student) programmer's shoulder. Not a good idea for the interpreter.
> - I'm not suggesting this should become part of the normal
> operation of Python, particularly if that breaks compatibility
> or impacts performance. A switch, or a seperate executable would
> probably work. I'd lean against the idea of tying this to a
> particular IDE/environment, but if that's the way this can
> progress, then let's do that to get it moving.
It really should be a separate executable. There are multiple
implementations of Python, and even restricted to CPython, with even a
small amount of uptake this project will move a *lot* faster than
CPython does. Every tiny change to the "better living through better
errors" database makes a difference to all the students out there, so
its release cycle should probably be really fast.
> - The examples listed in my original email are simply ideas,
> without much thought about how feasible (or useful) they are to
> implement. Going forward, we would identify common errors that
> beginners make, and what would help them fix these errors.
In other words, you envision a long-term project with an ongoing level
of effort. I think that it's worth doing. But I also think it's
quite feasible to put it in a separate project, with cooperation from
Python-Dev in the matter of ensuring that diagnostics are machine-
parseable. Eg, this means that Python-Dev should not randomly change
messages that are necessary to interpret an Exception, and in some
cases it may be useful to add Exception/Error subtypes to make
interpretation more precise (though this will often get pushback).
More information about the Python-ideas
mailing list