There’s a mode to help find out what this symbol actually is and what it is for. It’s easy to dismiss things as “unreadable” if one remains ignorant of the context, people have said the same about text written completely in ASCII.
help?> Core.Compiler.:⊑
⊑(𝕃::AbstractLattice, a, b)
Compute the lattice ordering (i.e. less-than-or-equal) relationship between lattice elements a and b over the
lattice 𝕃. If 𝕃 is JLTypeLattice, this is equivalent to subtyping.
help?> ⊑
"⊑" can be typed by \sqsubseteq<tab>
Understanding the context is vital, and writing in ASCII doesn’t magically make things plainer to understand. What does f(x) do?
Even if I understood the context of the code, it really doesn’t help the readability point if I confused \subset with \sqsubseteq. It’s in the same vein as \rho with p, and many others, which, yes, does occasionally occur using ASCII characters, but occurs more frequently with Unicode given the vastly greater number of available symbols.
I don’t think this in particular was an issue of readability or understanding context. I’m no mathematician and don’t know the type theory involved, but I for one can plainly see ⊂ (\subset) is round and ⊑ (\sqsubseteq) is square with an underline, these are nowhere near as similar as p and ρ. I’m just demonstrating ignorance is an opportunity to put in a little effort to find out a little more. If I already understood the context, I wouldn’t have trouble reading familiar symbols.
Sorry, I meant \subseteq, ⊆ and ⊑ look similar, in fact I didn’t even know ⊑ existed. This reddit post which was second in the results list for “square subset symbol” also has this confusion. So, results may vary
The question is “what are these symbols?” and the first sentence is “they look like subset, union and intersection symbols, but with straight lines”, so they in fact did not confuse them, for the same reason I wouldn’t confuse u and v.
Checking on a not-so-modern MacBook Pro in Safari, it renders just fine. You might have to change some Firefox settings to get more Unicode support. I don’t use Firefox so I can’t give any advice, but a Google search yields many user questions about Unicode rendering, hope some of those help. Also reminds me that Unicode doesn’t determine how the symbols are visually represented, that’s what fonts do (so it’s really their fault for confusion), and they don’t necessarily support all of Unicode.
It’s not so much about operating system or app these days — it’s mostly about font coverage. I highly recommend installing JuliaMono, Noto Sans Mono and the terribly-ugly-but-super-comprehensive GNU Unifont as a final failsafe — and then you’ll see no more ? boxes! Most systems gracefully fallback to a font that has the missing glyph, even going outside of the requested font face(s).
I think these are all great ideas! In particular I really like the ideas of updating the style guide, and putting this as a new check Aqua.jl as these would effect change at an ecosystem level to solve this into the future.
By the way, I wonder if there are any surveys which exist of programmers who are not using Julia (to avoid survivorship bias) that ask them if (1) they have at any point tried to learn Julia, (2) what resources they looked at (or what the first application they tried was), and (3) why they didn’t continue to learn it. It would be great to carefully vet the resources that failed Julia converts have looked at first, or more generally what applications they have tried to build – to help identify and fix such weak points. I’m sure it would be a bit unexpected.
For me, I had heard Julia was very good at differential equations so that’s the type of library I checked out first. That’s basically what formed my introduction to Julia (in addition to the very very early chapters of the docs), rather than me reading much of the Julia docs at first (which honestly more came at an intermediate level, and explored via google searches) – and I stuck with it. But I wonder where new users are hitting a snag and leaving. It’s hard to infer all of this stuff based on what internet complaints focus on, but I guess that’s one such signal.
JuliaFormatter already features formatting options that help normalizing e.g for loops to consistently avoid using ∈ (or consistently use it). Maybe more formatting options could be added to e.g:
replace α with alpha in tutorials (or vice versa if a unicode-hating developer wants to contribute to a unicode-loving project);
replace ϱ or ⍴ with ρ (in complement to a linter, in order to help fixing confusions if/when they happen).
I’d also expect a dependence of Unicode acceptance on age, with higher acceptance for younger people. Thus the problem with Julia acceptance by unicode haters might just disappear with time, as they slowly become less relevant.
I suspect it’s mostly a question of exposure, where people who have used greek letters extensively in their education or have a native language (or frequently used second language) which goes beyond ASCII are a lot more accepting of unicode. But maybe emojis will change the equation for English-only speakers over time.