当前位置: 首页 > news >正文

[转帖]安德斯·海尔斯伯格

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开源项目的重要领导人。

Delphi/C#之父首次访华:55岁了 每天都写代码

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本身,有如此大牛带领,相信这门语言正走在正确的道路上,它的未来不可限量。

转载于:https://www.cnblogs.com/jinanxiaolaohu/p/10652749.html

相关文章:

  • [转帖]Linux分页机制之概述--Linux内存管理(六)
  • Linux的远程连接工具:SSH的安装
  • Spring Reference
  • 【大数据应用技术】作业七|爬取全部的校园新闻
  • leetcode 958. Check Completeness of a Binary Tree 判断是否是完全二叉树 、222. Count Complete Tree Nodes...
  • 力扣——二叉树的层次遍历
  • vue工程 使用滚动组件 vue2-better-scroll 实现上拉加载 下拉刷新
  • Python多线程实例
  • loadrunner中web_reg_save_param和web_reg_save_param_ex的区别
  • 理解JavaScript【转】
  • python入门 第一节
  • 1255: 打怪升级(Java)
  • 随笔2
  • JavaSE--日志
  • 大二下周总结(7)
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [deviceone开发]-do_Webview的基本示例
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • leetcode388. Longest Absolute File Path
  • Lsb图片隐写
  • maven工程打包jar以及java jar命令的classpath使用
  • Python socket服务器端、客户端传送信息
  • Service Worker
  • tweak 支持第三方库
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • Xmanager 远程桌面 CentOS 7
  • 安卓应用性能调试和优化经验分享
  • 包装类对象
  • 关于 Cirru Editor 存储格式
  • 记一次用 NodeJs 实现模拟登录的思路
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 通过npm或yarn自动生成vue组件
  • 王永庆:技术创新改变教育未来
  • 以太坊客户端Geth命令参数详解
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​什么是bug?bug的源头在哪里?
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • !!Dom4j 学习笔记
  • # 透过事物看本质的能力怎么培养?
  • #{}和${}的区别?
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (分类)KNN算法- 参数调优
  • (没学懂,待填坑)【动态规划】数位动态规划
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • . Flume面试题
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET Core中的去虚
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • @WebServiceClient注解,wsdlLocation 可配置
  • @基于大模型的旅游路线推荐方案
  • []C/C++读取串口接收到的数据程序
  • []串口通信 零星笔记
  • [20171113]修改表结构删除列相关问题4.txt