花时间还是化时间?
这个问题,我十年前在《计算机世界》上看过一篇类似的,不过那个作者更狠,直接就说,“其实编程语言就是扯淡……” 当时就给我震撼得不得了………不过这么多年过去,再回顾他的文章,已经没有了当年的震动,大概是因为被“教育”得不敢再轻易质疑和怀疑了吧(^~^)~ 不过,虽然他文中的观点有很多都是正确的,而且也是他经过深思熟虑写的,但我仍然觉得他是错的——至少是不全面的(他应该没有意识到现代函数式语言的存在)。
一个东西,如果只有正确的一面,而没有错误的一面,那就不是这个玩意儿了;同样,如果一个编程语言,只强调其中一面而忽视另一面,那也不是这个编程语言了。就像我们人一样,有阳刚的一面,也有阴柔的一面,才能成为一个完整的人。
C/C++是面向过程的,这没错。但是,C/C++也支持数据结构,并且提供了很多实现数据结构的框架(数组、指针、指针所指向的变量等等),因此也可以说是面向对象的吧(^~^)~ C/C++还提供了各种各样的内存管理策略,从自动的(默认)到完全的由程序员控制的(new的时候指定sizeof)都有,因此也能适应不同的开发风格(OOP或者OOA)。
Java是面向对象的,这也没错。但是他不能提供像C/C++那样详细的控制,也无法像C/C++那样深入到操作系统的层次去(通过系统调用实现功能)。所以,用Java开发的网络应用更容易维护,但换一块硬盘,重新部署,重新启动一下,所有的代码都要丢失,所有的工作都要重来一遍;而用C/C++实现的类似功能,只要配置文件不要丢失,硬件没有损坏,就能够继续工作。
因此说,语言是有边界的,在不同的边界内,各种设计的选择能够带来不同方向的特性。而选择最适合语言特性的那一个点,就是最优化。 所以,当您纠结于哪种语言更好时,不妨换个思路,看看哪种语言的某方面最符合您的需求,然后看能否在这个方向上进行一些调整,也许能够取得更好的效果~( ̄0 ̄)~