上个世纪,数百种编程语言被创造出来,但是进入21世纪,当我们都进入互联网时代时,只剩那么寥寥几个了。
若是你翻一下TIOBE得编程语言排行榜,就会发现20年来,上蹿下跳的就是那几张老面目面貌:C , Java, Python ,C++ , C#, JavaScript......

80年代后期,均匀每个月就会呈现一种新语言,如今,均匀每年呈现一个就不错了。
我有点猎奇,就去扒了扒其他编程语言的呈现时间,把他们分红了分为中生代、重生代和 老年代。
先看中生代的家伙们,20多岁,30出头,恰是编程的中坚力量。
Python : 1991
Visual Basic : 1991
PHP : 1995
Ruby : 1995
Java : 1995
JavaScript : 1995
C# : 2000
(1995年还实是奇异的一年啊,几位大佬同时降生。)
再看那些老前辈,尤其是C语言,老而弥坚,屹立50年不倒,把系统级编程吃得死死的。
Lisp : 1958
Pascal : 1970
C : 1972
Objective-C : 1984
C++ :1985
Object Pascal : 1986
重生代则活力无限, 崭露头角,对老家伙们虎视眈眈。
Go : 2009
Rust : 2010
Kotlin : 2011
Elixir : 2011
Julia : 2012
TyPEScript : 2012
Swift : 2014
重生代只是它们想挑战中生代的地位,抢班夺权,希望渺茫。
次要有那么几个原因:
1. 编程范型没有变革
仍是老三样:面向过程,面向对象, 函数式。
在冯诺依曼架构下,恐怕也不会呈现什么新的范型了吧。
如今TIOBE排行前十的中生代语言完美涵盖了那些范型,例如Java,刚降生的时候撑持面向对象,但是后来补上了函数式那一课。
像Python、JavaScript一起头就撑持面向对象和函数式编程。
2. 开发范畴
开发范畴有桌面开发、Web开发、系统级软件开发、后端开发,数据阐发,人工智能等。
中生代的编程语言不单那些范畴看得死死的,还互相扩展,侵入对方的领地。
此中最典型的就是JavaScript那个屌丝的逆袭,一起头不外是寄居在阅读器中的一个小语言,后来通过V8, Node.js竟然进入了后端,还用Electron蚕食桌面开发!
Python也是,原来用它写点儿小东西,开发点儿小网站,后来竟然傍上了人工智能那个大款,从此兴旺了。
3. 生态系统
Java , Python, JavaScript,C , C#等颠末那么些年的开展,哪个不是积累了海量的类库,哪一个没有庞大的生态系统?想动它们,没有一场革命是绝对不可的。
新语言即便很好,但是看看那么多现有的代码,谁敢随便切换?
4. 时代的盈利
Java碰到了互联网,Python碰到了大数据和AI, JavaScript碰到了前端开发, 时代的机遇让它们爆炸式开展。
Go的命运不错,碰到了云计算,强势兴起。其他几位想要出头,那是相当难了。
我曾经灰心地认为:支流的编程语言已经都被创造出来了!
以后新呈现的语言都是改良,改进,没法闹革命翻身了。
举个不得当的比方, C, Java, Python, JavaScript,C# , C++, PHP 就像如今的西方七国集团,牢牢占据着更大的市场,然后只要有新人冒出来,就会遭到无情的冲击。就像如今中国想手艺打破,被美国和西方不择手段地打压一样。
但是也其实不绝对,就像中国必然要向上打破一样,我看到在系统编程范畴,也有一个新星冉冉升起:Rust。

Rust固然没有创造新工具,但是却交融了多种语言的特征和多种编程泛型,它不单包罗了上面说的三大编程范式,还集结了泛型、底层内存办理、所有权等特征,能够说是一个集大成者(那也恰好是它进修曲线峻峭的原因)。
Rust是一门同时逃求平安、并发和性能的现代系统级编程语言,有望挑战C语言的地位。
当然,编程语言少,对法式员来说是功德,法式员能够少学一点工具,少掉几根头发。
最初再聊聊人工智能时代的编程问题,我在《天才法式员》中看到一个有趣的比方,说通俗的编程就像安分守纪的机械安装,机器会一板一眼地去施行,法式员在逻辑的宫殿中穿行,沿着思维中的道路行走,一切都有章可循。
但是训练神经收集就完全差别,法式员和法式之间更像园丁与田园的关系。

豆角为什么突然不长了?西红柿为什么欠好吃?园丁可能会换换土壤,可能会调整一下做物之间的间隔,也有可能把豆角转移到阳光充沛的处所,或者少用些肥料?胜利了!它们又起头茁壮生长了!
园艺技能的出息有赖于数之不尽的尝试和来之不容易的经历。良多新手园丁栽种的第一批做物要么长欠好,要么就死了。但最末,颠末不竭试错(和借鉴同业的经历),园丁们会积累更多常识,构成难以言传的曲觉,好比什么有效,什么无效。此时,若是你带他们去新的田园,即使那里的土壤和光照前提完全差别,他们也能够很快弄清晰哪些做物更合适在此处栽种。
看到了吧,固然编程技能必不成少,但是重点酿成了搜集数据,不竭训练,不竭调整,然后“祷告”法式奏效。
不晓得那是法式员的幸运呢,仍是不幸?
发表评论