C++、Java/C#之比较

 

    一、关于跨平台问题。

    这点我未深入研空,只谈谈我的感觉,我感觉Java/C#的跨平台实际上是个比较巧妙的骗局。因为它们的跨平台性还是要某个厂家或厂家联盟的支持,这种平台不过是通过在不同的“硬平台”基础之上设置一个接口统一的“软平台”,这梓表面上是跨越了“硬平台”,实际“软平台”的限制仍是无法跨越的;或若厂家未生产某一“硬平台”的“软平台”那这个“硬平台”你还上跨不上去的。真正的跨平台技术是互联上的“htm/xml,这是目前任何厂家无法据为己有而又不得不遵守的标准。

    二、关于指针问题。

C#/Java 借鉴了C++,但去掉了C++的双刃剑——指针(当然不是完全去掉,在某种形式下还是可以用的,或者在使用时受到了比较大的限制)。于是关于C#/JavaC++的优劣问题往往围绕着指针展开,“用C#/Java,还是用C++”对于许多C/C++程序员来说,就象哈姆雷特的“是生存,还是死亡”让人踌躇徘徊。其实指针的使用与否,其本质就是内存的分配、访问与释放权由谁掌握的问题。

使用指针,由程序员根据需要分配、访问内存,程序运行时动作明确直接没有额外的处理步骤,程序的执行效率就高,但若程序员忘了释放内存或释放内存的策略不够周全,就会产生不可预知的问题,而且这种问题往往是比较严重。

不使用指针,并不意味着内存的分配、访问与释放不须处理,只不过是这些工作由编译器生成的通用“内存管理器”完成了,因此程序执行时,必须增加额外的内存管理动作,所以执行效率相对上种方式而言有所下降。由于“内存管理器”的运作是基于业内专业人士制定的比较完善内存管理机制,因而安全程度较高。但实际上,由于内存的分配、访问、使用、释放的情况比较复杂,这种安全性并不是100%的。也就是说安全的保证是由“另外的人”负责的,这种情况下,一旦出现问题,你无法查清问题所在,或即使你查清问题所在,也无法纠正。

好了,关于指针,一边是100%的效率、60%的安全性、100%的自由,一边是60%的效率、99%的安全性、100%枷锁,你选择吧。我想对于“高手”而言,自信也罢、固执也罢,选择指针是他们骨子里自由与冒险精神的决定。

“是生,是死——这是一个值得考虑的问题。”——但不要丧失了行动的能力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值