Fork me on GitHub

移植mono和Lazarus是龙芯电脑要想取得成功必须做的事情[转载]

龙芯论坛上的一篇分析得比较好的帖子,转过来给各位瞧瞧,原文是: http://www.lemote.com/bbs/viewthread.php?tid=8269&page=1#pid77266

先说mono!
    记得先前在论坛上看见了有人提出是否考虑移植mono的事情,老大回答说只要是开源软件,从理论上就没有问题。可是从那以后就如同石沉大海,再也没有音信了。我不知道是不是已经在做这件事,但是我还是要在这里说一下我的观点,龙芯电脑要想取得成功,就必须移植mono,因为通过移植mono可以解决现在的很多问题。
    第一,可以解决龙芯(其实应该说是Linux/FreeBSD等)应用软件少,且短时间内无法迅速增加这个难题。mono从1.2开始就已经完全兼容微软.net 1.1了,到现在1.2.4已经几乎完美兼容.net 2.0了(包括Forms命名空间)。这就意味着在现在和将来将有大量不断的商业的/非商业的...软件能够直接运行在龙芯上。且.net拥有非常好的开发工具,就算不说商业的(vs系列)和免费的(turbo系列),开源的在Linux/FreeBSD下有MonoDevelop,Windows下有SharpDevelop,这些开源的.net开发工具都已经具有了RAD(类似vb,delphi,bcb)和代码洞察功能,最重要的是.net是一个语言中立的运行环境,目前mono已经内置了开源的c#2.0和vb.net2.0的编译器,而其他重要的语言(delphi,fortran,ada,python...还有很多!)几乎都有.net的实现(delphi.net,a#,IronPython...还有更多!)容易使用的开发工具加上能够跨语言跨平台的.net运行环境会使很多的没有龙芯电脑或并不精通c/c++/java的软件爱好者可以为龙芯开发应用程序。我向来反对有些人说的:我们有c++/java就足够啦!何必再...什么呢?在这些人的眼里,万般皆下品,唯有c++/java高。我不想和这帮人争论,因为我从来都不会和不懂得尊重别人的人多说一句话!c++在Linux上还没有很好的开源RAD开发工具(windows上有wx-devcpp,不过第一不是跨平台的,第二,确实不太好使,更不要提和bcb比了!)java除了netbeans还算好使外其他的都不敢恭维(尤其是被吹得神乎其神的eclipse)(我都试过,我有发言权!),而java的swing库说实话,太难看了!swt真是个好东西,可是因为SUN和IBM政治斗争到现在都没能够成为java的标准库,而且java的多媒体功能到现在都很阳春!不要跟我说jmf,你最好去SUN的官网去看看,那东西还停留在N年前的版本1.2呢!和java SE5/6的配合也存在问题(主要是有些东西不是过时就是冲突,例如enum在java5/6已经成为了关键字)而这些.net(主要讲Mono)都有很好的解决方案(sdl.net,opengl.net,tao.net...太多了!而且还可以直接调用操作系统的多媒体接口。XNA后面还要单讲!)为什么不用呢?RAD语言的使用者,比精通c++的人多得多,.net的类库比java的类库要好用的多(包括asp.net比jsp先进一代:即把逻辑代码和页面html分离,mono自带的asp.net服务器就能够很好的运行asp.net2.0,更何况mono和阿帕奇配合更能够打造一个完全开源跨平台免费的网络服务环境),为什么不用大多数人的力量来推动龙芯的发展呢?(还有人说只要把LAMP搞好就行了,我想反问他一句,你会使用龙芯盒子或者龙芯笔记本做一个长时间不关机的网络服务器吗?如果是我佩服你的勇气!我认为lamp应该是龙芯3号和用龙芯三号制造的服务器应该干的事(包括asp.net)!而作为龙芯二号为代表的桌面电脑首要问题是解决应用软件的稀缺。)
    第二,Mono可以作为非常理想的粘合剂!众所周知,基于虚拟机的语言在运行效率上是不可能比原生代码来得快的!而c++开发用户界面太麻烦,java调用原生代码太麻烦主要是因为没有指针,因此在调用c风格api的时候要费点劲!Mono(尤其是c#和delphi.net两种语言)就可以起到很好的粘合剂的作用,可以把功能实现部分用c/c++作成动态链接库,然后在.net用户界面程序中用代码调用(例如用c#只要很简单的加一句[DllImport]就可以了),这样既可以顾及开发效率,又能够兼顾执行效率!
    第三,可以解决龙芯上游戏少的困境,在论坛里可以看到很多类似这样的问题:龙芯能玩...游戏吗?啊!不能,那还是算啦吧!事实就是这样的残酷,很多人买电脑就是为了玩游戏,windows能够在万般辱骂中屹立不倒游戏无疑起了一定的作用,在中国,你让家长花1万给孩子买电脑他干,你让家长花1千4给孩子买台游戏机他不干!况且游戏确实也是linux的弱项,不过现在好了,微软推出了xna还推出了免费的xna开发工具xna studio,他最主要的特点是提供一套基于.net的跨平台游戏开发库,基于xna的游戏可以在xbox360和pc上直接运行(pc上当然得装.net2.0 和一个1M的XNA运行库)。而Mono也在5月份开始了Mono.XNA项目,就是要在Mono里实现XNA,这也就意味着一旦这个项目完成之后,我们在龙芯上就可以同步的玩到xbox360和pc上的游戏了,这难道不是对龙芯一个巨大的推动吗?(在论坛里也看到了有人说用龙芯打造中国人自己的游戏平台,XNA无疑是代价最小也最容易实现的一个)
    再说Lazarus!
    Lazarus是一个基于FreePascal的跨平台的RAD开发工具,可以简单的把它理解成一个开源的跨平台的类似delphi的原生代码开发工具。他的特点是一次编写,到处编译,windows,linux,freebsd,macos...lazarus是目前我所知道的最好的开源跨平台的原生代码RAD工具(可视化开发,代码洞察...商业的开发工具有的特性他全有!),他所使用的freepascal编译器(已经有了多个平台和处理器的版本例如:x86,x64,powerPC,MIPS,甚至有一个版本支持任天堂的掌机GBC)除了能够兼容delphi语言外,还增加了例如运算符重载等c++语言的特性,而它所使用的组件架构lcl是基于gtk的,由于在上面论述mono的时候已经说过了关于用户界面的开发的问题(c++太难java不好看),因此这里就不赘述了,但freepascal也不是完美的主要是编译出的代码在运行效率上还没有办法和gcc相比,但同样,我们可以用上面提到的用lazarus开发的程序做粘合剂,这里也不赘述了!
    中国必须得有自己的信息平台,但是龙芯要想成功光靠一帮愤青是绝对不行的,作为龙芯要想成功,就必须走进千家万户,成为人们平常工作,学习,游戏的得力工具。因此,我认为在现阶段移植mono和lazarus是刻不容缓的,并且是应该放在优先考虑的战略位置的!因为只有当人们在使用龙芯时没有什么是只有pc能做而龙芯做不了的时候,普通人们才会认可他接受他。也只有被普通人们接受才能标志着我们真正能够开始建立一套我们中国自己的信息标准体系!
posted @ 2007-06-21 22:57  张善友  阅读(2552)  评论(1编辑  收藏  举报