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编译器,且很多工作始于一张白纸。

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

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

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

另外,沟通是关键。

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

——————————————————————

极客头条正式开通了微信公众号,刊选每日精华内容和最新的资讯文章。

在微信搜索“csdn_geek”或扫描下方的二维码。

如果你热爱分享或者有什么建议,请加小编微信qshuguang2008(备注姓名+公司,实名交流)把你拉进极客头条微信交流群。

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

  1. 【专访英特尔高级首席工程师戴金权】普通数据工程师,如何玩转深度学习?

    记者 | 白羽 几乎每周,人工智能深度学习,总会在某个领域有新的技术突破,新的亮眼成果出来. 不过,这些最新的突破和成果,更多还是在深度学习的各大社区流动,更多是被顶尖教授.学者所掌握和应用,对于普通 ...

  2. 专访迅雷首席工程师:迅雷的下一代互联网底层技术构想

    摘要:互联网合纵连横频频上演,迅雷与小米的联姻也成为了热点,有许多人为迅雷的上市和迅雷的未来担忧,这家像工程师一样的公司,命运会怎样,他们未来会如何走下去?对此CSDN专访了迅雷首席工程师刘智聪. 刘 ...

  3. TensorFlow可以做什么?让Google Brain首席工程师告诉你

    编辑 | 明明 1月19日,在极客公园创新者大会IF2018的现场,Google Brain首席工程师陈智峰发表题为:<找答案从定义问题开始 --TensorFlow 可以用来做什么?>的 ...

  4. 为什么技术最牛的码农当不了首席工程师?

    金三银四招聘季,公司的管理者都在思考:在现在的市场环境下,到底应该为自己的公司注入怎样的新鲜血液来维持发展.工程师们同样也在思考如何获得更多成长和晋升的途径. Eduards Sizovs 是 Dev ...

  5. 首席工程师揭秘:LinkedIn大数据后台是如何运作的

          原文转自:http://kb.cnblogs.com/page/518558/       摘要:Jay Kreps是来自LinkedIn的首席工程师,他表示日志几乎在计算机产生的时候就存 ...

  6. 【比特熊故事汇】3月MVP英雄故事——微软MVP与英特尔首席工程师的春日Remix

    大家好!我是爱吃.爱玩.更爱学习技术,IT届的新晋网红,开发者的好朋友-比特熊! 大家看了<青春变形记>吗?特别澄清一下,并不是比特熊 Cosplay 以后的出演哦~ 比特熊:3月的故事汇 ...

  7. 专访阿里 iDST 语音组总监鄢志杰:智能语音交互从技术到产品,有哪些坑和细节要注意?

     专访阿里 iDST 语音组总监鄢志杰:智能语音交互从技术到产品,有哪些坑和细节要注意? 雷锋网按:在外界看来,阿里 iDST 是一个神秘的部门,大家知道里面聚集了很多技术大牛,但是对这个部门真正 ...

  8. 一周AI看点 | 北航设立全国首个人工智能专业,前IBM沃森首席科学家任京东副总裁

    本期一周AI看点包括AI行业要闻.投融资.技术应用.业界观点以及技术前沿. 行业 [北航设立全国首个人工智能专业:与百度合作办学] 近日北京航空航天大学宣布该校软件学院将设立全国首个人工智能专业,并与 ...

  9. 迅雷首席工程师:程序员成长之道

    声明:本文来自BLUES公众号(微信号:BLUEMIDOU),授权CSDN转载,如需转载请联系作者. 责编:陈秋歌,关注微信开发等领域,寻求报道或者投稿请发邮件至chenqg#csdn.net. 欢迎 ...

最新文章

  1. LeetCode 94. Binary Tree Inorder Traversal--二叉树中序遍历--递归,迭代--C++,Python解法
  2. pyhanlp 文本分类与情感分析
  3. jedivim加载失败,提示没有支持python3,(markdown也是如此)
  4. 【转载】最大权闭合子图 【网络流】
  5. css两列等高,css 多列等高
  6. 选择分集matlab程序,瑞利衰落信道下采用MRC分集误码性能Matlab程序
  7. windows加载linux分区,如何实现在linux系统启动时就加载windows分区(ntfs分区)
  8. 怎样设计访谈提纲_访谈提纲设计
  9. BZOJ4542: [Hnoi2016]大数
  10. 华维单片机编程-无线红外探测器03-环境搭建及程序详解
  11. [激光原理与应用-25]:《激光原理与技术》-11- 激光产生技术-非线性技术之激光倍频、非线性晶体CLBO、BBO、LBO
  12. -Dwho=zheng
  13. MinGW 完整版本(无需安装)
  14. JAVA网易云热评接口_网易云音乐热评爬虫(一): 反编译加密参数
  15. java编程:设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声
  16. talent 远程登录 AAA 认证
  17. 专转本计算机模拟试卷,江苏专转本计算机模拟试卷
  18. 余额宝好不好?余额宝利息是多少?
  19. Ubuntu 13.04 双显卡安装NVIDIA GT630M驱动
  20. 深圳信息通信研究院与深圳市广和通无线股份有限公司签署战略合作协议

热门文章

  1. matlab dae,matlab用ode15数值计算微分代数方程(DAE)的问题
  2. 教育平台项目后台管理系统:视频讲解
  3. 湿度传感器行业调研报告 - 市场现状分析与发展前景预测
  4. Spring MVC 学习总结(一)——MVC概要与环境配置 转载自【张果】博客
  5. C语言算法:十进制转为二进制
  6. 聊聊引擎底层如何实现Bloom渲染算法
  7. 利用短信商务通进行短信商务
  8. 【爬虫+多线程+MySQL】网抑云音乐评论爬取
  9. 飞塔防火墙固定IP改动态IP网络设置
  10. 使用element-ui中tree树状图