Question

J'apprécierais vraiment que ce que quelqu'un pourrait me expliquer brièvement, quelle est l'approche générale de la mise en œuvre des choses comme MonoTouch? Je suis vraiment étonné parce que ce n'est pas le premier exemple que je vois quand les gens une plate-forme comme Java et font traduire en quelque chose comme C / Objective-C. Je ne peux pas vraiment imaginer comment les choses comme Garbage collector et d'autres choses sont en cours de traduction.

Merci d'avance.

EDIT : Je comprends la possibilité théorique de traduire une langue dans une autre. Ma question est un peu plus technique: ils mettent en œuvre une exécution complète dans ObjC et bundle? (Je doute ...) Ou ils traduis juste code C # dans ObjC / binaire / etc?

Était-ce utile?

La solution

MonoTouch utilise la compilation en avance sur le temps de produire un seul fichier compilé statiquement - il ne met pas en oeuvre le moteur d'exécution .Net sur l'iPhone. MonoTouch utilise la liaison aux bibliothèques iPhone exposées à C #. Il n'y a pas de traduction à Objective-C.

En gros, il vous donne la familiarité de travailler en C # et son associé toolchain tout en exposant les appels à la bibliothèque de l'iPhone OS sous-jacent.

Miguel di Icaza a expliqué ce un peu sur le podcast Stackoverflow où il était invité.

Autres conseils

MonoTouch est pas un traducteur. Il est tout simplement le moteur d'exécution Mono fonctionne sur iPhone, avec une ruse de fantaisie pour le rendre compatible avec les restrictions de l'iPhone.

Le Mono classique « runtime » est pas seulement le JIT, il gère également GC, la réflexion, la couche I / O, filetage, etc. exceptions Il y a aussi les bibliothèques de classes. Pour que votre application pour fonctionner sur l'iPhone, une grande partie de cela doit être inclus avec l'application. Minceur vers le bas présente des défis. De plus, l'iPhone empêche la génération de code d'exécution JIT, le code ne fonctionne que signé, et ne permet pas de bibliothèques dynamiques.

Qu'est-ce que MonoTouch fait est d'utiliser un éditeur de liens pour combiner IL seulement les parties des bibliothèques de classes que votre code utilise en une seule IL binaire. Il utilise ensuite la compilation AOT pré-générer tout le code natif que le JIT normalement générer de l'IL, puis effectue cela avec le moteur d'exécution JIT-moins dans un binaire natif unique qui peut être signé. Enfin, l'IL est extrait du binaire géré. laissant seulement les métadonnées.

MonoTouch est vraisemblablement un port de Mono à l'iPod.

Mono lui-même est une implémentation open source du moteur d'exécution .NET (et certains outils de dev) dans divers environnements * nix.

Ce fut un travail massif dirigé par Miguel de Icaza qui a réalisé très tôt l'importance de .NET et mis sur le portage pour ouvrir les plates-formes. Soit dit en passant, il receieved beaucoup de soutien de MicroSoft lui-même comme MONO a ineteroparability entre .NET natif et mono.

La première réponse est que vous devez être un bien organisé, le génie travaillant dur.

La deuxième réponse est plus Comp sciency. « Complete Turing » est un ensemble minimal de fonctions qu'un système doit être considéré comme un ordinateur programmable. Sa très petite actualy ensemble -. Soustraient, comparer, branche et lire et stocker

La théorie est que tout système « complet Turing » ne peut rien faire tout autre système « complet Turing » peut faire. Donc, étant donné tout environnement de langage de programmation raisonnablement complète, vous devriez pouvoir l'imiter en utilisant un autre environnement de programme.

Il existe de nombreux exemples de ce autour. JPython court le émule python C dans une machine virtuelle Java Java. Mes deux favoris personnels sont qui gère les jeux de spectre d'origine dans zx votre navigateur et Knuth MIX machine assembeler qui sont tous deux javascript pur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top