X
xkcd.com
xkcd.com
https://unicode-table.com/en/blocks/mathematical-alphanumeri...
[1] https://www.unicode.org/notes/tn28/UTN28-PlainTextMath-v3.1...., https://docs.microsoft.com/en-gb/archive/blogs/murrays/unico...
Edit: [2] Similar for Latex https://www.ctan.org/pkg/unicode-math?lang=en
The first two are about a way to encode maths using unicode, as in conventions and special characters allowing e.g. to write fractions, aligned equations, etc. So, this would essentially furnish an alternative to the "math" subset of latex (think mathjax or katex) or mathml.
The third is a package for latex, and allows to use unicode symbols (greek letters, math symbols, etc.) in your math environments + something related to the use of unicode in the output (requiring compatible fonts); it seems the second part is the main one but I'm not sure what that means exactly.
Because the distinction did already exist in the originating repertoire.
The following are all interpreted as X in variable names: XⅩX𝐗𝑋𝑿𝓧𝔛𝕏𝖃𝖷𝗫𝘟𝙓𝚇
And these are all interpreted as x: xˣₓⅹx𝐱𝑥𝒙𝓍𝔁𝔵𝕩𝖝𝗑𝘅𝘹𝙭𝚡
I.e. 𝖃𝖝, 𝕏𝕩 and Xx all represent the same variable!
Edit: As a mathematician, this is actually kind of annoying. Sometimes I would love to have different variables named x and 𝐱, or whatever. Oh well, at least I can have θ, λ, φ, π, etc. Autohotkey macros make them easy to type.
A mathematician such as yourself (and myself too) should recognise that asserting different things to be functionally equal is an entirely distinct phenomenon from what is being discussed here, which is differentiating a unique glyph based on a formatting that (font).
Tom 7's video descriptions mention this conference, he has quite a few fun topics: https://www.youtube.com/watch?v=xDxjbXAqTPg
> "removing the awkward necessity of writing text"
> "as powerful as other languages and significantly more colorful"
> "we believe it will appeal to many types of students who may not have an interest in traditional text-based programming, including painters, graphic designers, and the illiterate."
I think it might be more effective to teach the illiterate to read first rather than code... Maybe it's worth it if learning to code inspires them to become literate?
Yeah, I'm pretty sure they're not entirely serious.
"Most programming languages in use today use only a single color for all numeric literals, which is unnecessarily confusing and makes it impossible to distinguish different numbers using only a spectrometer"
:)
Seems legit.
That is not that weird. In fact a more formal (and optional) version (the "offside rule", which is what Haskell uses) was part of Landin's Iꜱᴡɪᴍ:
> (c) Indentation, used to indicate program structure. A physical Iꜱᴡɪᴍ can be defined in terms of an unspecified parameter: a subset of phrase categories, instances of which are restricted in layout by the following rule called "the offside rule." The southeast quadrant that just contains the phrase's first symbol must contain the entire phrase, except possibly for bracketed subsegments. This rule has three important features. It is based on vertical alignment, not character width, and hence is equally appropriate in handwritten, typeset or typed texts. Its use is not obligatory, and use of it can be mixed freely with more conventional alternatives like punctuation. Also, it is incorporated in Iꜱᴡɪᴍ in a systematic way that admits of alternatives without changing other features of Iꜱᴡɪᴍ and that can be applied to other languages.
> I was convinced that it is just a joke, first. Now I am just sad.
There is at least one language which "seriously" attempted this though: : color forth ; (which should properly be written colorForth with a red "color" and a green "forth": https://web.archive.org/web/20160310135832/http://colorforth...).
Level 2 allowed any number of letters in a variable name... but only the first two were recognised as unique. CUSTORDER was seen as the same variable as CUSTLINE.
That was a well-known Microsoft BASIC feature that got passed down licensed descendants like TRS-80 and Commodore BASIC, and lasted through earlier 6502 BASIC implementations.
Go allows characters from the Canadian Aboriginal Syllabics for identifiers, so you can define structs or methods like this:
type ImmutableTreeListᐸElementTᐳ struct {
You can pretend that go has generics :)> That's just a "template" file, which I use search and replace in order to generate the three monomorphized go files.
They were using a separate codegen step (really just a sed run) to actually "do generics". In fact, that was the entire reason this thing was introduced[0], the structure originally used interface{} for its items.
The "generic" part was then moved to a `go_` file from which monomorphisations on bool, ArrayT and ScalarT got generated.
Also
> Go allows characters from the Canadian Aboriginal Syllabics for identifiers
I'd expect just about any language which supports unicode identifiers to allow this, as canadian aboriginal syllabics is a "normal" abugida, and its "textual" components are (properly) tagged as XID_Start and XID_Continue.
[0] https://github.com/google/enjarify/commit/55e8e65e681b15f026...
http://www.unicode.org/Public/security/latest/confusables.tx...
- Thinks of "variable variable" title text joke
- "Now I just need to come up with a scenario that will allow me to make this joke"
[1]: https://www.php.net/manual/en/language.variables.variable.ph...
I'm sure there are situations where this feature can be really valuable (and I do sometimes use getattr/setattr in python, which is somewhat similar) but I think the developers should really think hard and make an educated decision about when to use it. As such having it require a bit of boilerplate is a feature more than a bug IMO. I definitely wouldn't want to have to maintain code written by someone who abuses these types of indirections everywhere.
I can definitely imagine a novice coder using these "variable variables" in lieu of a proper hash table or dictionary object for instance.
I mean it suffices to read some of the comments to the article posted above to find a bunch of people posting code snippets which, IMO, are a very poor way of implementing what they want. For instance:
$price_for_monday = 10;
$price_for_tuesday = 20;
$price_for_wednesday = 30;
$today = 'tuesday';
$price_for_today = ${ 'price_for_' . $today};
echo $price_for_today; // will return 20
or even: class foo {
function bar() {
$bar1 = "var1";
$bar2 = "var2";
$this->{$bar1}= "this ";
$this->{$bar2} = "works";
}
}
$test = new foo;
$test->bar();
echo $test->var1 . $test->var2;
I'd probably quit if I had to maintain code written like that. Having
boilerplate would at least make it obvious that something unusual is going on
with these variables and make the intent clear while reading the code. for(let optValue of Object.keys(options)){
optDom.push(
<option key={optValue} value={optValue}>{options[optValue]}</option>
)
}
Of course array also works, but with json object, it guarantee that the value will be distinct and you don't need specific array object type.[1] https://en.wikipedia.org/wiki/Whitespace_(programming_langua...
Though perhaps some sicker soul has in fact written a Whitespace interpreter in brainfuck...
This is actually pretty brilliant as a sort of steganography in code type thing.
Imagine having a e.g. link in the code. Wouldn't that be useful?
Have you ever wrestled with MS Word to make you heading appear on the right page? Imagine having to do that to make code compile.
Useful - for what? Do you want that link to be written & maintained by you, or to be automatically generated by the tools? Because we already have the latter... (e.g. in many IDEs, ctrl-/cmd-click on symbols performs useful actions, eg. takes you to the definition or finds all references if you're at the definition site).
To deal with this one could of course have a static type system instead, but that necessitates learning the DSL behind it and its idioms - the lack of which is the main appeal of dynamic typing to begin with.
Terminals.
Also think if you even need a new language. It seems that too many new languages have features that can be handled by functions or macros in existing languages.
Some languages like Forth, Lisp or Haskell are very powerful, have strong metaprogramming facilities, and most likely can already do anything that would need a new language and new syntax.
Think about it - if you avoid creating another syntax variation, and work with an existing syntax (or better existing language), your chances of somebody actually using your efforts will vastly increase.
Plus it’s very concise, which spoiled me to the point where I find it difficult to look at Elixir.
Limiting myself purely to more recent ones:
• https://xkcd.com/2307/ - Alive or Not
• https://xkcd.com/2224/ - Software Updates
• https://xkcd.com/2221/ - Emulation
I'm also really missing the xkcd forums. The quality of the discussion was below what I'd expect to read on HN†, but it was still nice to have something for each of the comics.
† No disrespect intended to anyone who was on those forums—you're all great people, but there's less of you, and, well, there's nothing quite like HN.
The pain, across math, engineering, and physics, is all of the formulae with overloaded notation, sometimes from the Greek, sometimes the Roman alphabet.
Formulas are great as a summary and reminder for the seasoned practitioner, but can be a huge barrier to entry for the student.
Perhaps GitHub repos with well-written code and test cases for the neophyte can, as they say these days, "flatten the curve".
It's like saying that source code is a summary and reminder for the seasoned practitioner, but can be a huge barrier to entry for the student.
In both cases the reader is the "interpreter", accept this or move on.
I did a category theory class a few months back. Huge barrier at times - so many moving pieces. "Err, which properties do 𝒞 and mumble(𝒟) have here, in this paragraph???"
I wanted to create an interactive version of some topics. Just mouseover elaboration and graphics, to reduce the amount of state one has to keep track of mentally, and its associated cognitive load. But the state of in-browser rendering of category diagrams wasn't quite there yet.
Best part of the class was the "after-math" (that's a 3-interpretation pun). An iterative improvement on past versions of the class, formalizing an observed custom - after the 1 hr math lecture, the room was reserved for a second hour, so people could hang out, with the instructors, in front of blackboards. In part, clarifying and explaining things in different ways.
One instructor observed something very vaguely like "I'd never approach things the way I do in lecture, if I was tutoring someone one-on-one."
One can imagine technical fixes. Mouse-over equations. FAQs. Presenting the material from multiple perspectives.
Many of them could implemented on clay tablets. And that newfangled wood pulp. My best understanding is, that as a society, incentives are poorly aligned with creating non-wretched education content in the sciences, and I assume in math.
So my hope for XR in education, is not just the power of tools like eye tracking, but that incentives are disrupted enough to get us unstuck.
Consider eye tracking. When I show people this video[1](IBM's STM stopmotion) in person, it was very common for them to ask me "what are the ripples?". Apparently it was enough of a thing for IBM to do supplementary content on it. But if I'm not there, what UI would youtube need to have a similar dynamic?
Someone did an art project. You sit by yourself and watch a drama. An interesting drama. But why is it interesting? The video is a graph, like one of those old "choose your own adventure" games. And there's an eye tracker. So if your gaze shows you're interested in character A...
Why not ripples? Imagine the richly interwoven tapestry of science and engineering as that graph, adaptively explored, driven by interest, misconceptions, and learning objectives.
And imagine being able to watch someone's gaze patterns as they try to understand a paragraph of math. Backed by a database of everyone's patterns. And being able to respond. Not as well as an excellent human tutor in some ways, but in some ways even better.
Or we could just copy the usual wretched content into 3D and call it a day.
Let's not? Ever? It reminds me of dystopias where a government tries to sense how really interested people are in the latest propaganda and punishes those who are too bored. Or just a small school ran as a totalitarian regime where you're not even allowed to be bored.
[0] https://www.sri.inf.ethz.ch/research/plml [1] http://jsnice.org/
Bonus points: instead of minimizing space, all identifies are, say, exactly 6 characters long.
Even with controversial subject - the covid lockdown, he chose to highlight facts where everyone (well ~90%) agree on.