跨平台,跨出心域

原创 2005年05月31日 17:19:00


  by Yazy,2005-5-31

现代的程序设计语言被谈论很多的话题有“跨平台”。Java语言有“Write once, Run every”的平台无关
性广告,很多Java程序员以此倍感自豪。C++语言也被称为“跨平台”性最好的语言之一,信仰C++的程
序员也会为此倍感自豪。

Java跟C++相比,谁更加跨平台?我觉得它们都有很强的跨越能力,都已是大气里不可缺少的一部分,都
已容入大气,无所不在,无处不有。

Java从原来生存于WebBrowser的Applets成长起来,如今的Java已经可以生存于Windows桌面,Linux桌
面,Web服务器,手机、掌上电脑等移动设备……Java与生俱来的网络生存能力无与伦比,Java无所不在,
其生命力由人所见。

Sun控制着Java试图侵犯信仰其它语言的神圣领地,比如C++。在市场气氛的熏陶之下,Java会将自己所
有的“特长”展现出来,并以此打击其它信仰者神圣不可侵犯的圣地。Sun就像一个精力十足的传教者,
将Java带到每一寸纯洁的地域,甚至是侵入已经被其它文化熏陶过的地方。Sun试图使用一些贬低、讽刺
的语言来诋毁其它文化,以达到侵入其它文化的忠实者内心,并取而代之的目的。

毫无疑问,Sun是在市场魔手的驱动之下,在试图默默地控制人自由选择的权力。信念不够的人便被其精
辟的广告语、以及幽默的诋毁性短语动摇,以至放弃原有的信念,重新选择。这种诋毁也在很多人言行之
中有意无意的表露出来,说明了普通人也有意无意地会有这些诋毁的言行。如果这种诋毁成为一种意识,
那么人类命中注定要活得更累。抛开所有宗教气氛,人最基本的就是尊重别人,包括尊重人的自由选择权。
诋毁人的选择,这是在侮辱人,是在默默将气氛紧张,并使之带有敌意。

跨平台在商业上是商家们竞争的一个切入,从社会效益的角度去看,跨平台更有益于社会的发展,更容易
得到用户的青睐。用户可以使用同一个工具在不同的操作平台上工作,省去了学习新工具的时间,提高了
社会运行效率。

Java的跨平台基于动态的二次编绎,C++的跨平台基于开发者所使用的编绎工具集以及库。Java的跨平台
层次止于其字节码,C++跨平台层次止于其源代码。Java字节码的执行全懒于其二次编绎程序,C++源代
码的执行全懒于编绎平台。从运行的效率讲,Java字节码需要经二次编绎的过程,而C++编绎后的原生代
码不需要这个过程,可以想象两者的执行效率的不同。Java字节码的执行可以有更多的定制化,而C++等
语言生成的原生程序不会有定制执行。

.NET平台也是二次编绎的运行平台,任何高级语言只要能编绎成.NET的“字节码”,即Intermedia Language,
就可以运行于.NET平台。现代的很多解释型语言都增加了二次编绎平台,以加快程序运行效率以及语言的
灵活性,提高跨语言交互性。例如Perl社区与Python社区共同提出的Parrot平台。Parrot的思想的形成时期
并不.NET晚,两都的出现没有模仿或者跟随的情况,两者不约而同的出现可能就说明了这种“二次编绎”
的运行方式有它的需求空间。

脚本、Java、.NET、Parrot和C++,这一切最基本的不同就是程序运行的方式不同,而用户需要哪种运行
方式,需要什么样的运行效率用户完全可以自由选择。用户的选择直接影响到的是程序的开发方式以及开
发效率,脚本程序相对来说开发效率是最快的,次之是基于中间代码的语言,相对开发时间最长的是
C/C++。用户有权力在这些选择之中作出权衡。

开发者是个特殊的用户,是开发工具及语言的最终用户。程序员有权力选择自己喜欢的开发平台,而为各
种诋毁性短语所默默左右便显不够自信,定力不足,任何诋毁都是极俱侮辱的言语。我们没有理由否定人
的选择……

我喜欢强大灵活的工具。语言我喜欢C++,平台我喜欢GNU的开发平台。然后强大的工具都不是万能的,
总有不足之处。而我并不追求完美,亦都不追求完美与第一,“第一”是别人的哲学。

工具以及平台的强大与灵活换来的是学习曲线的陡峭,学习时间需要更长。这也常常是程序员选择开发平
台的要求之一。“人不能被束缚于工具”,所以一个工具如果需要花更多时间去掌握,可能会被更多的人
拒绝。这也是个权衡选择的问题。

程序员应该跨出语言之间、操作系统之间、工具之间的商业竞争所带来的污染地带,跨出绝对信仰与绝对
排斥的心域才能够活得更轻松。我心中的程序员是多才多艺的,是刻苦耐劳的。程序员热爱生活、积极向
上,程序员是情感丰富的动物。

跨出编写300个用例的第一步

接到一个项目,一个大日常,跨很多应用,形成了标准的开发测试N:1,满心欢喜觉得自己终于可以独当一面了。可是当拿到N个UC的时候,就有种瞬间傻眼的感觉。   但是由于越觉得这个工程很庞大,越想早点开始...

在MyEclipse中使用Spring,跨出Spring伟大的一步

1.建一个java web工程项目,名字是:blog.csdn.net.daliu 2.建俩个包,一个名字是org.spring.dao,另外一个是:org.spring.test ...

滴滴出行跨出国门,再战Uber胜算有多大?

11月15日消息,滴滴出行宣布与安飞士巴吉集团(Avis Budget Group)达成战略合作协议,双方将为超过3亿中国用户在近175个国家和地区提供境外安飞士(Avis)以及巴吉(Budget)租...

跨平台实时写日志

  • 2017年12月05日 11:52
  • 47KB
  • 下载

微软跨平台CoreMVC6Demo例子代码

  • 2017年11月20日 20:26
  • 31.2MB
  • 下载

千百万Java开发者的福音:跨平台Cocos2d-Java游戏引擎诞生

跨平台Cocos2d-Java游戏引擎以及配套的CocosEditor2.0游戏开发工具终于诞生了。使用Java语言来开发Cocos2d跨平台游戏, 和-lua,-js 的风格相近API,毋庸置疑,这...

react native 开发跨平台github

  • 2017年11月09日 17:06
  • 77B
  • 下载

boost.asio的跨平台实现

前几天写了篇日志,主要是基于其在linux平台下的实现写的,今天还是一篇备忘,根据boost.asio在win与非win下的实现来谈谈它的跨平台设计与实现.boost.asio根据系统平台提供的事件多...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:跨平台,跨出心域
举报原因:
原因补充:

(最多只允许输入30个字)