从JAVA向C++转变并不那么简单

来源:互联网 发布:淘宝经典乔丹 编辑:程序博客网 时间:2024/05/16 23:57

        有人说C++和JAVA很像,我并不这么认为。C++更像C一点而不是像JAVA,因为C++本质上是C的扩展,C的延续,C的升级,即便它吸取了面向对象的思想,但大多数还是沿用了C的思想,它的语法基本和C相同,语言风格和处理机制也大多与C相同。在很多时候,C和C++可以出现在一个程序里,他们可以共用一个编译器,甚至它们还可以相互调用对方的函数库。很多时候他们没有太多的区别。大多数人将C++和JAVA相提并论是因为他们都共有OOP的特征,但在OOP方面它们还是相差甚远的,JAVA的OOP技术非常的成熟,而C++在这方面只是初步的,它的重点并不在OOP上。C++不像JAVA,应该说它更像C,因为它实际上就是C的升级。
        有人说会JAVA的话C++上手会快一点,他们认为这两者都是面向对象的语言,所以得此结论。但我认为这是一个误导,这么说严格的讲确实是一个误导,从 JAVA转向C++是一个艰难的过程,因为这两者的语言特点和设计思想相差甚远。JAVA是非常成熟的面向对象的语言,C++是处于面向结构和面向对象之间的语言,它是初级的面向对象的语言。从时间上说C++比JAVA早(C++诞生于1983年,JAVA诞生于1995年),在那个时代决定了它在OOP 方面不可能被JAVA更完美。JAVA是后起之秀,它在面向对象的设计上吸取了C++及其它语言的很多优点,比C++做的更成熟更完善,目前来说JAVA 是比C++更高级的面向对象的语言。
        而我们从高级语言向低级语言(这里只是相对,C++也属于高级语言,只是相对JAVA要低级一些)转变绝对是一件艰难的过程,因为我们已经熟悉了JAVA 比较完善的OOP思想与技术的封装,开源的JAVA社区又给我们提供了丰富的基础包,我们对JAVA的简单易用产生了很大的依赖。向C++语言的转变,不仅很多东西需要自己动手,而且先入为主的思想会决定我们对C++的认识有偏见,这样很容易在开始就犯错误,走错路。也许我们会发现它很难用,很束缚。为什么它的内存需要人工操作?为什么非要使用指针这么底层的东西?为什么它的语法有那么多的特殊符号让人晕头转向!为什么没有接口?为什么struct和 class要同时存在?为什么头文件要这样写?为什么要使用宏?每次写程序需要考虑在不同的机器上编译真让人难以忍受!这些问题让我们在学习C++时感觉很不适应,当然它还是不重要的,重要的是我们在开发的时候如果用JAVA的编程思想去套用C++程序,这将是一个可怕的错误!
        我们用JAVA的思想写C++程序一定会曲解C++的意义,而且我们把JAVA思想强加于C++之上会阻碍我们从根本上去领悟C++原本的思想,这将是从 JAVA转向C++的一个致命的弱点。所以我建议在学习C++时可以与JAVA对比的学习,但在应用的时候一定要抛弃JAVA的思想,遵循“不熟悉的 ”C++的思想,不然我们被老的思想束缚就难以发挥到C++的优势。我们要遵循C++的设计规范与模式,每个语言都有它的时代使命,不同时代诞生的语言其设计思想是不一致的,OOP虽然好但不是什么地方用它都好,也不是必须就得用它,我们可以参考JAVA,但不必完全模仿JAVA,因为C++的思想也可以写出非常优秀的程序。有句成语叫“照猫画虎”,虽然照猫也能画出虎来,但画出来的虎恐怕是没有虎威了。
        我相信C++与JAVA同样优秀,但各有其长,各有其方。发挥其长,利用其方才是我们写程序的根本出发点,而不是硬搬。
        OOP是很好的工具,但它不是唯一优秀的工具,也不是永远都好的工具,至少我们现在就可以看得出来。当然,这是后话。
        另外,我认为,如果我们反过来,从C++转向JAVA会是很简单的!C++建立起了面向对象的概念,而JAVA屏弃了C++许多复杂难用的地方,它封装的很好,简单易用,更接近人的逻辑思维,C++相比要更接近机器的思维。JAVA比C++更流行,更有市场,这就是原因之一。但由于人为的操纵,C++在与机器交互的处理上比JAVA更灵活更迅速,这又是JAVA永远不可比拟的地方。
        我在市面上看到一些书籍,大多的书籍都是教如何从一个C程序员转换成C++程序员,或者如何从一个C++程序员转换成一个JAVA程序员,却很少发现一本从JAVA转向C++程序员的书籍。
        从JAVA转换成C++程序员是一个艰难的过程,我们需要做好充分的准备!有清醒的认识!在这样的前提下我们要脚踏实地,不畏艰难。

总结以上,我说了四件事:
1,    C++和C与JAVA相比,它更像C!
2,    从JAVA向C++转变是一个艰难的过程,大家要谨慎!
3,    不要用JAVA的思想去写C++程序,这将是一个严重的错误!
4,    OOP不是万能的和唯一的,不要被OOP过于迷惑!
来自:blog.csdn.net/acosoft



原创粉丝点击