我将不胜感激任何人都可以简单介绍一下我,什么的实现类似MonoTouch的东西的一般方法? 我真的很惊讶,因为它不是第一个例子中我看到,当人们得到一些平台,如Java,使之转化为类似C / Objective-C的。 我真的不能想象如何之类的东西垃圾收集器之类的东西都被翻译。
提前致谢。
编辑 :我理解语言翻译成另一种理论的可能性。 我的问题是多一点的技术:他们实现ObjC一个完整的运行时和捆绑呢? (我怀疑它...),或者他们只是翻译的C#代码到ObjC /二/等?
我将不胜感激任何人都可以简单介绍一下我,什么的实现类似MonoTouch的东西的一般方法? 我真的很惊讶,因为它不是第一个例子中我看到,当人们得到一些平台,如Java,使之转化为类似C / Objective-C的。 我真的不能想象如何之类的东西垃圾收集器之类的东西都被翻译。
提前致谢。
编辑 :我理解语言翻译成另一种理论的可能性。 我的问题是多一点的技术:他们实现ObjC一个完整的运行时和捆绑呢? (我怀疑它...),或者他们只是翻译的C#代码到ObjC /二/等?
MonoTouch的使用名列前茅的时间编译生成一个单一的静态编译的文件 - 所以它没有实现iPhone上的.NET运行库。 MonoTouch的用途结合暴露在C#中的iPhone库。 没有翻译的Objective-C。
基本上,它可以让你在C#和相关的工具链工作时暴露下面的iPhone OS的库调用的熟悉。
米格尔·迪伊卡萨在播客#1,他是一个客人这个解释了一下。 链接
MonoTouch的是不是一个翻译。 它只是在iPhone上运行的单声道运行时,用一些花哨的诡计,使之与iPhone的限制不兼容。
传统的单声道“运行”不仅仅是JIT,它还处理GC,反射,I / O层,线程,异常等。另外还有类库。 为了让您的应用程序在iPhone上运行,这在很大程度上必须包含的应用程序。 瘦身下来带来了一些挑战。 此外,iPhone防止JIT运行时代码生成,仅运行签名的代码,并且不允许动态库。
什么MonoTouch的确实是使用IL连接到您的代码使用到一个单一的二进制IL类库的只是部分组合。 然后,它使用AOT编译预先生成所有的本地代码的JIT通常会从IL生成,然后与JIT少运行到可以签署一个本地二进制链接在一起这一点。 最后,IL从管理二进制剥离。 只留下的元数据。
MonoTouch的大概是单声道的到iPod的端口。
单本身就是各种* nix的环境.NET运行库(和一些开发工具)的开源实现。
这是由米格尔奥德伊卡萨谁实现.NET的早期的重要性,并着手将它移植到开放平台导致了大规模的劳动力。 顺便说一句,他receieved的支持了大量来自微软本身MONO本地.NET和单间给ineteroparability。
所以第一个答案是你需要一个良好的组织,辛勤工作的天才。
第二个答案是比较比较Sciency。 “图灵完成”是一个系统需要考虑一个可编程计算机的功能的最小集合。 它actualy一个非常小的集合 - 减,比较,分支和读取和存储。
该理论认为,任何“图灵完备”系统可以完成任何其它的“图灵完备”的系统可以做到。 所以给出任何合理完整的编程语言环境中,你应该能够使用其他程序环境效仿。
有此身边的例子不胜枚举。 JPython的运行在Java的JVM的模拟C Python而。 我的两个个人最喜欢的是它运行在您的浏览器原有的ZX频谱游戏和高德纳MIX assembeler机这两者都是纯JavaScript。