C++、Java/C#之比较
2008-05-18 20:32
295 查看
一、关于跨平台问题。
这点我未深入研空,只谈谈我的感觉,我感觉Java/C#的跨平台实际上是个比较巧妙的骗局。因为它们的跨平台性还是要某个厂家或厂家联盟的支持,这种平台不过是通过在不同的“硬平台”基础之上设置一个接口统一的“软平台”,这梓表面上是跨越了“硬平台”,实际“软平台”的限制仍是无法跨越的;或若厂家未生产某一“硬平台”的“软平台”那这个“硬平台”你还上跨不上去的。真正的跨平台技术是互联上的“htm/xml”,这是目前任何厂家无法据为己有而又不得不遵守的标准。
二、关于指针问题。
C#/Java 借鉴了C++,但去掉了C++的双刃剑——指针(当然不是完全去掉,在某种形式下还是可以用的,或者在使用时受到了比较大的限制)。于是关于C#/Java、C++的优劣问题往往围绕着指针展开,“用C#/Java,还是用C++”对于许多C/C++程序员来说,就象哈姆雷特的“是生存,还是死亡”让人踌躇徘徊。其实指针的使用与否,其本质就是内存的分配、访问与释放权由谁掌握的问题。
使用指针,由程序员根据需要分配、访问内存,程序运行时动作明确直接没有额外的处理步骤,程序的执行效率就高,但若程序员忘了释放内存或释放内存的策略不够周全,就会产生不可预知的问题,而且这种问题往往是比较严重。
不使用指针,并不意味着内存的分配、访问与释放不须处理,只不过是这些工作由编译器生成的通用“内存管理器”完成了,因此程序执行时,必须增加额外的内存管理动作,所以执行效率相对上种方式而言有所下降。由于“内存管理器”的运作是基于业内专业人士制定的比较完善内存管理机制,因而安全程度较高。但实际上,由于内存的分配、访问、使用、释放的情况比较复杂,这种安全性并不是100%的。也就是说安全的保证是由“另外的人”负责的,这种情况下,一旦出现问题,你无法查清问题所在,或即使你查清问题所在,也无法纠正。
好了,关于指针,一边是100%的效率、60%的安全性、100%的自由,一边是60%的效率、99%的安全性、100%枷锁,你选择吧。我想对于“高手”而言,自信也罢、固执也罢,选择指针是他们骨子里自由与冒险精神的决定。
“是生,是死——这是一个值得考虑的问题。”——但不要丧失了行动的能力。
这点我未深入研空,只谈谈我的感觉,我感觉Java/C#的跨平台实际上是个比较巧妙的骗局。因为它们的跨平台性还是要某个厂家或厂家联盟的支持,这种平台不过是通过在不同的“硬平台”基础之上设置一个接口统一的“软平台”,这梓表面上是跨越了“硬平台”,实际“软平台”的限制仍是无法跨越的;或若厂家未生产某一“硬平台”的“软平台”那这个“硬平台”你还上跨不上去的。真正的跨平台技术是互联上的“htm/xml”,这是目前任何厂家无法据为己有而又不得不遵守的标准。
二、关于指针问题。
C#/Java 借鉴了C++,但去掉了C++的双刃剑——指针(当然不是完全去掉,在某种形式下还是可以用的,或者在使用时受到了比较大的限制)。于是关于C#/Java、C++的优劣问题往往围绕着指针展开,“用C#/Java,还是用C++”对于许多C/C++程序员来说,就象哈姆雷特的“是生存,还是死亡”让人踌躇徘徊。其实指针的使用与否,其本质就是内存的分配、访问与释放权由谁掌握的问题。
使用指针,由程序员根据需要分配、访问内存,程序运行时动作明确直接没有额外的处理步骤,程序的执行效率就高,但若程序员忘了释放内存或释放内存的策略不够周全,就会产生不可预知的问题,而且这种问题往往是比较严重。
不使用指针,并不意味着内存的分配、访问与释放不须处理,只不过是这些工作由编译器生成的通用“内存管理器”完成了,因此程序执行时,必须增加额外的内存管理动作,所以执行效率相对上种方式而言有所下降。由于“内存管理器”的运作是基于业内专业人士制定的比较完善内存管理机制,因而安全程度较高。但实际上,由于内存的分配、访问、使用、释放的情况比较复杂,这种安全性并不是100%的。也就是说安全的保证是由“另外的人”负责的,这种情况下,一旦出现问题,你无法查清问题所在,或即使你查清问题所在,也无法纠正。
好了,关于指针,一边是100%的效率、60%的安全性、100%的自由,一边是60%的效率、99%的安全性、100%枷锁,你选择吧。我想对于“高手”而言,自信也罢、固执也罢,选择指针是他们骨子里自由与冒险精神的决定。
“是生,是死——这是一个值得考虑的问题。”——但不要丧失了行动的能力。
相关文章推荐
- Java,C#,C++在继承,覆盖和多态,抽象类等几个方面的比较归纳
- c++/java/c# 几种编程语言的指针、引用比较
- C++ Java C#的比较-命名空间
- Java,C#,C++在继承,覆盖和多态,抽象类等几个方面的比较归纳
- 比较C#与C++、Java的异同
- C++、Java和C#的特性比较
- JAVA C# C/C++之比较学:初始化顺序
- Java,C#,C++在继承,覆盖和多态,抽象类等几个方面的比较归纳
- 六种流行的语言---C、C++、python、Java、php、C#比较[转]
- Java_C++_C# 移位运算符比较
- C# 与 C 、 C++ 、 D 、 Java 的性能比较(二)
- C#与C++、Java之比较概览
- c++/java/c# 几种编程语言的指针、引用比较
- C++、java、C#命名空间比较
- C#和java,C#和C++各有什么不同(2) -- 语言规范的比较
- Java,C#,C++在继承,覆盖和多态,抽象类等几个方面的比较归纳
- C# 与 C 、 C++ 、 D 、 Java 的性能比较(三)
- 六种流行的语言---C、C++、python、Java、php、C#比较[转]
- C#、Java、C、C++初始化数组过程和比较
- C++、C#、Java、JavaScript之间的性能比较