4 ms·
The author also managed to use the same word, linear, in two different senses while pretending those are the same (or very similar) senses. Bonus points for ha
by Joker_vD 6y ago
The author also managed to use the same word, linear, in two different senses while pretending those are the same (or very similar) senses.
Bonus points for having a somewhat long list of definitions that explains that the words are used in their usual meaning, yet does this by the way of introducing more undefined terms, sometimes tautological: an Agent is an actor with the capacity to act, marvellous. "A Doer is a doing entity that can do things"--agent and actor are both derived from the same Latin verb that means "to do". And that list misses the definition for "linear", which is definitely not used in any usual sense of the word: trees are linear, but graphs are not... huh?
- meheleventyone 6y agoYeah by the end of it I was dying for an explanation of what all the uses of linear and non-linear were meant to imply. One paragraph has the words mentioned six times in three sentences! The whole thing would be much more obvious if they ditched half the philosophising and gave a concrete example of the problem and their solution. Then by all means talk about the philosophy behind how it generalises.
- a1369209993 6y ago> "linear", which is definitely not used in any usual sense of the word: trees are linear, but graphs are not... huh? While I agree with your overall point, this is a usual definition of linear: each item (eg graph/tree node) is used (eg pointed to) at most[0] once (eg each tree node has at most one parent node, whereas a graph node can have multiple edges from other nodes). 0→2 0→2 ↓ ↓ ↓ ↓ 1 3 1→3 Left is a tree, and linear (each node has only one arrow pointing at it), while Right is nonlinear because there are two ways to get to 3 (via 1 or 2). In this context it also means that if (eg) you print out the graph in a naive S-expression-style traversal you'd encounter 3 twice (eg "(0 (1 (3)) (2 (3)))" when each node is a list). This sense comes from linear functions, which can be expressed with at most one use of their argument in the form λx(Ax+B) for A and B constant in x. (Under this scheme, x² would have to be expressed as x·x, which repeats x; linearity in programming languages generally allows numeric values to be duplicated freely, so this is only of etymological relevance.) 0: or possibly exactly once; I can never remember which of those is "linear" and which is "affine".
- gingerBill 6y agoYou are partially correct that I have a minor tautology i.e. an actor is something that acts. I wanted to use the term "agent" because "actor" already has a slightly different connotation in common programming speak, and I wanted something a little more specific. That's why I used that term. I do know the etymology of the terms Agent and Actor, but the point I was making is that these abstracted concepts don't actually "do" anything in reality. They are abstractions we use to help us structure and think about programs (regardless of it they are actually useful in practice or not) I was also using the term "linear" with respect to graphs: * All trees are graphs, but not all graphs are trees. All linear graphs are a form of tree. Whereabouts was I using the term _linear_ in two different senses?
- Joker_vD 6y agoWhat is a linear graph? What is "linear hierarchy"? That's the first time I've heard those terms, and I did have a decent Discrete Maths course back in the uni (it did have graph theory and algorithms on graphs). "Value", on the other hand, is indeed generally understood to mean "a datum with an associated type", maybe without "with associated type", pretty much universally since the sixties. As for two different senses, look at the the first paragraph in the "Mathematical Formalism of Ownership Semantics": it uses "linear graph" and "linear logic" in the same sentence. Unless you define "linear graphs" as "graphs that are described by linear logic", but to the best of my knowledge, linear logic describes the structure of computation (that's why it's logic, it describes the proofs and you get code via Curry-Howard isomorphism), not of data. Unless you equate the graphs with their traverses? But again, that's all highly non-trivial and non-widespread knowledge and terminology, unlike "value is a piece of data" and "agent is an actor".
- gingerBill 6y agoA "linear graph" is effectively a graph with no cycles in it, i.e. a basic tree. All hierarchies can be described using graphs, and hierarchy is a relationship between different things in that graph through some dominating aspect (whatever that might be). A "linear hierarchy" is a hierarchy with no overlapping parts, no cycles, and a unique way to traverse up the hierarchy, e.g. you father is your son is not allowed, a node cannot be part of multiple hierarchies, a node has two parents which share a common ancestor, etc. I am not sure why you brought up my "Value" definition, that was a little random. > Unless you equate the graphs with their traverses? I mostly am because data structures on their own without algorithms are useless things. Type systems try to encode information about the values effectively restricting what algorithms can do to them. Ownership semantics are another aspect of the type system of some languages which encodes a responsibility dependency graph to values. This means it explicitly restricts what data structures can be like _by default_. It encourages linear data structures, where the dependency between the values can be model through linear logic. This is why something as basic as a linked list is difficult to implement in languages designed around ownership semantics. It is of course possible but either requires restricting what the linked lists can do, or doing something to bypass the ownership semantics entirely.
- SJVSJV 6y agoI noticed the same thing with linear and duly noted it as the four term fallacy