6 ms·
Hmm, I looked around on that post at all the parts referring to Nock and I still don't see anything that would convince an impartial reader of what you're sayin
by westoncb 6y ago
Hmm, I looked around on that post at all the parts referring to Nock and I still don't see anything that would convince an impartial reader of what you're saying.
Are you taking issue with the style/language the post is written in? I mean it does sound to me like someone a little too fascinated by their own ideas... —but I it seems too uncharitable to dismiss it because of that.
What I got from my quick skim is that the author was well aware of some similarity to combinatory logics, but intentionally took a different direction with Nock:
> Unlike the lambda calculus, Nock represents code as data, not data as code. This is because it is system software, not metamathematics. Its loyalties in this matter are not even slightly divided.
Or
> As you'll quickly see if you try this exercise, raw Nock is not a usable programming language. But nor is it an esoteric language or automaton, like SK combinators. Rather, Nock is a tool for defining higher-level languages - comparable to the lambda calculus, but meant as foundational system software rather than foundational metamathematics.
This sounds reasonable to me. I don't know if Nock successfully fulfills this claim, but without assuming the author is just straight up lying about this stuff, it seems like, "Any combinatory logic would do the trick" is probably not accurate.
- xkapastel 6y agoHave you ever implemented a programming language before? You are relying a lot on "quick skims" and the POV of an "impartial reader", i.e. someone who does not know the domain. It's much easier to see through the bullshit if you're familiar with PL. > Unlike the lambda calculus, Nock represents code as data, not data as code. This is because it is system software, not metamathematics. Its loyalties in this matter are not even slightly divided. This does not mean anything. > But nor is it an esoteric language or automaton, like SK combinators. Rather, Nock is a tool for defining higher-level languages - comparable to the lambda calculus, but meant as foundational system software rather than foundational metamathematics. This is hilarious considering Nock is, in fact, esoteric. SK combinators are also very comparable to lambda calculus, and it's not clear what "foundational system software" even means in the context of a combinatory logic just like SK combinators. And why would Nock be any good at "defining higher level languages"? Keep in mind that their idea of "higher level languages" includes Hoon, another esoteric language. You skimmed it quickly and didn't see anything that jumped out to you as wrong. That's a good explanation for how a cup and ball game like Urbit got as many users as it did: you need a bit of specialized knowledge to see that it's full of hot air.
- westoncb 6y agoI think you've got me wrong on this—the idea that I'm "relying" on "quick skims" and the POV of an "impartial reader," would imply that I'm somehow using these things against you. I literally am an impartial reader trying to understand this, who spent a little time reading a resource you pointed me at. If I missed what you wanted me to discover in the resource, you could just highlight it here. But instead you've chosen to question my competence and make another series of ungrounded derogatory assertions about the tech. Now including some mistakes, or at least overly uncharitable interpretations that are useless to an impartial reader: > This is hilarious considering Nock is, in fact, esoteric. It's esoteric sure, but it seems like his usage here refers to Esoteric Languages (https://en.wikipedia.org/wiki/Esoteric_programming_language https://en.wikipedia.org/wiki/Esoteric_programming_language) —which has a separate meaning (e.g. languages "as a proof of concept, as software art,"). That seems to be the whole point when he compares it to e.g. lambda calculus: he is maximizing practicality over mathematical elegance. So it makes perfect sense to point out that while it's esoteric it's not an Esoteric Language. > This does not mean anything. Again, if you take an uncharitable extreme, I agree: it's basically a meaningless thing to say. But if I wanted to be charitable I could come up with several ways of interpreting it. > SK combinators are also very comparable to lambda calculus Yes, I got the sense he was using them pretty much interchangeably here, using SK combinators as an example of an esoteric language, and in the next sentence he prefers "lambda calculus" because its a formal system in mathematical logic rather than a computational system, and the whole purpose of the sentence is to make a distinction between software foundations vs. mathematical foundations. Unless you show an interest in exchanging ideas over rhetoric in your reply—don't expect any further responses from me.
- platinumrad 6y agoYou: Can you tell me why this is interesting? Them: It's not interesting. You: Idk this vague sentence sounds kind of interesting to me. Can you tell me why this is interesting? Them: Trust me it's not interesting.
- westoncb 6y ago
- geofft 6y agoIt's not that the author is lying per se about the claims, it's that the claims are somewhere between meaningless and pointless. What is the difference between "code as data" and "data as code" and why does it matter? What is the use of a not-directly-usable programming language which can define higher-level languages? In which meaningful ways does, say, LLVM IR not treat "code as data" and not count as a not-directly-usable programming language on which other languages can be built? I am not saying, nor is 'xkapastel, that there is no difference between Nock and LLVM IR or any combinatory logic or whatever. We're asking what the point of the differences is. Anyone can make up a language (or any other object or idea) and define claims about that language that no other language satisfies. The question is whether those claims actually represent something meaningful and worthwhile ("interesting properties," as 'xkapastel put it) or just unique. That's a matter for the judgment of the reader, and we cannot just defer to the judgment of the claim-maker that the claims are worthwhile.
- kragen 6y agoLLVM IR treats code as data, like Nock, because LLVM IR, like Nock, is systems software, not metamathematics. Combinatory logic, by contrast, is metamathematics, and in combinatory logic, if you want numbers or lists, much less byte strings, you have to build them out of code, using Church numerals and the like. So, in this way, Nock is similar to LLVM IR and different from combinatory logic. There are a variety of practical benefits to representing code as data in this way, which I do not feel the desire to explain in detail at the moment, but suffice it to say that all practical programming languages and virtual machines share this property with Nock. So, you might ask, do there exist purposes for which Nock is preferable to LLVM IR? Well, I don't know, but Moldbug's intent was for the answer to be "yes"; there are problems he wanted to solve which LLVM IR definitely does not solve. Foremost among these is getting people to impugn one another's competence on the orange website. No, wait, foremost among these is determinacy and permanence: it is the intent that the result of any Nock computation be deterministic and unchanging through all time. The meaning of LLVM IR, by contrast, changes every time someone fixes a bug in an LLVM backend, or introduces a new one. You will note that this way that Nock differs from LLVM IR is also a way that SK-combinators differ from LLVM IR. SK-combinators also provide a deterministic computational system that is simple enough that we can imagine not changing it. That is why it was necessary to explain how Nock differs from SK-combinators. So Nock shares some crucial attributes with combinatory logic and others with LLVM IR, but neither system has the combination of characteristics that Nock does. Now, why would anyone want a deterministic, permanent virtual machine definition? I don't know why Moldbug wanted it. There are some reasons that I want it; I think reproducible computational experiments are an important way to communicate human knowledge, a way that could perhaps drastically reduce the loss of knowledge from one generation to the next, accelerating the ratchet of philosophical progress which made the modern world possible. However, I don't want to have anything to do with Urbit! I don't want to use a virtual machine that people credibly say is named after a famous anti-Semite. I also think some of the technical choices in Nock are questionable and may turn out to be fatally flawed. I despair somewhat in writing this comment because I feel that everything I'm saying is painfully obvious, but obviously there is something about the people I am talking to that makes it not obvious to them. But since I do not know what that is, it seems likely that my own words will be just as incomprehensible to them as Moldbug's voluminous, and to me perfectly clear, explanations. And the level of viciousness in the air makes me think that probably those people will respond to their own incomprehension by launching personal attacks on me, as they have been on each other. It's pathetic.
- throwanem 6y ago> it does sound to me like someone a little too fascinated by their own ideas This is perhaps the most simultaneously concise and accurate description of Curtis Yarvin, or at least of that of himself which he chooses to display in his writing, that I can imagine ever encountering.
- ardy42 6y ago>> Unlike the lambda calculus, Nock represents code as data, not data as code. This is because it is system software, not metamathematics. Its loyalties in this matter are not even slightly divided. Isn't that pseudo-profound (i.e. sounds grand but says nothing)? It seems like you could say the same thing about assembly or Java.