首页 > PHP资讯 > Python培训 > 专访前C#编译器组首席工程师Eric Lippert

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

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

  本文是一篇fogcreek网站对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编译器,且很多工作始于一张白纸。

  

 

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

  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#》,只选其一的话肯定是前者。

  

 

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

  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 汇编程序,因为我很恐惧汇编语言,至今我读机器语言的能力还是很弱。

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

  另外,沟通是关键。

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

本文由欣才IT学院整理发布,未经许可,禁止转载。