008 编程语言之争
小眼镜做测试工作渐渐上手了,慢慢地有了自信。在大学时学的课程太水,老师自己都讲不清楚。他想把编程水平提高提高,继续往做程序员的方向努力。
吃饭时他请教许昊,许昊说,“学java,现在绝对主流,容易上手,工作好找,最关键的是薪资还高!”
“java太low,真正的程序员都用c++,”黎想一脸不屑,毫不客气地杠上了。
“java是彻底地面向对象!”
“c++性能高十倍!”
“java 库多,平台强,编程快!垃圾回收不用管!”
“c++什么都能干,精准控制,一切尽在掌握中!”
“那你说,c++哪个行业还在用?”
“多了,各行各业!游戏行业非她莫属。”
“各行各业都在用java吧!游戏都开始用java了!互联网行业尤其java主流!”
“屁,java是码农语言。java能做图像?java能做底层通讯?java能做操作系统?工具软件?互联网行业的大牛还是用c++做关键优化的!”
小眼镜不知所措,没想到请教个问题居然能让他俩差点打起来。
他求助地看着老五,眼睛都快要说话了。老五是公司里公认的高手,做底层驱动的。老五给他看的吃不下饭,叹了口气,只好出来打个圆场。
“我看,在咱们公司,c语言应该还有一席之地吧。”
争吵中的两人不由得一愣,是啊,怎么忘了这茬了呢,在智研实验室,项目全都是嵌入式、底层软件、网络、安全之类的,c语言有绝对地位。
他俩抬头看了看远处的几个主管,这可是自己当初来这家公司的动机之一。别的公司少有这些底层软件程序员扎堆的。
他俩互相看了看,心照不宣。"是哦是哦,c语言是祖师爷,几十年来老当益壮历久弥新,江湖地位不必说了。"
老汪吃完了,过来拿一杯咖啡。经过他们时也听到了,许昊给他腾个地,他一屁股坐下了。
“不要忽视动态语言的发展,”老汪说,“Ruby on Ralis,现在如日中天哪。”“虽说java在企业级应用市场上依然牢牢地占据领导性地位,但是动态语言在强调敏捷开发快速重构的互联网企业中,开发效率显著提升,越来越流行。”
老石走过,被老汪叫住了,请他给大家点评点评。有点马屁的意思。
“我个人看法啊,编程语言只是一个媒介,用以把人类的逻辑思维表达给计算机看。”
“处理器自身的执行逻辑并不复杂,无非就是数值计算、分支、存取等。我不是说处理器很容易设计啊,这几十年来处理器的技术进步主要体现在性能的提高上。尤其是RISC指令集,就是认为,指令简单不要紧,只要能够让处理器运行地足够快就是好的。”
“这说明了什么呢?处理器指令本身并不神奇,但是处理器以极其高速地运行大量的时序逻辑指令,所展现出来的能力才是可怕的。”
“经常有人要比拼编程语言性能。很简单的问题啊,汇编语言是性能最高的。他是机器语言的直接表达,等同于机器码。”
“你们知道的,第一代程序员就是负责给纸张打孔的姑娘们。”
“为什么发明编程语言?汇编语言显然可以让科学家把逻辑思维用文字的形式表达出来,而不是用锥子打孔或者写一串二进制数字来表达。”
大家都笑了。老石继续唠叨。
“计算机的能力很差的时候,程序规模也大不到哪儿去。比如DOS操作系统,就是用宏汇编写的。”
“计算机性能越来越高了,人们期望让计算机做的事也越来越复杂了,怎么办?汇编程序员不够用的了,学习汇编语言太难了,程序员的人脑逻辑与计算机的机器逻辑的距离有十万八千里,开发效率太低了。”
“因此有了高级语言,从那时候起,就有了编程语言之争。”“用c语言开发操作系统时,就有人抨击:汇编才是最好的,性能最高,控制最全面!”
“怎么样,似曾相识吧?历史就是这样在重复,同样的事情后来又发生了。c比c++性能高,c++比java性能高,java比Ruby性能高......”
“每一次新的编程语言出现,都会被守旧的人批评,而被新生力量热捧。“
”c语言程序员不必精通处理器架构,跨平台,开发效率高。”
“c++一出来,号称是面向对象的集大成者,一时间国内有几年程序员言必称c++、面向对象。不会几个c++的生僻语法连面试都过不了。”
“java在网站开发领域得到施展的机会后,成了面向对象最彻底的语言,程序员再也不用烦心指针与内存管理了,号称喝杯咖啡的同时就把开发给做了。”
“不过,java程序员今天要面临动态语言的拷问了。闹革命起家的人最怕被革命。”
“其实啊,哪有那么多的纠结呢?想想看编程语言的本质是什么?我前面说的,不就是把程序员的思维表达给计算机去执行嘛。”
“每个编程语言的出现与流行都是有其历史原因的。从市场经济来看,计算机的性能提高的太快。而合格程序员的数量却太少。因此编程语言的性能在有的领域是可以被牺牲的,而去选择开发效率更高的语言。”
“这就是历史趋势,北大青鸟大量培养码农,是市场的选择。”
“那以后的发展趋势是什么呢?”许昊感觉自己得到了些许鼓励,问道。
“那我也不知道咯。我预测一下啊。”老汪说。
“一种趋势是,有些行业不再需要程序员了。比如说游戏行业,游戏策划、美工使用语音、动作与游戏制作软件交互的方式来生产游戏。性能不是问题了,游戏引擎库中有足够的模块可供选择。游戏的生产更关注游戏内容,而不需要关注图形学、网络通讯、高并发、可运营。”
“企业应用领域,互联网领域,现在程序员就业最多。也许有一天,他们都要转型去做产品经理,做业务需求分析专家,做技术支持与维护。因为这些领域,随着动态语言更容易,框架更多,总有一天会出现自动生产软件的软件。不需要程序员,只要产品经理或者架构设计师根据业务类型,选择适合的框架,定义出业务流程,做做配置,就自动生成业务逻辑了。”
“这些行业也就不再需要编程语言了,或者可以理解为,这些行业的编程语言就是自动生产软件的软件的配置脚本。”
“也许有一天,人工智能发展到一定程度,机器人能被普通人所训练与自我学习。”“也就是说,不需要程序员为洗碗机、洗衣机、电饭煲、电视机而编程了。机器人将根据主人的特殊需求,它帮你编程。只要电饭煲具备做饭的能力,并且可被随时编程即可。”
“也许,人工智能的发展能更进一步,机器人来当程序员。它与人类的交互很快就不是问题了。而且它相比人类更加了解机器语言。”
众人目瞪口呆,没想到老石直接宣判了:未来程序员这个职业可能要萎缩,不需要大量程序员做具体编程实现了。只需要少数人做类似现在的系统程序员的工作,业务逻辑交给产品经理配置配置写点简单脚本就行了。想想还是挺美的,只是,这个未来是多少年呢?是自己的儿子还是孙子的时代?他将来会失业吗?
晚上小眼镜回到宿舍,在写当天的电子版日记时,不禁又一次犯了难。他们说了半天,最后自己还是听的云里雾里。想想公司里还是用c语言多,自己还是先学好c语言再说吧。