编程语言

首先说明,我没做过任何试验,只是一些理论上的分析。最自认为可以比较和谐的看到java,c/c++,但是.net就算了,曾经给我幼小的心灵留下过巨大的阴影。

天天听人争啊争的什么语言流B啦,什么语言快了,头都大了。从在不做任何反抗,不过今天有看了一篇,一时冲动就像说点啥了。语言分两种,这大家都知道,编译型语言和解释型语言,不过我觉得现在又多出一种,java和.net,半编译的。说它半编译,一部分是说它会将源代码编译成方便计算机快速解释的中间代码,另外我觉得更重要的是,就像java的hotspot技术一样,讲频繁使用的代码编译成native代码,并且进行优化。

强调这个是为了推翻现在很多人号称做的实验.net,java跟C/C++差不多快的实验结果。原因很简单,实验都是很简单的,我们一看就知道咋回事。一样的道理,编译器解释器也一样,一个简单的循环,java,.net的虚拟机一定会把代码本地化,那效率如何比C++低?更过分的说,我看到一个人做的实验,实验用的是循环print,我觉得这个真的很滑稽,大家都知道,C的标准输出流是没有缓冲的,而java,.net是有的,循环操作的瓶颈在于io操作,那么半编译语言比C++快都是天理所在。但是java,.net真的足够快么?

我在举个例子,不知道做java,.net的有没有看过eclipse内核equinox,jboss的源代码,所有的核心代码都是C,如果差不多快,真的必要么?

再拿理论来说,java和.net的运行,我们是没有办法控制程序的执行流程的,我们控制不了虚拟机如何编译,即使控制了,我们也控制不了虚拟机如何运行,何时何地hotspot何东西,所以,我们没足够的力量去优化。C++/C呢,我现在更愿意把他看做计算机的0101,一切都可以控制,只要我们愿意,我们可以让他达到计算机运行的极限,但是就拿我来说,我没这能耐,C/C++就像一门哲学,效率,扩展性,代码结构一切一切的都是一个平衡的过程,只有最优秀的工程师才能发挥他的威力,我。。。恩,我觉得我的C++代码效率还是不看的好。。。java和.net就是一个工具,我们只要按照他的规范去做,不傻,不笨,就不会犯错,因为允许犯得错误虚拟机都帮我们解决了。但是C/C++不同,一切都要我们自己解决,那我们能有虚拟机做的好么?未知数。就好像java,.net的攻击力范围是50-50,而C/C++却是0-100。

在说说我的另外一个理由,做想了解java虚拟机的都知道,java创建一个对象,调用一个方法,需要多么复杂的过程?如果我们需要的只是一个小对象呢,就好比一个四叉树的节点,游戏里大量快速的重复分配,就这一点,半编译语言就一定会死掉,因为设计者的哲学是,这些不是我该做的。C++可以,因为只要硬件允许,它就可以,但是不是人人用C++都可以做到。

说了这么多都是说C++的好,但是,半编译语言真的很流B,我曾经就是铁杆的javafans,甚至我连3D游戏都拿java做。而且效率也不差,它们,给我们提供的是一种程序质量的保证,如果没有足够的热情钻研C/C++,那还是算了,世界是有分工的,语言也一样,就像我们整天说C++怎么就没个好用的UI库呢,而这对其它的高级语言来说,浮云到不能再浮云。

干什么事情,用什么语言,要用C++做java的事,我们相当于自己做个java虚拟机,用java做c++的事,相当于什么我不知道,因为做不到。那就在明显不过了,能用java解决的问题,为什么还要去用c++呢?它可以更好,因为它的基础是无数个超级专家为我们做的,我们自己如何比他们做的好。同样的,用java做c++的事,我唯一能想到的方法就是30%的函数都是JNI。。。剩下的都是一堆无聊的业务逻辑,那么好吧,把它交给python,lua,这是我更愿意做的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值