3 ms·
pedantic, but I don't like this application of the term "isomorphic"
by opportune 9y ago
pedantic, but I don't like this application of the term "isomorphic"
- danharaj 9y agoNot pedantic, the word isomorphism shouldn't be abused like this.
- abritinthebay 9y agoI assume you’re against the usage of it in every now non-mathematical field then? Because it’s a perfectly applicable usage when used outside of mathematics
- jack_h 9y agoI'm guessing a lot of people take issue with the term because it feels out of place. Software engineering doesn't use a lot of greek derived terminology like mathematics, chemistry, etc... Rather it seems to primarily use English derived terminology. At least that's my reading of the situation.
- danharaj 9y agoI'm opposed to sloppy uses that don't really apply except in the most trivial sense and don't actually convey any useful information. It's a buzzword now and I'm embarrassed for programming.
- abritinthebay 9y agoIt absolutely conveys useful information. At least... when used correctly. It's talking about applications that share a similar structure and composition. An isomorphic application is one that is structured similarly on the server and the client (often sharing most of the code) but will not have all the code the same. For example - server side code may deal with Auth or routing whereas the client is more data driven. This is quite different to a 100% server rendered page OR a client-rendered page. It shares some features with both. This is also quite different from the implication of a universal application - which would imply both the client and server run the exact same code (otherwise how can it be called universal?). So it's very information rich compared to any alternative.
- jdoliner 9y agoWhat's wrong with it? Generally speaking in mathematics isomorphisms are mappings that admit inverses. That seems like a fairly accurate description of what's going on in that you can map code from server to client and back again without changing its meaning. What word would you use?
- deleted 9y ago[deleted]
- hyperpallium 9y agoMappings that admit inverses are bijections. An isomorphism is a special kind of bijection in which, if two things have some relationship before the mapping, they have some other relationship after the mapping. e.g. if a*b = c, then ln(a)+ln(b) = ln(c) EDIT The isomorphism is the mapping from x to ln(x); the two things before the mapping are a and b; their relationship before the mapping is that their product is c; the two things after the mapping are ln(a) and ln(b); and their new relationship is that their sum is ln(c). In this example, it's not just "some other relationship" after the mapping, but involves c, also mapped.
- jdoliner 9y agoRight, particularly they're homomorphisms that admit inverses. I confused myself into thinking that the fact that they admit an inverse implies that they're structure preserving but that obviously isn't true. Still I don't see anything here that doesn't basically apply to running the same code on client and server. Since the entire point is that you are preserving structure, Go is supposed to have exactly the same semantics on client and server.
- hyperpallium 9y agoYep. But as others have said, it's not really isomorphism in a mathematical sense. The article defines "Isomorphic web applications" as "where the web server and the web browser (the client), may share all, or some parts of the web application code." Just, "same shape" on both sides. If it was identical code, I would (mathematically) call it an identity (which, to be fair, is an isomorphism). But it's not identical; they transpile go to js ("GopherJS - A compiler from Go to JavaScript"). This compilation itself is arguably an isomorphic mapping, with the same code doing equivalent things on both sides. e.g. equivalent assignments between equivalent variables. Two problems with this interpretation (1) a transpiler doesn't have to be isomorphic (e.g. could use different idioms); (2) that's not really the aspect they're referring to.
- hermanhermitage 9y ago"monoglot" might be a more accurate term, but "isomorphic" seems to have the mind share. "isomorphic" would seem to imply having the same structural composition - eg. big ball of mud on the front end and back end, or broken into services implemented as objects (sequential) or actors (concurrent).