{{htmlmetatags>metatag-robots=() metatag-title=(Il mio dev-kit è differente (sto usando la libreria MIDRES)) metatag-keywords=(Optimization,MIDRES,design,isomorphis) metatag-description=(L'approccio isomorfo si basa sul mappare l'hardware sottostante senza far uso di librerie terze e facendo corrispondere tra loro strutture complesse ed eterogenee, seppur omologhe.) metatag-media-og:image=(::midres-logo-fb.png) metatag-og:title=(Il mio dev-kit è differente (sto usando la libreria MIDRES)) metatag-og:description=(L'approccio isomorfo si basa sul mappare l'hardware sottostante senza far uso di librerie terze e facendo corrispondere tra loro strutture complesse ed eterogenee, seppur omologhe.) }} ====== "IL MIO DEV-KIT E' DIFFERENTE" ====== L'approccio isomorfo è differente da quello delle astrazioni. Si basa sul fatto di mappare l'hardware sottostante senza far uso di librerie terze e facendo corrispondere tra loro strutture complesse ed eterogenee, seppur omologhe. Il codice scritto con questo approccio, quando funziona bene cioè quando è soddisfacente come velocità di esecuzione o uso delle risorse, **è già ottimizzato su qualsiasi altra piattaforma**. Ad esempio, vediamo come il programmatore può scrivere sullo schermo visibile. MIDRES espone molte funzioni per il disegno. Tutte si riferiscono, direttamente o indirettamente, alle "tile". Le tile sono le unità di base del disegno e sono disponibili ovunque, in gran numero. Il modo più semplice è usare la funzione ''mr_puttile'' ((Vedi https://github.com/spotlessmind1975/midres/blob/master/src/game_alien_storm.c#L1339)): mr_puttilev(fireX, fireY, TILE_LASER, MR_COLOR_YELLOW); Come è possibile notare, questa chiamata disegna un raggio laser (''TILE_LASER'') giallo (''MR_COLOR_YELLOW'') nella posizione ''(fireX, fireY)''. Qui la versione utilizzata è quella con il suffisso ''v'', per indicare che deve essere disegnata sullo schermo visibile. Cosa significa ''TILE_LASER''? Nulla, è un mero segnaposto. La libreria MIDRES lo passerà "così com'è" all'hardware sottostante. Proprio come accadrà con il colore. Ok ma chi definisce questo simbolo? A quale grafica sarà associato? Questo è un problema della libreria MIDRES, che deve trovare un modo per "abbinare" ciò che il programmatore richiede con ciò che è disponibile, in termini di risorse. In altri termini, il cambio di piattaforma si può ridurre a una corrispondenza tra parti omologhe (che si comportano, in genere, in modo simile a livello di performance). E' chiaro che ciò è possibile solo se la libreria è isomorfa perché, se non lo fosse, non sarebbe neanche possibile scrivere programmi **WORA** perché (banalmente) la logica con cui è scritto il programma non sarà legata al modo in cui il computer target funziona ma a come l'astrazione funziona (in questo caso, la libreria MIDRES). In tal caso l'efficienza dipenderà da come il programmatore si muove "secondo le venature del legno", quindi diventa un **WORFILLI** (Write Once Run Fine If Library Likes It). Vai alla pagina [[:it:midres_library:isomorphism:rules|L'ASTRAZIONE CHE NON C'E']] [[:it:midres_library:isomorphism|{{ :midres-logo.png?nolink&600 |}}]]