5 ms·
How many times a day do you want to say "percent equals" or "tilde ampersand," rather than "centis" or "sigpam"? Worse, you may not spend a lot of time reading
by urbit 11y ago
How many times a day do you want to say "percent equals" or "tilde ampersand," rather than "centis" or "sigpam"? Worse, you may not spend a lot of time reading code out loud, but when you read your brain still thinks the sounds.
Of course, you're free to prefer keywords to digraphs. But sometimes I worry that there's a reason the 787 looks just like the 707 [1], and it's not at all about airplanes...
[1] http://idlewords.com/talks/web_design_first_100_years.htm http://idlewords.com/talks/web_design_first_100_years.htm
- JoshTriplett 11y ago> How many times a day do you want to say "percent equals" or "tilde ampersand," Zero if I can help it. Even if I'm talking about code aloud, I normally do so semantically, saying what the code is doing, because people are more than capable of reading the code itself. (Same premise as commenting code.) If I'm actually reading the exact symbols aloud, a rare occurrence, then I'll say things like "mod equal" or "mod eq", "tilde and", etc. If I'm reading "#include <stdio.h>", I'll say "include standard I O", not "pound include space angle s t d i o dot h angle newline". > Worse, you may not spend a lot of time reading code out loud, but when you read your brain still thinks the sounds. No, it absolutely doesn't. Learning to avoid reading-aloud internally is one of the first things taught in speed-reading of prose, and the same concept applies to programming. > Of course, you're free to prefer keywords to digraphs. But sometimes I worry that there's a reason the 787 looks just like the 707 [1], and it's not at all about airplanes... That may be, but what you've done here is on par with APL saying "you need a completely non-standard keyboard and character set to program this language", but worse. If you want to introduce new names for symbols, that's a separate exercise from trying to make a new programming language; the latter is quite hard enough.
- urbit 11y agoBut worse? I assure you that we're not shipping Urbit with non-standard keyboards printed with "com" rather than ",". If these syllables rub you the wrong way, you're perfectly free to pronounce them any way you like. Most people aren't speed-readers. I am, but only because I learned at an early age. I don't know anyone who speed-reads code in the sense you mean.
- eru 11y agoThe grandparents post's first argument about semantic reading was much more important than the speed reading bit.
- urbit 11y agoThis works fine for C, which is a keyword language. What you'll find if you look at Hoon is about 100 combinator runes, which are digraphs like "%=" ("centis") or "|-" ("barhep"). (There is of course a power-law usage distribution -- a few common runes dominate.) If we had to invent and remember semantic names for each of these runes, that binding would really be a lot of work to remember. We could say "mutate" instead of "centis" and "loop" instead of "barhep". Remembering these bindings would be quite a lot of work. Of course, we could use reserved words directly; you can experiment with translating Hoon into reserved words. (The earliest experiments used keywords with a sigil, like ":loop".) To my eye the keywords look hideously verbose and are easily confused with symbols. You also lose the ability to classify, say, "|=" and "|-", as closely related runes. This is especially useful with unusual, rarely used runes; what is "|/"? You might not know, but you know that it starts with "|", so it makes a core.
- JoshTriplett 11y ago> If we had to invent and remember semantic names for each of these runes, that binding would really be a lot of work to remember. So is remembering what all the runes do; if the names and the functions relate, they're both easier to remember.
- urbit 11y agoThe runes (a) help you remember the combinators, and (b) are two characters long. To get to reasonably precise, meaningful keyword bindings for this set of combinators in particular, perhaps you'd be replacing ":-", ":_", ":+", ":^", ":*", and ":~" with ":pair", ":reverse-pair", ":triple", ":quadruple", ":tuple", and ":list" respectively. This is a pretty benign and easy case, and you may have to trust me on what kind of hash this search-replace alone would turn a Hoon file into. Then again, I suppose it all looks like hash to you. Language design is hard; you can't please everyone. Probably the best-case scenario is that you please some people, and the rest are dragged kicking and screaming. And that's a best case.
- molyss 11y ago> Worse, you may not spend a lot of time reading code out loud, but when you read your brain still thinks the sounds. Probably correct. But then for names you are not familiar with, the name gets mapped into the equivalent and known concept in your working memory. I usually model this as a very small LRU stack where old objects get pushed when you exceed the size. The stack is considered to be around 7 concepts deep. So just by overloading these 2 words, you're potentially reducing working memory by more than 20% (increasing mental load by much more due to constant swapping in and out of working memory). The brain is amazing I know wikipedia is not always right(tm) but https://en.wikipedia.org/wiki/Working_memory#Capacity https://en.wikipedia.org/wiki/Working_memory#Capacity
- kenko 11y ago"Your brain still thinks the sounds" is hilarious.