前言
全世界的编程语言有 600 多种,TIOBE 统计的有 100 种,参与排名的有 50 种。前 20 种是常用的,它们目前正在流行,或者曾经非常流行。TIOBE 是全球最著名的编程语言排行榜,它根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎、Wikipedia、Amazon、YouTube 等统计出排名数据。
TIOBE 只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,或者一门语言所编写的代码数量多少。TIOBE 排行榜每月更新一次,你可以转到 https://www.tiobe.com/tiobe-index/ 查看编程语言的最新排名。
要想选择编程语言,首先得确定开发方向,比如网站开发、APP 开发、机器学习、大数据、嵌入式、GUI 软件、算法设计等。编程语言不是万能的,一门编程语言只能胜任一个或者几个开发方向,一个开发方向往往也有多种编程语言可以选择。
我们首先谈一下开发方向的选择,然后再说编程语言的选择。
1. 选择开发方向
选择大于努力,只有切入一个适合自己的开发方向,才能持续进步。关于开发方向,我有以下两个选择标准。
1) 兴趣
学习编程是一个非常枯燥的过程,内容多,时间长,成本高,就算参加全职培训班,至少也得学习半年才能入门,做出一点小玩意来。要想成为别人眼中的大神,或者编程专家,没有三五年的功夫肯定是不行的。
学习编程的过程是比较艰苦的,没有兴趣很难硬扛下来,即使报名了培训班也学不会,所以,我们首先要选择自己感兴趣的一个开发方向,这样不但能快速学习,以后还能持续进步。
比如我就对网站感兴趣,高中阶段我就想开发一个属于自己的网站,感觉非常炫酷,所以大学我毫不犹豫地选择了网站开发这个方向。我在选择开发方向的时候没有任何纠结,我知道自己必须选择网站开发。
我的大学专业是电子信息工程,跟软件开发几乎没有关系,所以网站开发完全是我自学的,我也是凭借兴趣坚持下来的,一直到现在我还在运营技术社区,把兴趣变成了职业。
兴趣是最好的老师,没有之一。遗憾的是,对某个事物有强烈兴趣的人很少,大部分人都是被动选择。
此处我说的兴趣,是指别人无法撼动的热爱,是工作之余让你放松的事情。如果你只是有过某种想法,别人告诉你这个想法不靠谱,你就放弃了,这顶多是一时的鸡血。
2) 未来发展
如果你学习编程不是因为兴趣,只是想选择一份职业,那我希望你切入一个有发展潜力的开发方向。
每个产业的发展规律都是类似的,都要经历以下几个周期:
拓荒期 -> 发展期 -> 成熟期 -> 衰落期
我希望你在发展期切入一个产业,然后持续努力和积累,让产业的发展带着你起飞。站在风口上,猪都能飞起来。
你应该听说过很多没啥背景的人,突然之间一夜暴富了,惹得别人羡慕嫉妒恨吧,这些人,大都是在一个爆发式增长的行业里面翻了身,比如十年前的包工头、持续火热的程序员。
注意,最好不要在拓荒期切入一个产业,你很有可能坚持不到曙光到来之时就已经转行或者年老色衰了,成为了别人谈笑中的烈士。
对于软件开发产业来说,GUI 桌面软件已经是过去式了,APP 和网站也已经进入成熟期,我推荐机器学习(人工智能)和大数据两个方向,它们都是国家重点扶植的细分产业,而且写入了十四五规划,未来至少还有十年的发展时间。
机器学习需要大数据提供原料,反过来,大数据分析也依赖机器学习模型,它们是相辅相成的,很难隔离开。
以上是我基于 10 年的编程经验和 7 年的创业过程给出的建议,如果你觉得不对,就当做耳旁风吧,毕竟我也才三十出头,阅历还不是很丰富,难免有偏颇。
另外,选择产业方向也是有风险的,也是一次命运赌博,谁也不能确定这个产业能不能发展起来,就算发展起来,又需要多少年呢?又有多大的产值呢?
比如人们一直谈论的人工智能已经发展了几十年了,到现在还是人工智障,底层理论并没有本质的突破。虽然国家把人工智能选为重点产业,注入了海量资金和人才,各家大公司也跟风进入,但是底层理论如果不突破,十年以后没准还是智障,只不过应用场景多了。谁也不能穿越到未来,谁也不能告诉你确定的答案。
就算一个国家,也会点错科技树,比如:
- 美国认为自己无人能敌,发展了朱姆沃尔特级驱逐舰,打算近岸攻击,想不到中国突然崛起,海军开始下饺子,美国不得不转为远洋作战,废掉朱姆沃尔特级。
- 日本押宝混动汽车和氢能汽车,积累了大量专利,但是中国却切换了赛道,倾力发展纯电动汽车,并且积累了一定的优势,日本想逆袭非常困难,汽车产业岌岌可危。
在产业发展过程中,会有很多不确定因素,我们只能尽力选择一个有前景的产业。
其实吧,很多暴发户也不懂得什么产业发展规律,他们只是阴差阳错地进入了某个产业,恰好赶上产业崛起而已。我自己当初也不懂互联网,只是对网站感兴趣,就进入了互联网产业,抓住了 PC 互联网的尾巴,所以才比其他行业的同学混得好点。
也就是说,我混得好点,不是因为我足够优秀,而是因为我进入了互联网产业,搭上了产业的便车,我只是比我的同学更加幸运而已。
2. 选择编程语言
确定了开发方向,接下来就可以选择编程语言了。有的开发方向比较纯粹,只有一两种编程语言,有的开发方向鱼龙混杂,有五六种编程语言,选择编程语言也是一个让人纠结的过程。


