Conversation

I’ve said it before:
Quote Tweet
Replying to @http406
Even if it’s a situation where the compiler can’t go on, is it really an error if that’s normal/expected? I’m a Haskell “expert” and still surprised when anything but the most trivial program compiles on the first go. Almost all of my compiles end in “errors”, on purpose.
1
4
In multiple ways:
Quote Tweet
Thinking of type “errors”—or even syntactic “errors”—comes pre-burdened for free with a really unfortunate set of assumptions and hostile framing. Your program is *wrong*! It’s got an *unexpected* mismatch between this and that. You need to *fix* it before I’ll *let* you proceed.
Show this thread
1
1
With concrete advice:
Quote Tweet
Adopting this attitude (ca. 2012 iirc) changed the whole way I do language design and tooling development. Compiler/interpreter error messages are the single best place to surface learning materials for a language, because trial *and error* is a huge aspect of how people learn! twitter.com/ManishEarth/st…
Show this thread
1
4
I will continue to say this until we make the computer quit being mean. It’s an important realisation that the process of figuring out how to get your code to compile is programming too, and it shouldn’t be a realisation at all—it should be clear from the user interface design.
2
21
You know what? I make an effort to always use plain language and try to come accross as matter of fact (playfulness might be accepted but is frowned upon) in diagnostics, but just removing the leading "error:" might actually be a small change ti reframe the interaction.
2
2
Exactly! Doing that has led me in a direction I like, at least. Including a “warning” or “error” prefix does serve some purposes, like helping IDEs/editors format messages that follow (or vaguely imitate) the standardish GNU format, although those tags aren’t very informative.
1
2
“Error” might be “I can’t”, or “You’ve asked me not to”, or “I will, but only if you super-promise that these shenanigans are what you meant to do”; “warning” might be about anything: style, performance, possible issues, or even *likely* issues too noisy to make errors.
1
3
Any idea what a better prefix would be? Or would it be better to just remove it? Or do we dial down the severity of this stuff in development, so you get 'info' and 'note' messages instead, leaving the errors for CI and release builds?
2
What about "fixme: "? Thinking about this:
Quote Tweet
This is most obvious with refactoring — experienced programmers will structure a refactoring so that the type checker tells them everywhere they need to fix (whenever possible…). Those “errors” are just a checklist from a very diligent partner.
Show this thread
2
3
Show replies