{{htmlmetatags>metatag-robots=() metatag-title=(Define isomorphism of MIDRES library) metatag-keywords=(Optimization,MIDRES,design,isomorphis) metatag-description=(Well, but in detail ... what is isomorphism?) metatag-media-og:image=(::midres-logo-fb.png) metatag-og:title=(Define isomorphism of MIDRES library) metatag-og:description=(Well, but in detail ... what is isomorphism?) }} ====== DEFINE ISOMORPHISM ====== Well, but in detail... **what is an isomorphism?** The easiest way is to indicate what **it is not**, that is, defining it through a series of negations: * it is not synonymous with "same interface"; * it does not mean (only) to use the same code; * it does not mean (only) using data structures without mediation; * above all ... it's not a magic bullet! I borrow the words of Douglas Hofstadter: //We speak of isomorphism when two complex structures can be applied to each other, that is, to correspond to each other, so that for each part of one of the structures there is a corresponding part in the other structure; in this context we say that two parts are correspondent if they have a similar role in their respective structures.//((currently, this is translated from Italian)) {{ :midres_library:isomorphism:plus4_blockschaltbild.png?nolink |}} Computers are complex structures made up of interacting parts. Computers of different brands and models are complex but, often, **they are made up of parts that perform roughly the same function**. If it were possible to make a part of a computer "correspond" to the homologous part of the other, that is, if what is compiled could adhere, **in the best way**, to every combination of supported hardware, we would have that a **written software for a computer would be recompilable on the others with no losses in performances**. Move to page [[midres_library:isomorphism:abstractions|ABSTRACTIONS OR ... DISTRACTIONS?]]. [[:midres_library:isomorphism|{{ :midres-logo.png?nolink&600 |}}]]