Delphi/C#之父首次访华:55岁了 每天都写代码
Delphi、C#之父Anders Hejlsberg 近日首次访华,并在10月24日和27日参加了两场见面会,分享了他目前领导开发的TypeScript项目,并与国内前端开发者近距离交流。本文就为读者描述一下近距离接触大师的印象,以及Anders对TypeScript的设计理念和想法。
Anders Hejlsberg(安德斯·海尔斯伯格)于1960年出生于丹麦,在Borland公司开发出Turbo Pascal和Delphi之后加入微软,主持微软下一代开发工具的研发。
他为微软开发和设计出Visual J++、.NET平台以及C#语言,可以说他开发出的软件和语言影响全世界整整一代程序员。
目前,他是C#语言的首席架构师和TypeScript的核心开发者与TypeScript开源项目的重要领导人。

Anders印象
Anders现年55岁,在软件开发的道路上已经走过30余年,但仍然对工作充满热情。他性格和善而风趣,同时,还是个纯粹的程序员,每天仍然有很多时间花在编程上。
虽然相处时间不长,但大家纷纷围着他舍不得分开,这是一位让人愿意亲近的长者、前辈和大师。
笔者将他的印象总结为三点:终身编程、开源信徒、语言大师。
终身编程
Anders现在每天仍然花大量的时间实际写代码,并且未来会一直写下去。他很清醒的知道自己长处:“相比起管理,我还是更擅长于编程。”
事实上,Anders的成名之作Turbo Pascal通过出售软件授权就让他获得了大量财富,之后微软高薪聘请更让他衣食无忧,Anders不仅仅是可以转管理——只要他开口,微软有很多的职位在等着他——他甚至可以什么都不用做,但他仍然坚持编程,因为这是他的兴趣和激情所在。
对于他如何能达到现在的成就,他表示,10000小时定律和兴趣是很重要的因素,编程是一项需要时间来掌握的技能。
Anders说,他回忆一下,的确是花了这么长时间才真正掌握编程,而另一方面,兴趣也是非常重要的,如果有两个工作,一个给的多些,另一个给的少些,但是是你感兴趣的事业,Anders建议选感兴趣的那个。
国内有不少资深程序员在工作一段时间之后都转了管理,但仍对编程难以忘怀,了解Anders的生平和想法,想必会有所启发。
开源信徒
Anders对开源精神的认同和身体力行让人惊讶,他现在在Github上每天要提交十多次代码。很难想象他来自微软,当然,微软现在其实也在拥抱开源,并且这其中也有Anders的努力。
微软自Satya Nadella(萨提亚·纳德拉)担任CEO后,开始融入社区,向开发者示好,其中的重要举措就是开源,Anders是其背后的推动力量之一。
不仅他之前参与的.NET核心引擎CoreCLR开源,现在的TypeScript也彻底是由社区主导的开源项目,微软并不干涉TypeScript的发展方向,所有决策都由社区得出。
在Anders的分享里,他总结微软现在的开源战略:
• 新开发项目首选开源
• 创立.NET基金会管理开源项目
• 开源+开放开发,使用并依赖Github
• 跨平台开发工具,典型的如Visual Studio Code
Anders认为开源是软件开发的趋势,现在如果你的软件不是开源的,开发者可能更愿意选择别的开源的解决方案。
语言大师
Anders在语言设计、开发工具、编译器等诸多领域都有非常深厚的功底,这为他设计出C#语言打下了基础,C#语言被公认为设计非常优秀的语言,作为它的创造者,Anders毫无疑问是一位语言设计的大师。在现场他分享了一些对编程语言的看法:
• 极简:Anders喜欢简单(simplicity),除非必要,否则不添加语言特性,一个好的语言特性是它必须的最小集。
• 设计存活时间更长的语言:有些编程语言随着时间流逝不再流行,但有些语言如C语言,几十年过去了仍然被很多人使用,语言与趋势(如移动互联网、物联网)无关,语言设计者的目标是设计存活更长时间的语言。
• 困难即美味:记者问到Anders对JavaScript语言的看法,他认为JavaScript在设计上有诸多问题,但仍然有其优点,更重要的是,用户很多,并且难以被替代。至于Anders为何会选择修补JavaScript,他认为这对他是一项挑战,以前没有人做过,解决这一问题对他就像美味一般。
TypeScript:大JS生态圈的一环
TypeScript最近发布了1.6版本,它在社区里的接受度也越来越高,比如有人从CoffeeScript迁移到TypeScript,也有人认为它比Facebook的Flow更好。这一切都要归功于Anders为TypeScript带来的优秀设计。
Anders分享道,其实TypeScript做的并不多。它的两大特性,第一个给JavaScript加上可选的类型系统,Anders表示,很多事情是只有静态类型才能做的,给JavaScript加上静态类型后,就能将调试从运行期提前到编码期,诸如类型检查、越界检查这样的功能才能真正发挥作用。在Anders现场的演示可以看到,TypeScript的开发体验的确远远超过以往纯JavaScript的开发体验,无需运行程序即可修复潜在bug。
另一个特性是支持未来的ES 6甚至ES 7,最近的更新都与此有关。在TypeScript中,你可以直接使用ES 6的最新特性,在编译时它会自动编译到ES 3或ES 5,这个功能和最近流行的Babel类似,事实上,Anders认为TypeScript的竞争对手并非Dart、CoffeeScript这类语言,而是Babel,不过TypeScript的类型系统是Babel无法做到的,Babel也仅是一个编译工具,无法提供更好的开发体验。
在问到对TypeScript将来的规划时,Anders显得很克制。TypeScript不追求替代JavaScript,没有计划直接运行在浏览器、系统里,它仅仅关注在编译到JavaScript之前的事情,编译之后的事情,诸如JavaScript性能调优等等,并不关心。
Anders表示,TypeScript最大的目的是让程序员更具创造性,提高生产力,它将极大的增强JavaScript编写应用的开发和调试环节,让JavaScript能够方便用于编写大型应用,进行多人协作。
这种定位让TypeScript能更轻松的被JS程序员所接受,除了上面提到社区的反应,最知名的还要数Google采用TypeScript来开发其Angular 2框架,Google和微软甚至为此第一次联合召开发布会。在国内,也有HTML5游戏引擎Egret使用TypeScript进行开发。由此可见,TypeScript已经足够可用,甚至进入大公司的生产环境。
当然,最后让人推荐TypeScript的原因,还有Anders本身,有如此大牛带领,相信这门语言正走在正确的道路上,它的未来不可限量。
http://news.mydrivers.com/1/454/454932.htm
Delphi/C#之父首次访华:55岁了 每天都写代码的更多相关文章
- jQuery 之父:每天写代码
去年秋天我的支线代码项目 遇到了一些问题,项目进展不足,而且我没法找到一个完成更多代码的方法(在不影响我在Khan Academy方面的工作的前提下). 我主要在周末进行我的支线,当然有时候也在晚上进 ...
- 自行实现透明的控件如Panel GroupBox(使用不需要重绘父控件的效果,一切都因为窗口有了WS_EX_TRANSPARENT属性)
CSDN的Blog开通了.我想这里的Blog作为今后自己回答别人问题的时候,收藏答案的地方很不错呢. 因为社区的贴子早晚都会沉下去,查找起来很不方便,甚至再也找不到呢. Q: http://commu ...
- jQuery之父:坚持每天都要写代码
关于作者:John Resig, jQuery之父,同时也是Pro Javascript Techniques和Secrets of the JavaScript Ninja的作者.他目前主持 Kha ...
- 《IT老外在中国》第11期:首次访华的编程巨匠、C#之父Anders
见到Anders的时候,他正专注的倾听国内开发者的提问,一副远视眼镜斜歪着架在头顶,宽松的深蓝色休闲毛衫随意套在白色圆领T恤外. 如果不是他那专注的神情,以及现场见证开发者对他的狂热崇拜,很难想象这位 ...
- Delphi MDI程序 父窗体如何调用当前活动子窗体的函数/过程
一个MDI文本文件编辑器打开了N个子窗体子窗体的.pas文件有一些public的过程和函数我想在父窗体调用当前活动的子窗体函数我用Self.ActiveChildForm无法调用直接frmEdit.x ...
- Delphi线程同步(临界区、互斥、信号量,包括详细代码)
当有多个线程的时候,经常需要去同步这些线程以访问同一个数据或资源. 例如,假设有一个程序,其中一个线程用于把文件读到内存,而另一个线程用于统计文件的字符数.当然,在整个文件调入内存之前,统计它的计数是 ...
- Delphi创建ActiveX控件,实现安全接口及无界面代码
Delphi创建OCX控件非常的方便,但IE调用时弹出的安全认证非常麻烦,有时OCX也不需要界面,IE调用时需要隐藏,非常不方便.在DELPHI中创建OCX实现安全接口和创建事件中修改部分代码 实现安 ...
- jQuery之父:每天都写点代码
去年秋天,我的“兼职编程项目”遇到了一些问题:要不是从 Khan Academy 的项目里挪出时间来的话,我根本没办法将不理想的进度弥补上. 这些项目遇到了一些严重的问题.之前的工作我主要是在周末,有 ...
- 转载------35岁开始转变的观念(干了这碗鸡汤再写代码保证没有bug)
作为一个标准的IT男,从一开始的一线开发,做到管理层,又因为喜爱开发,跳槽继续专注coding,一干就是10多年.有时候就想,这样一直学习,coding,如果能干到老也挺不错的! 不过生活的压力是不会 ...
随机推荐
- Android实现 再按一次退出 的三种方法 durationTime、timerTask 和Handler
目前很多Android应用都会实现按返回键时提示“再按一次推退出” 在这篇文章中总结了各家的方法,一般都是监听Activity的onKeyDown 或者onBackPressed方法 方法一: 直接计 ...
- 由于物化视图定义为on commit导致update更新基表慢的解决方案
由于物化视图定义为on commit导致update更新基表慢的解决方案 以下是模拟和解决测试过程: (模拟update慢的过程) 1.首先基于基表创建物化视图日志: create materiali ...
- Ibatis的分页机制的缺陷
我们知道,Ibatis为我们提供了可以直接实现分页的方法 queryForList(String statementName, Object parameterObject, int skipResu ...
- Java开发中常见的危险信号(上)
本文来源于我在InfoQ中文站原创的文章,原文地址是:http://www.infoq.com/cn/news/2013/12/common-red-flags-in-java-1 Dustin Ma ...
- Android 程式开发:(廿一)消息传递 —— 21.3 使用Intent发送短信
使用SmsManager类,可以在自己编写的程序内部发送短信,而不需要调用系统的短信应用. 然而,有的时候调用系统内置的短信应用会更加方便. 这时,需要使用一个MIME类型为vnd.android-d ...
- Mac中MacPorts安装和使用
文章转载至http://www.zikercn.com/node/8 星期四, 06/07/2012 - 19:02 - 张慧敏 MacPorts简单介绍 MacPorts,以前叫做DarwinPor ...
- springmvc + jquery easyui实现分页显示
如有不明确的地方,戏迎增加QQ群交流:66728073 推荐一本Java学习的书:深入理解Java7 一,下载并导入jquery easyui的导 <link rel="st ...
- windows/linuxjdk安装,jdk1.6升级到1.7
一.JDK: JAVA_HOME: C:\Program Files\Java\jdk1.7.0_79 PATH: ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin CLASS ...
- jQuery Easy UI Resizable(调整大小)组件
Resizable(调整大小)组件,easyui基础组件之中的一个.调整大小就是能够对元素能够拖着调整大小,这个组件不依赖于其它组件,使用比較简单,相关的属性.事件都 在样例中介绍了. 演示样例: & ...
- InsertOnSubmit、InsertAllOnSubmit等区别 (转)
a. InsertOnSubmit: 将一个实体添加到datacontext对象中,并在SubmitChange()的时候执行更改. b. InsertAllOnSubmit:将一个实体集合添加到da ...