在 IT 领域,技术一直在飞速的进步,而每次进步,都会带来新的业态和新的发展机遇。
退回到 10 年前,移动互联网刚兴起不久,谁也没想到它会催生现在这么多的业态。而云计算还在酝酿期,腾讯和百度的创始人都觉得它走不远,现在竟然这么普及。
退回到 20 年前,互联网刚兴起,上网都要拨号。互联网的几个巨头,像阿里巴巴、百度、腾讯、新浪,还有网易,都是在那个时代展露头角的。毫不夸张地说,如果你在那个时代搞技术,懂 Web 编程的话,那绝对是人人争抢的“香饽饽”,毕竟那时,Web 编程是前沿技术,懂这个领域的人,凤毛麟角。
退回到 30 年前,微软等公司才刚开始展露头角,雷军、求伯君等老一代程序员也正在发力,WPS 的第一个版本运行在 DOS 操作系统上。我还记得,95 年的时候,我在大学的阶梯教室里,看了比尔盖茨曾发表的,关于未来技术方向的演讲。当时,他预测了未来的科技成果,比如移动智能设备,听上去像天方夜谭,但现在移动互联网、人工智能和 5G 的发展,早已超出了他当时的想象。
那么你有理由相信,未来 10 年、20 年、30 年,会发生同样天翻地覆的变化。这种变化所造成的的影响,你我哪怕大开“脑洞”都无法预料。而你在这种趋势下,所能做的就是,把握当下,并为未来的职业生涯做好准备。这是一件认真且严肃的事情,值得你用心对待。
当然,洞悉未来很难,但你可以根据当前了解到的信息,捕捉一些发展趋势,看看这些发展趋势,让编译技术的发展方向有了哪些不同,跟你又有什么关系。
本节想与你分享 3 个方面的技术发展趋势,以及它们对编译技术的影响:
人工智能,以及如何让编程和编译技术变得更智能?
云计算,以及是否需要云原生的语言?
前端技术,以及能否出现统一各个平台的大前端技术?
期望这些内容,能让你看到一些不同的思考视角,获得一些新的信息。
趋势 1:让编程更智能
人工智能是当前发展最迅速的技术之一了。这几年,它的发展速度超过了人们的预期。那么你知道,它对编译技术和计算机语言的影响是什么吗?
首先,它需要编译器能够支撑,机器学习对庞大计算力的需求,同时兼容越来越多新的硬件架构。
由于机器学习的过程需要大量的计算,仅仅采用 CPU 效率很低,所以 GPU 和 TPU 等新的硬件架构得到了迅速的发展。对于编译技术来说,首要的任务,是要充分发挥这些新硬件的能力;因为 AI 的算法要能跑在各种后端架构上,包括 CPU、GPU 和 TPU,也包括仍然要采用 SIMD 等技术,所以后端技术就会变得比较复杂。同时,前端也有不同的技术框架,比如谷歌的 TensorFlow、Facebooke 的 PyTorch 等。那么编译器怎样更好地支持多种前端和多种后端呢?
根据在24 讲学到的知识,你应该会想到要借助中间代码。所以,MLIR 应运而生。这里要注意,ML 是 Multi-Level(多层次)的意思,而不是 Machine Learning 的缩写。我还想告诉你,MLIR 的作者,也是 LLVM 的核心作者、Swift 语言的发明人,Chris Lattner(他目前在谷歌 TensorFlow 项目中)。而当你看到 MLIR 的格式,也许会觉得跟 LLVM 的 IR 很像,那么你其实可以用更短的学习周期来掌握这个 IR。
其次<