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

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了专访前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取得了双学位:应用数学和计算机科学,尽管其中的计算机科学和计算机编程区别还比较大。


你目前在做什么?


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上回答问题

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


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


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

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


另外,沟通是关键。


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



3. 欢迎扫描我们的二维码(长按下面的二维码图片、并选择识别图中的二维码)

以上是关于专访前C#编译器组首席工程师Eric Lippert的主要内容,如果未能解决你的问题,请参考以下文章

专访:平安科技首席架构师金新明和他的程序人生

DBA校友同行丝路弄潮——陈聪专访

C#之父Anders首来华:从TypeScript看开源

前 Oracle 首席工程师:谈谈我对 Java 学习和面试的看法

外媒Invest In Blockchain独家专访:Qtum量子链的优势在哪里?

Oracle前首席工程师告诉你:孩子为什么要学编程?