4 ms·
One thing I think the Julia core team should look to get professional help on is human computer interface design in programming languages. I know there’s been a
by blindseer 5y ago
One thing I think the Julia core team should look to get professional help on is human computer interface design in programming languages. I know there’s been a lot of strides in the right direction, but having used rust I can say that Julia is waayyyyy far behind. I’m mainly thinking of general naming, error messages and stack traces. My opinion on the naming is that it feels like it is written by scientists for scientists (which can be good, but is also a barrier to entry).
Specifically w.r.t. to stacktraces, I think the Julia core team should just pay someone like Jonathan Turner to review their stacktraces and see how they can improve it. JT was involved in the rust stacktraces and when he was using Zig on stream he was immediately able to identify ways to improve Zig’s stacktraces. I think his kind of insight could go a long way in helping Julia be more friendly.
Another place is Pkg error messages. I’ve opened projects from a few years ago and things have just failed. I think it is because I’m not using the same Julia version that I did when I recorded the Manifest (weird that Julia doesn’t record the Julia version number in the Manifest). But I will never know I guess because I get almost cryptic error messages from Pkg. It is borderline infuriating.
I say all of this because I really like (or at least really want to like) Julia. And I know fellow coworkers who share this sentiment about some of these pain points. If these are fixed (and latency becomes better) I for one would pull fewer hairs out of my already balding head :)
I would ask that Julia advocates take all my criticism kindly. I know you are all passionate and have worked on a lot of these features yourselves. I’m expressing some opinionated frustrations.
Edit:
w.r.t. HCI in programming languages, here’s a comment shared by one of my grad school friends that is doing a thesis on HCI in programming language syntax:
“It (sic, It -> Julia syntax) is inconsistent in a lot of ways. There’s "primitive type", "abstract type", "struct" and "mutable struct" that are all keywords for defining "struct" like things. Why not use "struct" or "type" everywhere consistently? …”
My friend’s comment is long and winding, but I’ll check with them if I can post a link to their thesis here. It might be an interesting read for some folk.
- teruakohatu 5y agoI completely agree. Julia stack traces are abysmally bad. The only worst stacktraces I have to endure is Shiny... Essentially useless at best or deceptive at worst.
- halhen 5y agoSomewhat helpful for Shiny stack traces: options(shiny.fullstacktrace = TRUE) You should be prepared to scroll a bit, but you might get the information you're looking for more often.
- teruakohatu 5y agoThank you. I will give that a try next time.
- adgjlsfhk1 5y agoJulia stacktraces actually got a bunch better in 1.6 or 1.7 (I forget which). There's still a lot to be improved though. If you have specific error messages that you consider unhelpful, filing issues with the language (or package) tends to be a pretty good way of helping. Error message PRs are generally pretty good for new contributors, and are a low effort way of making the language better.
- leephillips 5y agoThe Julia version is included in the Manifest. But I don’t know when they started doing that, perhaps old versions of the package manager did not.
- jakobnissen 5y agoThis is new for 1.7
- DNF2 5y agoI don't think those namings are inconsistent. primitive types and abstract types are not structs, and it would be misleading to label them as such. structs and mutable structs on the other hand are. So, using 'only struct' or 'only type' "consistently" would be more homogeneous, it would be, respectively, wrong and under-specific. I think it's good that the concepts of type and struct are separated like that.
- chalst 5y agoI'm very interested in your friend's opinion. If you can't post a link, perhaps just a pointer to a web presence.