转载

专访前C#编译器组首席工程师Eric Lippert

专访前C#编译器组首席工程师Eric Lippert

  Eric Lippert 是前微软 C# 编译器团队的首席开发师,从 1996 年起一直在微软开发部门任职,协助设计并实现 VBScript、JScript、JScript .NET、Windows Script Host、Visual Studio Tools for Office 和 C#。同时,他也是 C# 语言设计团队的成员之一。

  本文是一篇 fogcreek 网站对 Eric Lippert 的专访,以下为采访摘译:

  原文链接:dev.life – Interview with Eric Lippert

  今天我们的嘉宾是 Eric Lippert,Coverity 的软件架构师,此前在微软 C# 编译器团队首席开发师,也是 C# 语言设计团队的成员之一。

  几个主要的编程著作:Essential C# 和 Visual Basic .NET Code Security Handbook ,在他的博客上有很多关于编程的文章,也常出没于 StackOverflow。

  你是如何进入软件开发行业的?

  Eric Lippert:我六七岁时在学校图书馆接触到了 Commodore PETs,PET 有专门的校园版,而且还附带 Waterloo BASIC 芯片。

  起初,我放学后就会去玩 Dam Buster,而且还玩到很晚,但我很快意识到自己可以编写自己的东西。我有一本可用来练习 BASIC 的书,所以我就在家里的图纸上写代码,然后在放学后去输入并看是否能运行——让一个火箭飞行在屏幕上。我小学图书馆的管理员允许我晚归,以及借阅一些关于编程和数学的书籍。后来我在 LinkedIn 联系到她,谈起过往的日子每每都很感动和暖心。

  我十岁时,在别人的程序员中发现了人生中的第一个 bug。我的小学老师有一个数学闪存卡程序,有时候会输出错误的答案,老师问我看能不能解决这个问题。其实,这对于我是极大的挑战,心想这必然是一个极其复杂的程序,但我认为我需要去找到错误所在,至于是否真正意义上的理解是另外一回事。所以我开始读程序的每一行代码,并独立测试。我已经忘记了那个 bug 的具体细节了,但和这个类似:

  1230 IF X > 10 THEN PRINT (X – 10) * Z

  1240 IF Y > 10 THEN PRINT (X – 10) * Z

  第二行出现了错误,X本应是Y。在现代的编程环境中,有人会认为这是由于复制粘贴产生的错误,可那个年代的编辑器是没有这个功能的,必然是谁在编写代码时分心所导致的。

  我大概在 1983 年得到了我的第一台电脑——Commodore 64,在这里也要感谢我那伟大的妈妈。

  我最值得骄傲的一个程序就是一个书籍数据库,让我可以追踪、管理我的书,那时我十一岁。之后,我还做了个比较靓的窗口管理器,可以在屏幕上实现打开、关闭窗口。

  我没有接受过正式的编程训练,只是偶尔会去学校董事会建立的计算机实验室。即使到了高中,我也更多的是自学。在高中暑假我去 WATCOM(因编辑器和数据库出名)做实习生,他们教我用C语言编程、如何使用调试器、如何建立一个有限状态机……等到我拿到学位后还在 WATCOM 工作过一段时间。

  我在 University of Waterloo 取得了双学位:应用数学和计算机科学,尽管其中的计算机科学和计算机编程区别还比较大。

专访前C#编译器组首席工程师Eric Lippert

  你目前在做什么?

  Eric Lippert:我是一名软件工程师,在 Coverity 从事 C# 代码分析,也就是 Synopsys 的新部门。而 Coverity 是做代码审查和检测软件的公司,比如找出C、C++、Java 和 C# 代码中的缺陷。

  我一天的工作需要做的事情很多,包括一些管理方面的事情:review bug 报告、测试案例和代码等。我虽然不需要写大量的代码,但也有一些自己编程任务。与此同时,我还需要指导我的同事,他们是在 Unix 上是写 C ++ 的好手,可这与 Windows 上写 C# 有着很大的不同,我要给他们分析“The Microsoft Way Of Thinking”与他们过去做法的不同。

  我还有一些其它工作外的技术活动,例如 Mark 和我在编写C# 6.0 的著作,其次是在O’Reilly 上录制编程教学视频。

  你在编程时才最开心吗?

  Eric Lippert:我建议很多程序员在开始的时候,先去感受找出 bug 的喜悦,而不应该第一时间去编码。我从来都不知道快乐的源泉是什么,可至少我在调试我构建的代码时是开心的,经过一次又一次的调试让程序运行起来。

  对于这个问题,首先我很享受编码,其次乐于通过构建 subsystems 来解决一些问题。在 Roslyn 项目(微软公司开源的 .NET 编译器)工作时,需要重写C# 和 VB 编译器,且很多工作始于一张白纸。

