有个把程序员跟我说:“程序员用什么编程语言不重要,重要的是实现!”,这句话我并非不认可,但是,当您了解了他们在什么场景下说的这句话的时候,您再考虑他们说得对不对!

打开网易新闻 查看更多图片

他们跟我说这话的原因是我发表了一篇关于上位机程序开发,编程技术应该如何选型的文章。我在文章中指出,如果程序员想要做上位机开发,那么在技术选型的时候最好选择C++或者C#。

不同编程语言的优势

之所以建议选择这两门编程语言,不是我张口就来的结果,而是现在不管是企业招聘上位机开发程序员还是下位机的对接方案中,对于这两门编程语言的支持是最全的,基本上不需要重新造轮子。

如果说硬件对编程语言的支持度,特别是对工业硬件的支持度,如果对C++和C# 的支持度是99%的话,那么对其他编程语言的支持度估计也就在60%左右,意味着其他编程语言需要花费大量时间去造轮子。

比如说,国内机器视觉方案中,海康相机官方SDK对于编程语言的支持中,目前我看到的就只支持了C和C#!也许也支持了其他编程语言,但是绝对不会将所有编程语言都支持上!

不代表其他编程语言不能做,但如果没有现成的轮子那就只能现做了!其实,选择不同的编程语言,就是因为各种编程语言都有其独特的行业优势。

像C++就更加适合一些对于性能要求比较高的开发需求,比如说游戏、工业快检等等。C#或者说.Net更加注重开发速度,以及各种杂七杂八的行业的支持度。而Java则更加适合互联网开发等等。

其中,最典型的例子就是Python,要知道,Python可是一门脚本语言,它之所以能火,不是这门编程语言有多么优秀,而是它背后有一大帮人编写了一堆现成的库,所以才会有很多人去用,Python的火,我承认它有它自身的优势在里面,但我认为运气也占了很大一部分原因,至少我是这么认为的!

如果只看Python本身的话,像Node.js、Lua甚至是JavaScript都能和它同台打一打,Python不一定就比它们优秀到哪儿去!

这些编程语言其实学会了,用惯了,切换起来并不难,就像武侠小说里面形容的那样,一个剑客的剑术到了一定火候,手中无剑胜有剑!

优势并不是来自编程语言本身

编程语言本身从技术角度来说,没有什么优势不优势这一说法,所谓的优势,其实是使用者赋予的。真正的编程高手,哪怕键盘里就0和1两个按键,他也能编程,不熟悉编程的人,哪怕您给他一个最简单的需求,他也实现不了。

就像前面说的C++和C#,我之所以推荐想从事上位机开发的程序员去使用这两门编程语言,就是因为他们有两个优势,第一个就是硬件支持度高,第二个就是大部分企业上位机开发解决方案都用这两门编程语言。

而Java适合互联网的原因,众所周知,就是国内很多互联网公司使用的技术栈都是Java。

你非要让程序员说C++、C#、Java这三门编程语言哪个语言本身有什么优势,我估计很少有程序员能答出来,毕竟,这三门编程语言互相能干的事情都能干,而且,只要程序员足够熟练,都能干得很好。

但干得好,能不能找到工作那就是另一回事了!

比如,C#在Unity3D出来之前,几乎在游戏行业里是看不见C#程序员的,当年一统游戏行业江山的是C!而C之所以能够在游戏行业站稳脚跟,一是它诞生的时间早,二是很多游戏引擎都是用C写的!

您如果因此非要说C比较优秀,是不是比较牵强呢?就像汽车没发明出来之前,大家认为自行车是最好的交通工具,火车发明以后,大家认为火车是最好的交通工具等等等等!

但是,其实现在有着各种对应不同需求的交通方案,是针对需求而生的,但是,您如果非要说,这背后不就是从A地点到达B地点的实现方案嘛,本质其实都一样,这么说,是不是有点傻呢?

其实,我也理解很多程序员为什么要说编程语言都一样这样的话,他们是从技术角度看待这个问题的,想法都比较简单。

但是,如果单纯从技术角度考虑问题的话,或许作为程序员就把自己的路子给弄窄了!

比如说现在很多人都在学Java,于是大家都去学Java,最后导致的结果就是Java的门槛变高,很多学Java的同学找不到工作。

如果您说技术都是一样的,那么这帮找不到工作的程序员又应该怎么解释?同样编程年限的程序员,C++程序员的薪资通常要比Java和C#程序员的薪资高,这您又怎么解释?

结语

所以,单纯得从编程角度,的确使用哪门编程语言都一样,但是,只考虑技术,不考虑生态,从个人角度,相当于把自己限制在了技术圈子里,从公司角度,恐怕很难招到合适的人才。

有很多程序员没有想通这一点,对于别人的意见充耳不闻,唯技术是从!