6 ms·
I'd like to comment on the name of this project, but fear my comment would be equivalent to an argument about semantics.
by isomorphic 7y ago
I'd like to comment on the name of this project, but fear my comment would be equivalent to an argument about semantics.
- aidos 7y agoThe term has been weirdly adopted by the dev community in a way that kinda makes sense if you squint a little but has always created a dissonance in my brain due to my maths background. But since we’re here! For those who don’t know the word from outside of the dev sphere, in maths it refers to having 2 way mappings between 2 structures. You can do it between totally seemingly unrelated parts of maths (you just need to show how to map between them). As a result, anything you’ve proved in one space holds true in the other. It can be useful if you have an intuition and understanding of one of the spaces but not the other. I’m trying to think of a nice example but I haven’t thought about this type of maths for a couple of decades now. Answers on a postcard please!
- a-saleh 7y agoI remember my mind being blown when in Discrete Math 101 we learned that natural numbers are isomorphic with whole numbers. Was it, you map 0 to 0, even n to n/2, odd n to -(n+1/2) and all of us were like whoa and the TA is like "wait till I tell you about diffrent cardinalities" :D
- jrh206 7y agoThis is just a bijection - for an isomorphism you need more structure. Roughly, having an isomorphism (which is a function) says: 0. I have two sets of things, and I can perform operations on each set 1. These two things are the same size (this is your example) 2. If I do operation A on elements (a, b) in set A, then perform the isomorphism on the result, this gives me the same thing as if I performed the isomorphism on a and b independently then performed operation B on their result 3. The isomorphism has an inverse with the same properties [There are various types of isomorphism depending on what part of maths you’re thinking about. But they all have roughly this idea of “same size” and “preserves something cool that I can do in each of the spaces”]
- throwaway_pdp09 7y agoHow do isomorphic, homomorphic and bijective differ, please?
- filmor 7y agoIsomorphic is homomorphic + bijective. Bijective means that a mapping is exactly one to one. Homomorphic means that "structure is kept". E.g. in a vector space you can add and multiply by a scalar, so a mapping f is homomorphic if for all x, y in the vector space and lambda a scalar f(lambda*x + y) = lambda*f(x) + f(y)
- throwaway_pdp09 7y agoShort + sweet, thanks
- housecarpenter 7y agoA little correction: an isomorphism is a homomorphism which is bijective and has a homomorphism as its inverse. For many structures the inverse being a homomorphism automatically happens as a logical consequence of the function being a bijective homomorphism, but this isn't the case for all structures. The most prominent examples are topological spaces: a bijection between topological spaces can be continuous (i.e. a homomorphism of topological spaces) but can have an inverse which is not continuous. The classic example is a function which maps an interval to a circle by applying cos and sin to get the coordinates; this is continuous as small changes in the interval result in a small change in the position on the circumference, but its inverse is not continuous because there will be a point on the circle where the nearby points on one side come from the start of the interval but the nearby points on the other side come from the end of the interval.
- rhn_mk1 7y agoWhat's the meaning of the term in the dev community?
- Longwelwind 7y agoIn the JS community, it means a library that can run client-side (in the browser) or server-side (in NodeJS).
- isomorphic 7y agoRight. While I understand why they use the term this way, it still feels semantically abusive given the math concept.
- glutamate 7y ago"Isomorphism" means different things in different communities https://en.wikipedia.org/wiki/Isomorphism_(disambiguation) https://en.wikipedia.org/wiki/Isomorphism_(disambiguation) Why is the definition in one community special? Isomorphism means "same shape" from Greek, sounds like a good way to describe code written in the same language running in different environments.
- rgoulter 7y agoAnother term in computing/programming for "same code in different environments" is "portable". (e.g. C++ code that compiles/runs on both Linux/Windows). I've not seen 'isomorphic' used in computing outside of JS.
- alanbernstein 7y agoNot that you're wrong, but it's a deep and pervasive concept in mathematics, and the field of computing is closely connected to mathematics in general. It's sort of a namespace collision.
- heleninboodler 7y ago
- OJFord 7y ago> The term has been weirdly adopted by the dev community in a way that kinda makes sense if you squint a little but has always created a dissonance in my brain due to my maths background. I don't really have a 'math background' (engineering graduate, but I don't think that counts, a mathematician certainly wouldn't) but I know (enough, roughly, layman's definition) what it means in mathematics, and work in software engineering. I have absolutely no idea why this project is called 'isomorphic', it doesn't make any sense to me however much I squint, and doesn't seem to be explained anywhere. I'd guess it's just an arbitrary name and isn't supposed to have meaning? Though it's a library for `git`, why not just call it `git`? shrugs
- CGamesPlay 7y agoThe “isomorphic” comes in because the same library / API is available in both the browser and in node. So “anything you can prove in [node] is also proved in [the browser]” (in the context of this library).
- wmhilton 7y agoAll the good names were already taken on npm / GitHub: git, git.js, js-git, es-git. "Isomorphic JavaScript" had just been coined and was trendy at the time (2017ish, see https://en.m.wikipedia.org/wiki/Isomorphic_JavaScript https://en.m.wikipedia.org/wiki/Isomorphic_JavaScript) and "isomorphic-git" is unique enough to be Google-able. Naming things is hard.
- mraison 7y agoI have a similar reaction whenever I come across a library or tool named "manifold".
- niklasbuschmann 7y agoA simple example would be the isomorphism between a complex number: a + bi and a 2x2 matrix: {{a, -b},{b, a}}. https://en.wikipedia.org/wiki/Complex_number#Matrix_representation_of_complex_numbers https://en.wikipedia.org/wiki/Complex_number#Matrix_represen...
- excerionsforte 7y agoFrom the project: "The "isomorphic" in isomorphic-git means that the same code runs in either the server or the browser. That's tricky to do since git uses the file system and makes HTTP requests. Browsers don't have an fs module. And node and browsers have different APIs for making HTTP requests!"