I don't think you can judge syntax by looking at it -- you have to use it for a little while. Hoon's syntax looks hard, but it's actually rather pleasant to use.
I don't think you can judge syntax by looking at it -- you have to use it for a little while. Hoon's syntax looks hard, but it's actually rather pleasant to use.
There's overreaching first-principles boil-the-ocean dorm room rethinking of concepts, and then there's renaming the ASCII characters.
As it happens, "green" exists linguistically, so one is not compelled to wax artfully about the "yellow-blue blades [of grass] laced in dew". However, it used to be that the only way to talk of "orange" was as "yellow-red" or similar, until the simplifying convention of a new word for a distinct entity took hold.
Edit: Further, Urbit's equivalent of the Sunflower State Congress plan gloms enough together that an atomistically novel domain specific vocabulary is at least as useful.
Edit: As one effectively lay to the many disciplines of the professional field of computation, I use this forum to advertise my continued interest in a critical audit of Urbit. If Keean Schupke and Thomas Lord can probe the depths of Carl Hewitt's ActorScript [1] (the true standard for any so accused "obscurantist" software), then a fortiori Urbit's Anathem barrier [2] can be only semi-impermeable.
[0] https://en.wikipedia.org/wiki/Simplified_Spelling_Board
As I age, I find it harder and harder to remember how easy and natural it is for young people to learn new things: ideas, theories, languages, and yes -- names. Alas, we can't rejuvenate our brains. I know of only one (partial) cure: have your own kids. You'll feel jealous all the time, but it's worth it.
It's painful to admit that I'm probably too old to learn other peoples' new languages. But any new language isn't and can't be designed for 42-year-old silverbacks. It has to be designed for kids -- or at least, people are who are kids now. And believe me, teenagers love this kind of stuff...
[Edit: tptacek, when you edit a comment after posting it, I think it's good etiquette to mark it with an [edit]]?
I'm a parent of two teenagers, neither of whom seems particularly interested in new names for punctuation.
An XS Nock shirt is a dress for my daughter, but she loves the "code." I guess all kids are different. But you never know what they're ready to learn until you try to teach them.
Even more digressing, I'm very curious if young brains have an innate sense of 'new' in the most complex and abstract sense. It's as if they smell it.
I've actually taken to using TLVs with a Hungarian suffix in C -- it works well if (and only if) you have short, simple functions.
One way to think about variable names: declaring a variable is a way of saying "I couldn't quite get this into point-free form." Names should be the exception, not the rule. Again, this is much more true in a functional language.
Languages with lots of symbols tend to be incredibly difficult to read at first. If you have a programming language where a typical program looks like line noise, it means the programming language is going to likely have a very steep learning curve (because a lot of those operators are probably not going to have their standardized meaning).
Think about Python. A well-written Python program is similar to the pseudocode you would write on a napkin. For a concrete example, look at the whitepaper's definition of I1 in pseudo-code. The "pseudo-Hoon" implementation of I1 looks totally different from the pseudocode, and to even begin to read the Hoon code, I would have to look up the meanings of approximately 10 different operators.
I guess there are two different camps of language design -- the Perl / Ruby / shell camp where having lots of non-standard operators in your syntax is desirable, and the C / Python / Lua camp which prefers a small set of operators with meanings close to their "standard" mathematical ones.
To me, C syntax is obvious, because I've been using it for 30 years. It may be a small set of operators, but "meanings close to their standard mathematical ones" may be a bit of a stretch.
If you're going to put a lot of energy into binding syntax to sound to semantics, you only want to do it once (per language, at least.)
Hence why geeks and programmers rarely call them by name. See http://www.catb.org/jargon/html/A/ASCII.html .
Everyone who's learned our ASCII dictionary, which admittedly is not a whole lot of people, applies it compulsively.
nap [
pan ]
lep (
pel }
If that's not a typo, using mirrored words for ( and } is downright malicious.