专访前C#编译器组首席工程师Eric Lippert

  你的开发环境是是怎样的?

  Eric Lippert:Coverity 是一家有 Unix 的背景的公司,很多情况下都默认 Unix 开发环境,而我一直是在 Windows 设备上开发,所以使用 Cygwin(小型的 UNIX 模拟环境)来获得基于 UNIX 的开发环境。我同事一直用的都是 Ubuntu,只是在测试时用 Windows。当然,对于那些基于 C# 的产品,我还是使用了 Visual Studio 2013 。

  我使用的工具是 ProcMon,在许多开发者的工具盒中应该是没有的。

  另外,我在自己的小世界里编程时,音乐少不了,小清新居多,根据心情会听这些人的歌曲或这些歌:Stacey Kent、Glenn Gould、Goldberg Variations、Diana Kral、Philip Glass、Daft Punk、Pink Floyd、Sondheim musicals……

  我有个怪癖,如果不使用 Visual Studio,我就会用 1990 年版 WATCOM VI。

  *你最喜欢什么开发书籍?

  Eric Lippert:你采访过 Jared ,他现在微软做我以前的工作,他推荐的两本书很不错:《The Pragmatic Programmer 》和《Purely Functional Data Structures》。

  我顺着再推荐一本书就是《The C# Programming Language》。

  编写技术图书是我的一个爱好,对于最喜欢的书籍,只要是我编写或者参与编写的我都爱,最最喜欢就是 Jon Skeet 的书《C# In Depth》,因为这本书你几乎发现不到什么错误。很多让我推荐书籍,我通常处理这本还有就是《Essential C#》,只选其一的话肯定是前者。

专访前C#编译器组首席工程师Eric Lippert

  你目前最想尝试的技术是什么?

  Eric Lippert:我昨天和 Jon 吃晚饭时,聊了很多 Docker,在这方面没什么经验,会抽空去好好了解下。

  不写代码时你喜欢做什么?

  Eric Lippert:Ricky Jay 在电影《Spanish Prisoner 》(西班牙囚徒)中有段话非常好:

where he says that when your hobbies interfere with your work, that’s great, but when they interfere with each other, you’ve got a big problem. Boy, do I know all about that.

  我的爱好:

  • 编写书和录制视频,但都与 C# 有关
  • 写博客
  • 帆船
  • 修葺 108 岁的靠房子
  • 做木工,对做家居等很有兴趣
  • 在后院自己铸造金属工具
  • 弹钢琴
  • 在 StackOverflow 上回答问题

  爱好很多,我喜欢让自己忙碌起来。

专访前C#编译器组首席工程师Eric Lippert

  你会给刚进入开发领域的年轻人什么建议?

  如果时光能够倒流,我会对年轻时的自己说:认认真真地去学习 Commodore 64 汇编程序,因为我很恐惧汇编语言,至今我读机器语言的能力还是很弱。

  对于如今的年轻人,请你们从今天开始好好学习计算机编程,这可以让你学会如何写清楚非代码文档。一个好的开发者,写正确的代码是远远不够的,你还需要去教会别人如何使用它,并相信别人所做的一些改变和创新。

  另外,沟通是关键。

  话说回来,对于年轻人最实际的建议就是,找一些小的主题,尽可能的了解使用者的需求,并清楚、准确地写下来,或者针对小主题中出现的问题给出有说服力的回应。很快你就会成为这个主题领域的专家,自然而然地你也就会学到很多东西。

正文到此结束
Loading...