How to write Hello World
How to write Hello World
How to write Hello World
LGTM. Though do people really code with ligatures turned on?
Edit: Ok so there are some big advocates of ligatures, I’m going to have to give them a second chance. I’ll try for a week, and either way that Fira Code font looks great.
I was skeptical of ligatures at first, too, it took me awhile to warm up to it. But yeah, love me some Fira Code now.
That’s neat, so TIL ligature in code do actually have a strong following
I always do, I love having ligatures
Having ≠ looks much nicer then !=
Ah! You see, in my mind != looks nicer than ≠. Haha
That's why those exist
Yes, I use Fira Code myself
When you realize 90% of programming is reading, then you'll end up embarking on a journey to make code more readable. At some point you fall in love with ligatures.
Ligatures make code way easier to read, especially if you’re using lambdas or a language with different comparison operators than “normal”.
Long live Fixedsys! My favourite font since before time.
I found a version with ligatures. Love the thick equally spaced characters. Makes stuff so nice to read.
Yes, with Iosevka font
python -c 'print((61966753*385408813*916167677<<2).to_bytes(11).decode())'
perl -le 'use bignum;print+pack"H22",(61966753*385408813*916167677<<2)->to_hex()'
Alas, Perl doesn't bignum by default
Umm… someone explain this code please?
Bit shift magic.
My guess is that all the individual characters of Hello World are found inside the 0xC894 number. Every 4 bits of x
shows where in this number we can find the characters for Hello World.
You can read x right to left. (Skip the rightmost 0 as it’s immediately bit shifted away in first iteration)
3 becomes H 2 becomes e 1 becomes l 5 becomes o
etc.
I guess when we’ve exhausted all bits of x only 0 will be remaining for one final iteration, which translates to !
Too readable. You've gotta encode the characters as the solutions of a polynomial over a finite field, implemented with linear feedback on the bit shifts. /s
32 is ASCII space, the highest number you need is 114 for r (or 122 for z if you want to be generic), that's a range of 82 or 90 values.
The target string has 13 characters, a long long has 8 bytes or 16 nibbles -- 13 fits into 16 so nibbles (the (x >>= 4) & 15
) it is. Also the initial x happens to have 13 nibbles in it so that makes sense. But a nibble only has 16 values, not 82, so you need some kind of compression and that's the rest of the math, no idea how it was derived.
If I were to write that thing I'd throw PAQ at it it can probably spit out an arithmetic coding that works, and look even more arcane as you wouldn't have the obvious nibble steps. Or, wait, throw NEAT at it: Train it to, given a specific initial seed, produce a second seed and a character, score by edit distance. The problem space is small enough for the approach to be feasible even though it's actually a terrible use of the technique, but using evolution will produce something that's utterly, utterly inscrutable.
I understand that the characters are probably encoded into that number, but I’m struggling to understand that C/C++ code.
What is that weird >>=== symbol? Looks like a cross breed between C and JavaScript here.
It’s a the right shift assignment operator so x >>= 4
right shifts x by 4 and assigns the result back to x. The code editor is displaying single double wide symbol (ligature) instead of the three character long operator >>=
, I discovered today these are in fact well loved by some coders.
Yeah.. I love them. Makes my != look like ≠
If someone likes it but doesn't know where to find it, FiraCode does linea tires really good IMO
I totally thought because of how long the equals looked, it was multiple equals characters, not just >>= lol. That's what got me confused. Don't think these are things I'd personally use but each to their own preferences right xD
I guess it's a special kind of character called a ligature. They apparently are characters for combined operators. So in this case it seems to just be >>= all as one character?
It is exactly that. Some people really like them, others do not (me included). You usually need to go a little out of your way to get a font that supports ligatures for your editor.
As long as I don't have to maintain it.
(Who tf downvoted this? The "legacy code" lobby?)
Convenience link for people interested in the ligatures:
The best Hello World I saw used a random library. Because there's no true random without hardware, the author figured out the correct seed to write Hello World with "random" characters. I've used that to show junior devs that random in programming doesn't mean truly random.