Domanda

Vorrei davvero apprezzare che qualcuno potesse spiegare brevemente, qual è l'approccio generale per l'attuazione cose come MonoTouch? Sono davvero stupito perché non è il primo esempio che vedo quando la gente ottiene una certa piattaforma come Java e rendono traducono in qualcosa di simile a C / Objective-C. Non posso davvero immaginare come le cose come collettore di immondizia e roba del genere sono in corso di traduzione.

Grazie in anticipo.

Modifica : Capisco possibilità teorica di tradurre una lingua all'altra. La mia domanda è un po 'più tecnico: si attuano un runtime completo in objC e attorcigliato? (Ne dubito ...) o semplicemente tradurre codice C # in objC / binario / etc?

È stato utile?

Soluzione

MonoTouch utilizza la compilazione Ahead-Of-Time per la produzione di un singolo file compilato staticamente - in modo da non attuare il runtime .NET su iPhone. MonoTouch utilizza il legame con le librerie iPhone esposti a C #. Non c'è traduzione di Objective-C.

In sostanza, ti dà la familiarità di lavorare in C # e il suo associato toolchain, esponendo le chiamate di libreria del sottostante iPhone OS.

Miguel di Icaza ha spiegato questo un po 'sul podcast StackOverflow dove era ospite.

Altri suggerimenti

MonoTouch non è un traduttore. E 'semplicemente il runtime Mono in esecuzione su iPhone, con qualche inganno fantasia per renderlo compatibile con le restrizioni di iPhone.

Il tradizionale Mono "runtime" non è solo il JIT, gestisce anche GC, di riflessione, di I / O strato, filettatura, eccezioni ecc C'è anche le librerie di classi. Affinché la vostra applicazione per eseguire su iPhone, gran parte di questo deve essere incluso con l'applicazione. Slimming giù presenta alcune sfide. Inoltre, l'iPhone impedisce JIT generazione di codice runtime, solo codice corre firmato, e non consente librerie dinamiche.

Che MonoTouch fa è quello di utilizzare un linker IL combinare solo le parti delle librerie di classi che il codice utilizza in un unico binario IL. E poi utilizza la compilazione AOT di pre-generare tutto il codice nativo che il JIT normalmente genera dalla IL, poi collega questo insieme con il runtime JIT-meno in un unico binario nativo che può essere firmato. Infine, l'IL è spogliato dal binario gestito. lasciando solo i metadati.

MonoTouch è presumibilmente un porto di Mono per l'iPod.

Mono per sé è un'implementazione open source del runtime .NET (e alcuni strumenti di sviluppo) in diversi ambienti * nix.

Questa è stata una fatica enorme guidato da Miguel de Icaza che ha realizzato in anticipo l'importanza di .NET e si mise a porting per aprire le piattaforme. Per inciso si receieved un grande supporto da Microsoft stessa come MONO dato ineteroparability tra .NET nativa e mono.

Quindi, la prima risposta è che dovete essere un genio lavorando sodo ben organizzato.

La seconda risposta è più Comp Sciency. "Turing Completa" è un il set minimo di funzioni che un sistema deve essere considerato un computer programmabile. La sua actualy un piccolo set -. Sottrarre, confrontare, ramo e leggere e memorizzare

La teoria è che qualsiasi sistema di "Turing completo" può fare qualsiasi cosa a qualsiasi altro sistema "di Turing completo" può fare. Quindi, dato qualsiasi ambiente ragionevolmente completo linguaggio di programmazione si dovrebbe essere in grado di emulare utilizzando un altro ambiente programma.

Ci sono numerosi esempi di questo giro. JPython corre il pitone emula C in una JVM Java. I miei due preferiti sono che corre originali ZX giochi spettro nel browser e Knuth MIX macchina assembeler che sono entrambi puro javaScript.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top