3 ms·
There are two problems. First, you would not describe a web application as “isomorphic” if it’s an abstraction over a client and a server which both share the
by dsacco 9y ago
There are two problems.
First, you would not describe a web application as “isomorphic” if it’s an abstraction over a client and a server which both share the same code. The proper way to use this term would be to say that there is an isomorphism between the client and the server (and again, that web application is not the isomorphism), or you could say that the client and server are isomorphic with respect to one another. A thing cannot be isomorphic, it can only be isomorphic with respect to another thing. But it cannot be isomorphic because it is a morphism between two things in an isomorphism.
Second, and more importantly, the client and the server do not share an isomorphism under this paradigm. An isomorphism describes two objects which have a mapping between them such that, for all intents and purposes, they are equivalent. “Equivalence” is a specific mathematical term distinct from equality: 5 and 7 are not equal, but under a function that outputs the same number for all odd inputs, 5 and 7 are equivalent.
More precisely, you cannot tell two objects apart using only their properties if they are isomorphic to each other. If we were to define a client and a server in a category theoretic sense, the client and the server would have to have all the same properties that can be used to draw morphisms, which means a bijective function could be drawn between them such that they have equivalent outputs when used as the inputs for other functions. In other words, it must be possible for the client to be the server for this web application and vice versa.
This is obviously not the case just because they share all the same code, for a variety of examples. Let’s say a client and a server share an isomorphism. Then a web application hosted by the server is also hosted by the client, and all the users of the server could equivalently (in the mathematical sense) log in to, and interface with, the client as if it were the server. Then the client and the server are not equal, but they are equivalent. But this framework does not enable that capability.
It’s just not a correct use of the word. I personally don’t mind the use of mathematical terminology in a colloquial sense, but only if that terminology is used in an audience-appropriate and correct way. Here’s an example: in a peer to peer file transfer relationship, two peers share an isomorphism via their peer connection if they both have all the same properties (i.e. same file transfer protocol, same internet speed, same files, etc) germane to a particular morphism (which we’ll in this case define as a function to get a download from a peer). Then Peer A and Peer B are isomorphic with respect to one another; you could drop in Peer A’s IP address to download the same files, at the same speed, etc as if you dropped in Peer B’s IP address.
- jdoliner 9y ago> A thing cannot be isomorphic. It seems like it's pretty common to refer to something as Isomorphic X if it's an instance or implementation of X which relies heavily on the concept Isomorphism. For example, in homomorphic encryption the homomorphism is really describing the relationship between the encrypted text and the clear text. Not the encryption itself, so really a pedantically correct name would be "encryption in which the clear text and encrypted text are homomorphic with respect to certain operations" but "homomorphic encryption" serves as shorthand for that. > Second, and more importantly, the client and the server do not share an isomorphism under this paradigm. An isomorphism describes two objects which have a mapping between them such that, for all intents and purposes, they are equivalent. “Equivalence” is a specific mathematical term distinct from equality: 5 and 7 are not equal, but under a function that outputs the same number for all odd inputs, 5 and 7 are equivalent. I disagree that they don't share an isomorphism and also disagree with your terms here. The standard definitions of isomorphism, at least the ones I found, do not seem to use the notion of equivalence, I'd be interested to see a link to one that does. Furthermore "equivalence" by itself isn't a specific mathematical term, again I'd be interested to see a link its definition but neither Mathworld or Wikipedia seem to have definitions. Equivalence Relation is defined but there are other uses of equivalence in math. > More precisely, you cannot tell two objects apart using only their properties Yes, and this seems to apply very well to the Client and Server because you can't tell them apart by running Go code on them since they both will give you the same answer. You can tell them apart by doing other things to them, but that's true of all isomorphisms. For example the groups ({0}, +) and ({1}, *). (0 under addition and 1 under multiplication.) Are clearly isomorphic since they're both just a group with their identity element. But you can also obviously tell them apart in other ways.