{{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]]