最近社区关于语言的争论很多,有点看热闹,有的凑热闹。不管是C++,C以及C#与JAVA。好像不比个高低不罢手的态度。
第一语言是一门技术,而程序员是靠这个吃饭的
首先从程序员的角度,语言是一门技术,而程序员是靠这个吃饭的,不然公司也不会找你。(这里的程序员不包括分析、架构、设计等) ,所以首先会确定学习那门语言,然后在入门以后就会要求提高,最后要成为大师的话就要掌握精髓啦,做到掌中无剑,心中有剑的崇高境界,这是个人技术修行的过程。同时作为一门技术,在实践的过程中,就需要思考简单与简洁,开发效率,运行性能,团队开发等问题。
第二语言从层次上来讲只有两种-面向机器与面向用户(技术人员)
编程语言在发展过程中可谓百花齐放,从最初的汇编语言,C语言,C++,Java语言与C#等。就算现在,也是天天冒出一门新的语言。或者那天你心情好,自己创造发明一种语言也行。但是本质上来讲,编程语言是桥梁,在人与计算机是起到沟通交流的作用。我们程序员喜欢语言来与计算机交流,聊聊天。殊不知编程语言本身也有自己的爱好,有的语言是面向机器的,比如汇编语言以及C语言,那整个的一个在管理计算机的五脏六腑,管理着机器没有部件的运行时状态。而现代的语言为了是人能够更好里按人类自己的角度来思考,把这里底层的东西抽象了,更加地面向技术人员,或者说更加面向用户。JAVA与C#就是这样的语言。
第三不同语言处理的问题领域不同
每门语言都有自己的背景以及目标,因此在使用计算机编程语言处理不同的领域问题的时候,需要有选择性的去选择适合解决这个问题的编程语言或者选择解决方案。只有这样才能找到合适的。
那么C语言作为有一定的面向机器,又有一定的机器抽象,而且运行效率很高,比较适合超大规模的用户访问量,或者对性能有极端要求的,使用这个语言应该是没错的。
JAVA和C#虽然不是同根生,但是至少也是堂亲。 两者站在的角度都是从用户处理实际的问题角度出发,目的的提高开发效率以及维护效率,而对运行性能没有极端要求的软件。不过运行时性能可以以更多的机器设备来换取。
想想我们编一个普通的web应用程序可能会用ASP.net, RAILS,php等开完成,不会用C或C++来实现吧。因为编程语言是由具体的应用场景的。但是当后台服务器需要处理一个高并发,高性能的任务的时候,可能会使用C或者C++来实现这个任务。也即是编程语言也需要合作协调。
第四企业更注重平衡和谐
前面讲到一些面向用户的用户由于使用了太多的抽象,所以在运行时候的性能就成了瓶颈。而企业更注重的是保护现有的投资,改善开发效率,提高程序的可维护性以及软件性能的平衡,不能单单从一个角度来看一门语言的优劣。所以在实际的开发过程中也会针对具体的问题有不同的方案。
还有就是企业选择什么语言作为主流的开发语言的问题。这个问题同样没有统一的答案,应该是具体问题具体分析。Oracle公司的数据库不是也是用JAVA开发的,我想C#不是微软发明的,是开源的,并有开源组织来维护的,而且C#的诞生比JAVA早的话,ORACLE公司未必不会用C#来开发自己的数据库。也就是企业更关注的整体利益!
第五程序员怎么面对语言特性
不同的语言有不同的语言特性,就像现在的C#3.0,4.0特性一大堆。这些特性应该来讲都是为了解决具体的问题的方法。
因此既然都是解决问题的方法,都有存在的理由。但是我们应该更注重语言的本质特性,而不必为这些特性大加赞赏,或者使劲的贬低。也就是在面对语言特性的时候要客观,理智。要具体问题具体分析。