程序员将面临再次洗牌,你作何选择?
程序员将面临再次洗牌,你作何选择?
记得那大概是2009年,Java因为在网络互联网开发和跨平台的优势,开始盛行。当时几乎铺天盖地都是对Java语言的褒奖和对C/C++的贬低,以至于微软都得整出C#来对抗它。虽然很多文章的观点很幼稚,分析方向也不对,甚至根本对Java特性都没搞懂。然而,对很多初涉编程的程序员来说,这些文章对他们还是产生了相当深远的影响,外加一些小企业转向的灵活性,引领了学习Java的一个高潮,这可以说是程序员在语言选择上的第一次洗牌。
再往后,乔布斯的出现,从感官和定义上改变了人们对手机的认识,智能手机开始在人们的生活中占据越来越主导的地位,基于MacOS的Object C 和基于安卓OS的Java开始大力发展,逐步击退C++,进入到编程语言排行榜的前三强。
我从开始至今,一直选择C/C++而没有更换过,其原因有四。首先:这是因为在第一次洗牌开始时我已经从事了将近五年的编程开发,对C/C++语言有了较为深入的研究,随着对其精髓的一步步窥探,我是越来越爱这门语言,其他语言的吸引力也就相对笑了很多,而且我也深信他会长时间在语言市场上占据一定的空间,所以我没有必要去更换语言;其次:随着编程经验的逐步增长,在每个项目中地位的不断提高,给予项目的关注也从点到面再到整体,对技术掌控能力也在逐步提高,要思考的问题和思考方式也已变换,已经超越了语言本身;再次:一个大的平台,并非用一种语言编写,我要做的是根据项目的不同需求和功能特点,从编程效率、运行消耗、性能考量,依据每种编程语言的优缺点,拍定用不同的语言来进行开发,以达到最佳开发效率和质量保证,很多时候,除了核心代码架构和构思外,也不需要自己亲力亲为的去写大量代码。因此也就更没有更换语言的想法。
而更多的程序员是:要么刚加入程序员大军一两年,要么正准备加入程序员行列,亦或编程仅仅是为了生计,没有太多的兴趣,那么这些程序员,在编程语言的选择上,就必然会经历一番折磨,当然,如果不想从事程序开发另当别论。
为什么说程序员将再次面临洗牌呢?首先要明白的是:每种编程语言的背后,归根结底是和支撑他的公司有很大关系。Object C之所以能火,那时因为苹果,C#是因为微软,Java是因为谷歌,数据库脚本语言是因为Oracle。所以这几个公司只要不会倒闭,那这些语言就不会消失。当然也有不完全依托一两家公司的。如C++虽然没有所具体依托的公司,但是他却是很多语言依托的基础。基于Linux的开发,特别是服务器开发,他还是具有当仁不让的优势的。C++虽然竞争不过火爆的Java、ObjectC 甚至C#,但因为有IBM、HP、华为、中兴等做服务器的公司的存在,也因为Linux系统在服务器方面德天独后的优势,C++的市场占有率在下降到一定程度后就会稳定。C语言依然会强势则,因为嵌入式上没有操作系统,驱动开发要相对接近底层的语言,没有操作系统的地方就是他的用武之地。不可能任何科技领域的东西都非要用操作系统,比如电饭锅、电瓶铛等而生产这些的厂商不在少数,因此它仍会强势存在。
既然和公司相关,公司会千方百计的发展自己,打击敌人,所以这些语言支撑背后的公司的兴衰,也就决定了语言的兴衰。
在理解了上面的这些分析后,再回到核心话题上。
首先:微软最近的动作频繁,Win10马上就要发布,该系统的强大在于,他的上线发布,将使Windows系统第一次真正的像苹果的MaxOS一样,在PC、平板、移动终端通吃。这意味着应用程序几乎可以直接在这三者上面运行。PC机一直是Windows独霸的场面,外加Windows系统是可以向任何公司授权,而苹果为了自我更大的盈利,将MacOS系统紧握在手,几乎不怎么对外开放。何况MacOS是给予Linux系统开发而来的,针对PC机来说,对用习惯了Windows系统的用户来说,相当不习惯苹果的MacOS。依据在PC上的优势,微软借助Win10的特点,在平板上的发力会越来越大。更何况苹果在移动领域本身就是定位为高端市场的,这就很难有扩大的可能,随着用户的饱和和后续产品的乏力及无特点,定会有一些人抛弃苹果,转投WinPhone的怀抱,毕竟他也是高大上。
其次:微软收购诺基亚手机业务,推出了Lumia手机,从此有了自己的手机业务,苹果相对于微软的优势几乎荡然无存了。诺基亚,就仅仅这个响当当的牌子,就是质量和性能的保证, 用这样的手机绝对不会被人鄙视为山寨。而Androd系统,虽然他的系统底层也是基于Linux,但因为要用Java进行开发,就会引入虚拟机,而为了好看的Ui,必然内存虚耗大,性能和内存消耗以及虚拟机这些原本是优点的东西,却同时成了其固有的缺点。一个安卓的2G内存的机子,在使用平顺性上几乎连WinPhone 512M的都不如,外加因为系统而引起的应用程序打开关闭后并非真正关闭,还在虚耗内存和流量。这些造就了安卓操作系统本身就不高大上,而目前市场上,几乎80%的智能手机又都是安卓的,用户越多负面影响就会越大,缺陷也会越发扩大。如果一直用安卓的手机,必然会烦,下次换手机,大多数会想换个操作系统来体验吧。苹果遥不可及的卖肾名声,让大家首先想到的肯定是WinPhone系统的手机。而对于其占有率已经到了极限的安卓,物极必反,接下来肯定会下降无疑,此消彼长,WinPhone的市场占有率就会越来越高。
再次:微软宣布VS2015不但会同时支持MacOS,Linux 和Windows三种系统下的软件开发,而且会支持安卓应用的开发,这在IDE市场,引起了渲染大波,有夸有骂以骂为主,想必这些人在骂的时候,已经明白开发语言此消彼长已不可避免了。特别是Java,其开发者的奶酪会被大踏步分割。原因是,除了微软发布VS2015外,安卓应用的饱和,外加谷歌安卓之父的出走,谷歌、三星、小米、华为等推出的由安卓演化来的新系统,都对其造成了不小的打击,让从事安卓应用开发的人无所适从。又有新闻说华为、中兴、三星甚至小米等都将推出WinPhone系统的手机,这样,安卓系统占有率下滑成为必然并且下滑应该还不小。
最后:仅仅2014年一年,给予WinPhone系统开发的程序员从20万变为了57万,应用软件从不足15万个到现在的近40万个。那如果Win10系统通用,程序员会更多,应用也会更多,体验WinPhone的用户也会随着应用的增加而增多。这必然造成更多的公司加入到WinPhone系统下App的开发,而这些公司在语言选择上,恐怕会优先考虑C#吧。个中原因,不肖多说。这对使用一种语言相对较长时间的人来说,不会造成太大影响,但对初学者或者刚刚开始编程语言不久的人来说,可能会更倾向于选择C#了。
综上所述,因为操作系统在移动终端的市场占有率的变化,程序员在编程语言的选择上,将再次面临洗牌,未来几年,格局应该会逐步演变为这样的:安卓系统市场占有率第一,但会比现在下降很多,WinPhone系统超越Iphone上升至第二,三强鼎立的局面将会形成。