{{htmlmetatags>metatag-robots=()
metatag-title=(MIDRES: ottimizzare "by design")
metatag-keywords=(Optimization,MIDRES,design,isomorphism)
metatag-description=(Questo articolo è una introduzione alla filosofia che si cela dietro alla libreria MIDRES.)
metatag-media-og:image=(::midres-logo-fb.png)
metatag-og:title=(MIDRES: ottimizzare "by design")
metatag-og:description=(Questo articolo è una introduzione alla filosofia che si cela dietro alla libreria MIDRES)
}}
====== MIDRES: OTTIMIZZARE "BY DESIGN" ======
===== PREMESSA =====
Questo articolo è una introduzione alla filosofia che si cela dietro alla [[:it:midres_library|libreria MIDRES]] . Questa libreria è nata, inizialmente, come un insieme di funzioni che trattavano la [[:it:midres|grafica MIDRES]] su C=64 (da cui il nome). Poi, con il tempo e come tutte le cose, è diventata una cosa diversa anche perché, essendo scritta in C puro, si prestava al porting. Così oggi è diventata una libreria che consente di programmare giochi su diverse piattaforme eterogenee, fornendo un efficiente motore per il tiling.
[[:it:midres_library|{{ :midres-logo.png?nolink&600 |}}]]
Nel passaggio da progetto sperimentale a libreria ho scelto l'approccio isomorfo invece di fornire un'astrazione, e quindi **la [[:it:midres_library|libreria MIDRES]] è una LIBRERIA ISOMORFA**.
* **È UNA "LIBRERIA"** perché è "una collezione di funzioni";
* **È "ISOMORFA"** perché garantisce che la traduzione in codice macchina sia fatta nel modo più vicino al target di esecuzione, A PRESCINDERE DA QUALE SIA.
\adsense\
Di solito il secondo punto lo si può ottenere in due modi alternativi, entrambi validi e diffusi:
* **realizzando astrazioni con una implementazione specifica**, target per target (bassa efficienza e bassi tempi di sviluppo [se il target è stato implementato]);
* **realizzando una versione del software diversa** per ogni target (alta efficienza e alti tempi di sviluppo).
Ho scelto un approccio ancora diverso, perché il computer non è mai "astratto" e il software è scritto in modo da essere identico per ogni target. E' una via di mezzo che cerca di prendere il meglio dai due aspetti, quindi è con **alta efficienza insieme a bassi tempi di sviluppo**: tale via di mezzo prende il nome di **isomorfismo**.
===== INDICE =====
* [[:it:midres_library:isomorphism:goal|SVILUPPARE RAPIDAMENTE SOFTWARE EFFICIENTE]]
* [[:it:midres_library:isomorphism:definition|DEFINIRE L'ISOMORFISMO]]
* [[:it:midres_library:isomorphism:abstractions|ASTRAZIONI O... DISTRAZIONI?]]
* [[:it:midres_library:isomorphism:otherlibs|NON ISOMORFISMO DELLE LIBRERIE ESISTENTI]]
* [[:it:midres_library:isomorphism:mydevkit|"IL MIO DEV-KIT E' DIFFERENTE"]]
* [[:it:midres_library:isomorphism:rules|L'ASTRAZIONE CHE NON C'E']]
* [[:it:midres_library:isomorphism:advantages|I VANTAGGI DELL'ISOMORFISMO]]
* [[:it:midres_library:isomorphism:other|ALTRE CARATTERISTICHE DELLA LIBRERIA MIDRES]]
* [[:it:midres_library:isomorphism:conclusions|CONCLUSIONI E PREVISIONI]]