[入门] 有人关注mono吗?

RednaxelaFX 2009-08-22
redsea 写道
monodevelop 速度很慢, 功能也不行.
更糟糕的是, mono 现在的 gc 还差得很, 只是一个保守 gc, 和 D 一个水平, 比起 java 的差很远, java 和 c# 这种纯 gc 语言, 这个影响可是很大的.

flyingxu 写道
喜欢d是因为他是一个不错的编程语言,
徘徊在d门口,是因为d没有一个好的framework和ide (个人意见)


昨天看了一下mono,c#语言,mono framework,monodevelop ide,
跨平台,可生成native code,

好像在d身上的幻想在mono上都实现了,而且c#作为语言来说(mono使c#不再仅限于.net),还是很不错的。

有同样关注的吗/


“现在”Mono确实还在用Boehm GC的修改版,DMD同样是用Boehm GC的修改版,这点它们现在的处境相似。不过Mono的新GC已经开发一年了,是简单的分代式、准确GC,目前代码已经签入到Mono的trunk里。可以期待新GC的引入能为Mono的性能提供新的发展方向。

MonoDevelop的速度和功能也已经比1.x的时代好多了 T T 也开始支持MSBuild了,这个期待已久,爽
BarryWei 2009-08-24
flyingxu 写道
喜欢d是因为他是一个不错的编程语言,
徘徊在d门口,是因为d没有一个好的framework和ide (个人意见)


昨天看了一下mono,c#语言,mono framework,monodevelop ide,
跨平台,可生成native code,

好像在d身上的幻想在mono上都实现了,而且c#作为语言来说(mono使c#不再仅限于.net),还是很不错的。

有同样关注的吗/


有关注也没用。MONO这东西官方网站上把它吹的跟牛一样,但实际情况不怎么样。
毕竟,.net是微软官方的,这东西只是第三方在linux上做的支持,没办法和原版的.net相比。
而且目前看来,微软似乎不会对linux下的.net感兴趣,否则会自己砸了自己的生意。
于是乎,我们看到了神奇的--鸡肋……

感慨ing
codekitten 2009-08-24
虚拟机难道就不能运行到更快一点么。。。
RednaxelaFX 2009-08-24
codekitten 写道
虚拟机难道就不能运行到更快一点么。。。

经过AOT的mono程序已经算不上用到虚拟机了……从MSIL(或者说CIL)到本地代码的转换在整个程序运行前就已经完成。或许你想说的是“编译器难道就不能生成更快的代码么。。。”……
codekitten 2009-08-24
RednaxelaFX 写道
codekitten 写道
虚拟机难道就不能运行到更快一点么。。。

经过AOT的mono程序已经算不上用到虚拟机了……从MSIL(或者说CIL)到本地代码的转换在整个程序运行前就已经完成。或许你想说的是“编译器难道就不能生成更快的代码么。。。”……


那调用的那些库也一并转换成native code么?如果我要生成lib或者dll文件的话,能否被AOT编译?
codekitten 2009-08-24
如果说虚拟机语言已经足够快了,那么D语言的优势在哪里呢。。。
RednaxelaFX 2009-08-24
codekitten 写道
RednaxelaFX 写道
codekitten 写道
虚拟机难道就不能运行到更快一点么。。。

经过AOT的mono程序已经算不上用到虚拟机了……从MSIL(或者说CIL)到本地代码的转换在整个程序运行前就已经完成。或许你想说的是“编译器难道就不能生成更快的代码么。。。”……


那调用的那些库也一并转换成native code么?如果我要生成lib或者dll文件的话,能否被AOT编译?

通过Mono的AOT模式编译和链接,在Mono上运行的C#程序可以完全转换为native code保存下来。链接的时候甚至可以不链接Mono的JIT,以节省空间,反正也不会用上它。之前提过iPhone的例子了,它是完全不允许第三方软件做动态代码生成的,也就是不允许JIT。而Mono支持在iPhone上的运行,足够说明问题了。

不过当前的Mono要使用完整AOT的话,貌似不支持泛型。这些限制得等Mono继续发展才会进一步放宽吧。
codekitten 2009-08-24
RednaxelaFX 写道
codekitten 写道
RednaxelaFX 写道
codekitten 写道
虚拟机难道就不能运行到更快一点么。。。

经过AOT的mono程序已经算不上用到虚拟机了……从MSIL(或者说CIL)到本地代码的转换在整个程序运行前就已经完成。或许你想说的是“编译器难道就不能生成更快的代码么。。。”……


那调用的那些库也一并转换成native code么?如果我要生成lib或者dll文件的话,能否被AOT编译?

通过Mono的AOT模式编译和链接,在Mono上运行的C#程序可以完全转换为native code保存下来。链接的时候甚至可以不链接Mono的JIT,以节省空间,反正也不会用上它。之前提过iPhone的例子了,它是完全不允许第三方软件做动态代码生成的,也就是不允许JIT。而Mono支持在iPhone上的运行,足够说明问题了。

不过当前的Mono要使用完整AOT的话,貌似不支持泛型。这些限制得等Mono继续发展才会进一步放宽吧。


那这样生成的可执行文件应该很巨大吧。。。
RednaxelaFX 2009-08-24
看跟什么比。由于AOT的时候托管代码都变成了native code,Mono自身的运行时库(包括GC之类)也被静态链接进来,其中不需要的部分(没有被调用到的函数)都不会被链接到最终生成的文件里。跟一般的静态链接没多少区别。
codekitten 2009-08-24
RednaxelaFX 写道
看跟什么比。由于AOT的时候托管代码都变成了native code,Mono自身的运行时库(包括GC之类)也被静态链接进来,其中不需要的部分(没有被调用到的函数)都不会被链接到最终生成的文件里。跟一般的静态链接没多少区别。


动态链接呢?
Global site tag (gtag.js) - Google Analytics