Urbit is based on the "C of functional programming," which sucks. The creator is saying he's designing a language for people who would have failed computer science in the 60s and 70s because they can't think mathematically. It's not surprising that the quality of software is much worse now than it used to be.
https://github.com/cgyarvin/urbit/blob/master/doc/book/0-intro.markdown
>If I can summarize Hoon's goal, it's to be the C of functional programming. If you're not so arthritic that you learned to code in Turbo Pascal, you may never fully appreciate the metaphor.
>All languages in the Algol procedural family, including both C and Pascal, map straightforwardly onto a conventional CPU. But Pascal and C handle this mapping very differently. Pascal and C both have pointers and arrays, but Pascal works hard to treat both pointers and arrays as mathematical abstractions. C drops the abstraction; it makes no bones about the fact that a pointer is a memory address.
>To a Pascal purist, to anyone who thinks mathematically, this seemed hideous. C isn't really a high-level language at all - it's a glorified macro assembler. Mankind retreats to the cave. But to programmers who are not natural mathematicians, whose minds are mechanical rather than abstract, C is a lifesaver. Since most mathematicians are also good mechanical thinkers, whereas very few people are naturally adept at abstraction, C slew and pillaged the once promising empire of Pascal.
There's a huge difference between the high-level semantics of Algol and Pascal and the PDP-11 assembler semantics of C. In the early 1960s, computer engineers discovered that real arrays could be implemented as array descriptors in hardware that allow bounds checks in parallel, which was done on the Burroughs mainframes, Lisp machines, and various other architectures. One of the big reasons for having mathematical pointers is that pointers are defined by their graph structure and can be relocated by a garbage collector, but PDP-11 words disguised as pointers must have the same integer value at all times. By following mathematics, you do "the right thing" even if you didn't have that in mind. These languages are compatible with the PDP-11 way of doing things, but not only. Fortran and Pascal on Lisp machines use GC and Lisp arrays even though the creators of those languages didn't intend to use GC or tagged memory. Segmented memory was designed for high-level languages and the only language that has trouble is C because it was "designed" for the PDP-11.
Another problem with Urbit is that the primitives are bad so it depends on C functions called "jets" which means the entire C language is added to Urbit semantics. The primitives should be designed correctly so they could be translated into efficient code without needing these "jets." This is also why RISC sucks. One of the weenie "philosophies" is that low level parts of a system don't matter because you can build something else on top, which is why computers with 8 GB of memory can't do what computers with 64 KB of memory could do in the 60s. What really sucks is that this "philosophy" has infected other communities and companies, like Microsoft which now uses TypeScript for everything when 10 years ago they were working on Singularity and WinFS and writing about how higher level languages can remove a lot of unnecessary bullshit from OS design. It's not surprising that the "C of functional programming" requires the "C of PDP-11 programming" to be usable because they suffer from the same problems.
"RISC is to hardware what the UNIX operating system
[sic] is to software."
Subject: Wait, I thought RISC was a *good* idea
No, the quote is exactly right. RISC is a lazy solution
along the lines of "well, we don't know how to write
compilers that use complex instructions efficiently, and we
don't know how to design complex hardware that runs fast, so
we'll make everything simple, and we can advertise we run at
80Mhz even though the system supports fewer user than a 1
MIP DEC-20."
It's exactly analagous to "you can use pipes and
redirection shell scripts to do anything, so we don't have
to write any REAL programs" and "portability is more
important that usability" philosophies so rampant in the
unix world.