Swift 之父 Chris Lattner 访谈录(超长完整版)

Chris Lattner 访谈录  翻译作者:@故胤道长,亚马逊 iOS 工程师,曾就职于 Uber




本文是《 iOS 成长之路》22 篇精品文章中的两篇,分享出来给未订阅专栏的 iOS 开发者以及一些其他技术同学,相信无论对于大家技术学习和职业发展都会有莫大帮助。


想要查看《 iOS 成长之路》剩余文章,欢迎扫描二维码关注订阅:

话题

  • Chris Lattner 是谁?

  • Xcode 的编译器 LLVM 背后有怎样的故事?

  • Swift 诞生的前世今生,封闭的苹果为何要拥抱开源?

  • 说好的 ABI 稳定性何时能推出?

Chris Lattner 是谁

教育背景

  • 伊利诺伊大学 PHD

工作经历

  • 2005年 - 2017年供职苹果,前开发部高级总监,架构师

  • 2017年开始,担任特斯拉副总裁,负责自动驾驶

主要成就

  • Swift 之父,主要作者

  • LLVM 之父,主要作者

  • Clang 主要贡献者

荣誉

  • 2016年被评为“创造未来的25位当世天才”

  • 2013年获得 ACM 系统设计大奖

访谈实录

自我介绍

1. 你怎么看待自己?

我是个程序员。我喜欢写代码。我编程有很长时间了。

我在读博的时候就开始写 LLVM 了。当时 LLVM 是我的博士研究项目,我想把它做成工业界中颠覆性的产品。当时我异想天开,尝试了各种架构设计,想解决以往编译器所有的弊端 -- 结果当然没有如愿。我毕业后,就希望能接着搞 LLVM ,当时只有苹果允许我入职之后继续设计并实现 LLVM 。我想都没想就加入了苹果。

LLVM

2. 说说 LLVM(Low Level Virtual Machine)到底是什么吧

  • 先说编译器:编译器是把程序员的代码翻译成机器可以理解的语言的工具;

  • 再谈LLVM:一个模块化和可重用的编译器和工具链技术的集合,Clang 是 LLVM 的子项目,是 C,C++ 和 Objective-C 编译器,因为多模块的复用,所以提供了惊人的快速编译,比 GCC 快3倍。

3. LLVM 是一开始就作为一个完整的编译工具来使用的吗?还是有什么其他故事

LLVM 当时是为了解决一个小问题而开发的:当使用OpenGL 函数库的时候(Mac OS 10.4 和 10.5环境下),比如你要调用这个函数,glVertex3f(),编译器必须将其转化为特定的GPU可以理解的数据。但是这带来一个问题:市面上有海量的GPU,每个GPU的性能和参数也不尽相同,所要求的数据格式也不同。这时 LLVM 可以产生很小的一部分代码去解决这个问题,这是 LLVM 诞生的初衷。

4. LLVM 的 bytecode 和 Apple 现在的 bitcode 有什么不同?

这是历史遗留问题。一开始 LLVM 是开源的,所有代码在转成二进制时就叫做 bytecode -- 因为 java 当年就是这么叫的。当时这一部分有很多问题:比如不能扩展,无法兼容,非常脆弱。

然后就到了 LLVM 2.0,当时我重新设计了架构,采用的就是 Bitcode 机制。LLVM 2.0 将所有代码以比特流(bit stream)而不是字节流(byte stream)的形式来编码。这就是 bitcode 这一术语的由来。

主要的工作流程就是现将代码转成比特流,然后相应处理。处理完后再将编码传到其他地方去。

5. Bitcode 这个机制比直接传输二进制有什么好处

好处那是多了去了。首先 编译器工作起来会越来越好。因为通过Bitcode机制,它可以通过编译不同代码来存储各种优化方法,这样下次碰到类似代码,它就会自动启动相关优化机制,使得效率提升。还有个好处是 LLVM 可以让芯片的兼容性变得很好。因为 Apple 每年都在芯片上推陈出新,它们转化为二进制的规则都不尽相同,LLVM 只要每次重新编码并传输成比特流就好了。

当然 Bitcode 也不是万能的。比如它不能解决 32位的 APP 在64位机器上的兼容问题。这个问题其实应该依靠代码逻辑。

谈管理

6. 在职业生涯中,你在 LLVM 上鞠躬尽瘁,但我们发现这几年你更多的工作是在管理上,你自己怎么看这种转变的?

我虽然做管理了,但是我依然喜欢写代码,而且我每天都写,因为我就是个极客嘛。而且,其实我很早就开始做管理的工作了。不过我一直是作为技术领导人的角色带 2 到 3 个人的,我只是在写代码方面把把关,给他们提提建议这样。

后来带的人多了,队伍也大了。我不仅管程序员,还管小组经理和其他技术领导人。虽然我一直喜欢写代码,但是管理对我来说是一个必须要去做的事。现在回过头来,我觉得干得还不错。跟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值