5 ms·
I find the original blog posts [1] a really interesting read. Nowadays Urbit is indeed full of buzzwords, “your personal cloud computer” and the like. But initi
by Ruud-v-A 10y ago
I find the original blog posts [1] a really interesting read. Nowadays Urbit is indeed full of buzzwords, “your personal cloud computer” and the like. But initially, Urbit was this [2]:
> Urbit is a new programming and execution environment designed from scratch. Any resemblance to existing languages or operating systems is coincidental, cosmetic, or inevitable.
It was based on this idea: suppose that a different civilization (Martians specifically) had invented computing long before humans. Then by now they would have perfected it. What would their system look like? Urbit is an attempt to rethink computing without the bias of human research and our current intuition. At the heart of Urbit is Nock, a “functional assembly language”. Zero is intentionally used to denote “true” to defy programmer intuition.
[1]: https://moronlab.blogspot.com/2010/01/urbit-functional-programming-from.html https://moronlab.blogspot.com/2010/01/urbit-functional-progr...
[2]: https://github.com/cgyarvin/urbit/blob/master/doc/book/0-intro.markdown https://github.com/cgyarvin/urbit/blob/master/doc/book/0-int...
- Animats 10y agoZero is intentionally used to denote “true” to defy programmer intuition. OK, that was just perverse. Except check out the latest iteration of point of sale credit card terminal keypads. "0" is Yes and "X" is no.
- astrange 10y agoThat's normal in Asia. (They swap everything in the UI when porting Playstation games over here.)
- pygy_ 10y agoIndeed, ine may want to earch for "batsu and maru".
- pmahoney 10y agoFor unix processes, exit status zero is conventionally considered success and non-zero is failure.
- Ruud-v-A 10y agoNow that Urbit is not entirely vaporware any more they regret this, but reverting the decision is not worth the trouble: https://www.reddit.com/r/urbit/comments/4okcm6/were_the_core_urbit_team_ask_us_anything_about/d4dd4gy https://www.reddit.com/r/urbit/comments/4okcm6/were_the_core... There are more interesting insights in that thread about Urbit’s unorthodox decisions.
- jandrese 10y agoSo this is some kind of art project? I was trying to figure out why someone would actually want to use it, but maybe it is meant to be looked at and discussed instead of being used?
- Avshalom 10y agoIt definitely started out as one but--and this is one of my favorite things about programming-- it's very possible to be an art project and a... not-art project at the same time.
- api 10y ago0 == true is also used in C error return values, where nonzero means "false" as in "did not succeed." So it's not without precedent. It's not a terrible idea. In most types of computing there's often only one way for something to be true but N ways for it to be false.
- jacquesm 10y agoThis is really not the case. The C language and the standard library are distinct things. C originally did not define any values at all for booleans (true / false), but later implementations did and even in the oldest C compilers (0 == 0) would evaluate to '1', which caused the most repeated lines of C preprocessor input ever written: #define TRUE 1 #define FALSE 0 Guarded by some #ifdefs if your compiler supported that. Some standard library functions return nonzero on error (which can be < 0 or > 0), zero on 'success' which is not the same as true, and others (annoyingly) return 1 on 'success' or 'true' (such as the isalpha function/macro).