{{htmlmetatags>metatag-robots=() metatag-title=(Optimize "by design": the MIDRES library) metatag-keywords=(Optimization,MIDRES,design,isomorphis) metatag-description=(This article is an introduction to the philosophy behind the MIDRES library.) metatag-media-og:image=(::midres-logo-fb.png) metatag-og:title=(Optimize "by design": the MIDRES library) metatag-og:description=(This article is an introduction to the philosophy behind the MIDRES library.) }} ====== OPTIMIZE "BY DESIGN": THE MIDRES LIBRARY ====== ===== PREAMBLE ===== This article is an introduction to the philosophy behind the [[:midres_library|MIDRES library]]. This library was born, initially, as a set of functions that treated [[:midres|MIDRES graphics]] on C=64 (hence the name). Then, with time and like all things, it became a different thing also because, being written in pure C, it is easy to make a porting. So today it has become a library that allows you to program games on different heterogeneous platforms, providing an efficient engine for tiling. [[:midres_library|{{ :midres-logo.png?nolink&600 |}}]] In the transition from experimental project to library, I chose the isomorphic approach instead of providing an abstraction, and therefore **the [[:midres_library|MIDRES library]] is an ISOMORPHIC LIBRARY**. * **IT IS A "LIBRARY"** because it is "a collection of functions"; * **IT IS "ISOMORPHIC"** because it guarantees that the translation into machine code is done in the way closest to the execution target, REGARDLESS OF WHICH IT IS. \adsense\ Usually the second point can be obtained in two alternative ways, both valid and widespread: * **creating abstractions with a specific implementation**, target by target (low efficiency and low development times [if the target has been implemented]); * **creating a different software version** for each target (high efficiency and high development times). I chose an even different approach, because the computer is never "abstract" and the software is written to be identical for each target. It is a middle ground that tries to take the best of both aspects, so it is with **high efficiency together with low development times**: I called this middle ground **isomorphism**. ===== INDEX ===== * [[midres_library:isomorphism:goal|QUICKLY DEVELOP EFFICIENT SOFTWARE]] * [[midres_library:isomorphism:definition|DEFINE ISOMORPHISM]] * [[midres_library:isomorphism:abstractions|ABSTRACTIONS OR ... DISTRACTIONS?]] * [[midres_library:isomorphism:otherlibs|NOT ISOMORPHISM OF EXISTING LIBRARIES]] * [[midres_library:isomorphism:mydevkit|"MY DEV-KIT IS DIFFERENT"]] * [[midres_library:isomorphism:rules|THE ABSTRACTION THAT IS NOT THERE]] * [[midres_library:isomorphism:advantages|THE ADVANTAGES OF ISOMORPHISM]] * [[midres_library:isomorphism:other|OTHER FEATURES OF THE MIDRES LIBRARY]] * [[midres_library:isomorphism:conclusions|CONCLUSIONS AND FORECASTS]]