在上个世纪发明了数百种编程语言,但是到了21世纪,当我们都进入了互联网时代,只剩下寥寥无几。如果你翻翻TIOBE的编程语言排行榜,你会发现,在过去的20年里,那几张老面孔上蹿下跳:C、Java、Python、C++、C#、JavaScript……在20世纪80年代后期,平均每个月都会出现一种新语言,现在平均每年出现一种也不错。有点好奇,于是扒了其他编程语言的出现时间,分为Mesozoic、NewGeneration和OldGeneration。我们先看看中生代的小伙子,20多岁,30出头,他们是编程的中坚力量。Python:1991VisualBasic:1991PHP:1995Ruby:1995Java:1995JavaScript:1995C#:2000(1995真是神奇的一年,几个大佬同时诞生。)看看这些老前辈,尤其是C语言,又老又壮,直立50年,系统级编程吃死。Lisp:1958Pascal:1970C:1972Objective-C:1984C++:1985ObjectPascal:1986新生代元气满满,锋芒毕露,对老家伙虎视眈眈。Go:2009Rust:2010Kotlin:2011Elixir:2011Julia:2012TypeScript:2012Swift: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就像西方现在的G7,牢牢占据着最大的市场,只要有新人出现,就会遭到无情的攻击。打。就像中国想在技术上有所突破,却被美国和西方百般打压。但也不是绝对的,就像中国一定要向上突破一样,我看到在系统编程领域,也有一颗冉冉升起的新星:Rust。Rust虽然没有发明新东西,但是它融合了多种语言和多种编程泛型的特点。它不仅包括上述三种编程范式,还集成了泛型、底层内存管理和所有权等特性。据说是高手(这正是它学习曲线陡峭的原因)。Rust是一门同时追求安全性、并发性和性能的现代系统级编程语言,有望挑战C语言的地位。当然,编程语言少一点对程序员来说是件好事。程序员可以少学点,少掉几根头发。最后说一下人工智能时代的编程。在《天才程序员》看到一个有趣的比喻,说普通的编程就像一个遵守规则的机械装置。机器会一一执行,程序员走过逻辑的殿堂,顺着心中的路线走,万事有章可循。但是训练神经网络是完全不同的。程序员与程序的关系更像是园丁与田园的关系。为什么豆子突然不长了?为什么西红柿不好?也许园丁改变了土壤,也许调整了庄稼之间的距离,也许把豆子移到阳光充足的地方,或者使用更少的肥料?有效!他们又兴旺起来了!园艺技能的增长,靠的是无数次的实验和来之不易的经验。许多新手园丁种植的第一批作物要么长得不好要么死了。但最终,通过反复试验(并从同龄人的经验中学习),园丁们积累了更多的知识,并形成了关于什么有效什么无效的不言而喻的直觉。这时候,如果你带他们去一块新的田地,即使那里的土壤和光照条件完全不同,他们也能很快弄清楚那里更适合种植哪些农作物。看,虽然编程技能是必不可少的,但重点变成了收集数据、培训、调整和祈祷程序能正常工作。不知道这是程序员的幸运还是不幸?
