SegmentFault 创始人祁宁对话 C# 之父 Anders Hejlsberg

导读

上周,C#、Delphi 之父 Anders Hejlsberg 亲临帝都,就 TypeScript 做了一场技术分享,并与众多开发者就此进行了技术探讨。Anders Hejlsberg 加入微软的 19 年里,一直致力于 C# 和 .NET 的研发工作。同时,作为 TypeScript 的核心开发者和该开源项目的重要领导人物,他这次来帝都,主要也是为 TypeScript 布道。以下是讲座主要内容。

图片描述

Anders Hejlsberg 简述 TypeScript

(Anders)大家下午好!首先我介绍一下这是我第一次到中国来,在这儿逗留的这一天令我非常高兴,而且此前我也是非常激动的。今天在这会给大家介绍一下我一直在做的事情,包括大家都在谈论的 TypeScript 以及相关的 Open Source 的一般性的工作。

我做软件开发工具已经有 35 年的时间了,而且编写了不同语言的编程。以前都是专有的源,是封闭式的,现在我看到它有更新的变化,有一些新的方法论。

首先我们来看一下相关的背景。RedMonk 在上个季度刚刚发出的报告,JavaScript 在 GitHub 和 StackOverflow 被提及的次数排名都很靠前,和以前比有显著的上升。我觉得这里面有一些比较重要的原因。首先,JavaScript 是真正跨平台的语言。以前的语言,如 Java,其实现在都不算是(跨平台语言)了。另外,JavaScript 的性能近年来有 10~100 倍的飞速提升,它一个语言就可以在所有的层面上编程,这个是非常不一样的地方。比如这两年的 Node.js,还有移动端 ReactNative、NativeScript 等等,都可以用它来编写。在不同层面使用同一个语言开发,避免了学习很多新的东西。

其次,现在 JavaScript 已经被 ECMAScript 标准化了。今年已经出到第六版的标准,看起来非常雄心勃勃,因为他们的目的是为了解决 JavaScript 的一些遗留问题,而且另外添加一些新的模块、class 等等。现在第六版的标准我觉得有很多东西是非常有意思的,像 Mondule、Class、Arrow Function 等,JavaScript 的核心实际就是这样的。首先它是动态的,是两个家族系列(Dynamic 和 Static),对动态的界定是它不需要编译,直接打印就可以了,静态的是要求你静态地进行编译。我们可以分别来看一下动态和静态之间都各有什么优点?优点大家都知道就是它非常简化,可以让你直接上手工作,而且可以互动不需要编程,而且非常容易。静态的这块更多是强调修正一些错误,强调性能升级还有更好的工具。实际上现实来讲是说动态的和静态的都各有所长,而且我们两者都需要有。

大概是 5 年前我们的客户包括自己内部的团队就跟我们说,他们在写大的 JavaScript 代码时会遇到一些问题,所以我们想,怎么做才能加强 JavaScript 代码,让其强的更强,同时不破坏和损坏既有的价值。这就导致了我们现在所说的 TypeScript 的出现——实际上它是 JavaScript 的超级集合,把两者(动态的、静态的)最好的东西都集合在一起。这样实际上带来了两个好处,一个是我们在这上面添加了静态的,这样就有更加好的工具,还有一个好处在于你可以现在获取未来才有的一些相关的属性,可以在任何浏览器、任何的托管主机和操作系统中使用,而且它整个都是开源的,这才是跨平台的。(ECMAScript6 实际上在 5 年之后有了非常大的、多的 browser 部署才行)

……

以上是 Anders Hejlsberg 关于 TypeScript 基本的介绍。接下来是圆桌对话,是进一步的深入了解。圆桌对话由 SegmentFault CTO 祁宁、LeanCloud CEO 江宏以及云适配 CTO 马铎共同参与。

圆桌对话:深入了解 TypeScript

江宏:大家好,我是 LeanCloud 的江宏。LeanCloud 是移动应用的后端云服务。我是很小的时候学编程时就开始使用 Anders 创造的 Turbo Pascal,直到后来的 Delphi。今天很高兴有机会跟大师一起交流。刚才 Anders 介绍了 TypeScript,那么我就以一个这方面的问题开场吧。TypeScript 在 JavaScript 之上加了 class,而据我所知,很多 JavaScript 程序员,包括一些很优秀的程序员,都对在 JavaScript 里模拟 class 有强烈的反感。除了宗教原因以外,你觉得从技术上看 class 和 prototype 有优劣之分吗?

Anders Hejlsberg:你的这个问题非常好,JavaScript 没有 class,所以有一些习惯于 class 的开发者认为不大好用,而加上 class 也是因为有一部分的开发者是要用这样的东西。从 TypeScript 的 compiler 来讲,JavaScript 原有的 function、closure、prototype 都不受影响。对我来说,我认为它是中性的,你可以用这个也可以用那个,有两种方法来开发。

马铎:我了解 Anders Hejlsberg 先生的技术有十来年,他在开发界里面名气很大,可谈论的问题是非常多,但现在我们把问题回到 TypeScript 上,我想到一个问题,TypeScript 这种语言这么灵活,那么我想提的问题是,在灵活与规范化之间,TypeScript 是如何做好平衡的,这是不是 TypeScript 设计之初做的主要的考虑?

Anders Hejlsberg:TypeScript 作为一个语言来讲,技术上是非常有意思的。它有一个 GridView (77:21) Type 或者是 (77:22) Type 这样的东西可以用,如果这样用的话就可以查。如果不写类型的时候,实际上就相当于 JavaScript,问题是你怎么来写类型,传统上来讲编程的语言就是两个,一个是静态、一个是动态的,或者是 DodeType,所有的都是用静态类型来写的,所以你可以选用哪一种形式的类型。

祁宁:TypeScript 和 ECMAScript 的关系会是怎样的?如果以后 ECMAScript 支持了越来越多的 TypeScript 里的新特性,我们还需要 TypeScript 吗?

Anders Hejlsberg:我想就这个问题说两件事,首先是对于刚才提到的 ECMAScript6 的标准化,我们是非常致力于这个工作的,它就是微软的,我们也不是希望要把这个语言变成一个完全不同的东西。另外,它实际上有一些核心的东西,一个是 TypeScript 从静态类型提供了一个更好的工具,同时在编码的时候我们把它叫做 Downlevel,我觉得可能是更简化的意思。另外 ECMAScript6 标准化的时候是在不断地演变的,但我并不认为这个标准化有静态类型的系统,之后 6 还会有新版本,而现在的 browser 是不会支持它的。

祁宁:我们知道微软在开源社区中一直颇受微辞,它也有一些颇受诟病的传统,那么现在的微软真的走向开放了吗?

Anders Hejlsberg:有关你提的问题应该更多地看一下我们的行动,你们有自己的评判。如果看一下我们所谓工作的流程还有整个的开源社区对这个工作的深度的介入,还有包括 Google 已经在写 Angular 2,而且是在 TypeScript 上写的,这些是事实胜于雄辩的。我们微软也是在变的过程中,在这个过程中我们也学习了很多的东西。

江宏:程序设计语言在过去几十年里经历了一个演化过程。GUI 和桌面程序催生了面向对象的语言,多核处理器和对平行计算的需求让函数式语言再次流行起来,同时也让 Erlang、Go 等一些新的语言出现。您认为下一个新的语言是什么样的,让它出现的动机会是什么?

Anders Hejlsberg:有关这点其实很难说未来会出现什么新的语言的类型,但我可以说一下哪些事情或者是因素影响了现在的工作,比如说我们说的函数式的语言,这个对很多其他的东西来讲都是非常能够带来灵感的源泉。因为函数式语言有了 C# 里的很多特性,当然微软也有自己的函数式语言 F#。另外移动应用还有云等等都影响了现在的很多工作,他们要求系统之间可以进行网络通讯,能够容忍延迟,所以有了异步的编程。ECMAScript6 的标准之后会是 7,但编程的模型也是会继续向前演进的,可是编程语言的演进是非常缓慢的,因为它不是基于硬件的演变,而更多是涉及到人方面的因素。我们也知道在过去的 30 多年里,人大脑的尺寸没有发生太多的变化,因此编程语言方面它的演进是非常慢的。

马铎:我这有两个小问题想请教一下,第一是关于 TypeScript 的开源以及微软开源的事情,但这个问题其实可以不用问了,因为我也是一个 TypeScript 的使用者,关于开源这块其实已经有答案了。第二个问题是 TypeScript 现在发展的一种状况,我想听听 Anders Hejlsberg 先生在全球范围内以及在中国的 TypeScript 发展的状况是不是跟你所想象的一样,是好还是不好?

Anders Hejlsberg:有关这个问题我认为 TypeScript 在过去一年半的时间里是经历了非常非常快速的或者是很多轮的增长,现在我们看到了 Angular 2 还有 Google 也加入了,自从他们加入了以来又有了更大的增长。另外,从每个月有关这个下载的相关应用来讲,也是超过了 5000 万。再有,看到社区也是非常非常热闹的,因为他们现在在 GitHub 上工作了一年半的时间了,这里面有很多相关的问题,这说明在过去的一年半时间里肯定是有很多相关的问题和使用。我们看到了它的发展。TypeScript 在很多会议上或者是用户集团会议上都是有很多使用的。

祁宁:我们知道这是您第一次来中国,您对中国的开发者印象如何?您能从您自己的经历中为这些年轻人提出建议吗?

Anders Hejlsberg:首先,我觉得这是我第一次来中国,这个经历令我非常激动。另外和当地开发者社区有一些互动,另外我们看到了整个的开发者社区热情也是非常大的,所以这些对我们来说都是非常震撼的,另外我们也在微软本地的研究看了相关的项目,我发现也是特别棒的,很多东西非常务实、非常有用、非常有意思,其中很多东西我都想把它放在我们最终的产品里。

再有,其实我很难给大家一些相关的建议,对我来说编程的工作应该是大家都富有热情的来做的,因为我在上学的时候就开始接触这个工作,当时个人电脑都没有,什么东西都得从头学起,但我就是想学,谁也不能阻止我,并不是说我希望得到更高的薪酬,我完全是凭热情。我非常幸运我的爱好和工作是结合在一起的,但不是人人都像我这么幸运,最重要的是你要找到你的热情所在,而这个又能带给你快乐,这就是带来更好的工作成就,如果你面临一个选择,一方面是工作能多给你钱,另一方面是你很热爱的,这样的话才能工作得非常带劲,你也能够成长,同时也能学到非常多的东西。

江宏:您在微软多半是有某些管理职责的,不管是对人还是对项目,请问您是怎么平衡对于技术工作的热情和自己的其他职责的?我相信很多技术人都会有这个问题。比如我之前在 Google 工作的时候很多工程师遇到这个问题。后来创业,很多技术出身的创业者也遇到这个问题。

Anders Hejlsberg:这个问题相对来说比较好回答,我是自主选择做技术方面的工作,实际上我不管人,也没有人向我汇报,但在技术方面我负的责任是非常大的。因为对我的工作描述是我必须要创作出在全球开发者社区都非常有影响的产品,所以我是不管人的,我更愿意从事我非常擅长的技术方面的工作而不是管理人,这是我的专长所在,也是我的热情所在。

江宏:您在职业生涯里经历了不少编程语言和工具的生命周期。比如我以前用您主导开发的 Delphi。从技术上说 Delphi 是一个非常好的开发桌面应用的语言和开发环境,但是现在很少有人用了,似乎 Delphi 的发展没有达到应有的高度。如果那个时候有比较多的开源社区参与,您认为事情会不一样吗?您觉得决定一个语言的生死和是否能流行的主要因素有哪些?

Anders Hejlsberg:这个我也是很难说的,因为当时还没有开源,现在有了开源我认为它的影响对编程语言来讲是非常非常大的,而且如果没有开源将没有任何的编程语言是受欢迎的,因为开发者现在已经对私有的封闭式的东西是不敢兴趣的,而且我认为语言的设计 90% 的编程语言都是一样的,那 10% 是新的东西,新的东西发展是非常非常缓慢的,因为它和硬件如何发展都没有关系,它是和人脑和数学的发展是有关系的,所以是非常缓慢的。另外我不认为有任何的编程语言是完美无瑕的,我经常跟别人这么说,你给我看一个完美无瑕的编程语言,我马上给你展示一个根本没有用户的编程语言。一旦编程语言有了用户,它的代码就要考虑向后的兼容性。很多技术都有很多糟糕的地方,而这个正是它们成功的表象。

图片描述

以上为圆桌对话主要内容,圆桌结束后,Anders Hejlsberg 还与在场的开发者就编程方面的问题进行了交流。对于本次帝都之行,他表示非常感谢中国如此多的开发者能够支持 TypeScript,也希望在之后越来越多的开发者能参与到 TypeScript 的工作中来。

查看 GitHub 该项目:Microsoft/TypeScript

活动现场照片

图片描述

图片描述

图片描述

图片描述

图片描述

图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS:1.3,函数(function)

ylbtech-JS:函数-导航函数定义返回函数调用一个函数调用一个函数(带参数)返回值的函数调用外部的js文件JS:3.1,函数(function)-定义 返回顶部1,定义函数语法 通过定义函数名称,参数和代码语句来创建函数。function 函数…

美女,你这是把腰带当裙子了?

1 你这是把腰带当裙子了?(良心建议:穿这裙子一定要专心...)▼2 真正充满味道的食堂!▼3 ???这又是一只有故事的猫▼4 女生的肚子可以多神奇?(dy&#xff…

UITableView定制accessoryView出现的连带问题

为了美化UI,想实现如下图的效果:点击高亮 出发点是好的。没想到,出现了下图的连带问题:选择一行的时候,竟然连带的出现了高亮效果 这个如何是好?经过网络搜索,发现我不是第一个遇到这样的问题:custom-accessory-button…

Asp.NET Core 如何使用ElasticSearch和Kibana创建仪表板

图片在我以前的文章(这里是第一[1]篇和第二篇[2])中,我展示了ElasticSearch作为电子商务中的全文搜索引擎的使用,一些高级配置的设置和使用以及products包含所有内容的索引的创建保存的产品。出于演示目的,我们使用Bog…

男女共厕,考验男生心理素质的时候到了......

1 假期里你都干了啥?▼2 有猫饼▼3 奥特曼:我不会错过!▼4 自绝式单身▼5 我信了▼6 意外的惊喜▼7 画面太美我不敢看▼你点的每个赞,我都认真当成了喜欢

基于MySQL的高可用可扩展架构探讨

随着信息量飞涨,信息的存储成为了这个时代至关重要的一项技术。如何来保证数据存储技术能够适应信息量的增长速度和我们对信息的高度依赖,成为一个非常重要的课题。本文将从数据库架构的层面,通过以开源的数据存储软件来构建分布式数据层的思…

有趣分享:国内产业图谱

IT有趣分享”Microsoft 市值又重新登上全球第一当地时间21年10月29号周五美股收盘微软市值重新登上全球第一,约为2.46万亿美元,超越苹果2.43万亿美元,成为全球市值第一公司。相当于深圳21年前三季度的gdp的总和的两倍。有趣的是专门有人做了公…

性冷淡风的麻将,获红点奖!网友:没有烟火气了

全世界只有3.14 % 的人关注了爆炸吧知识在这个消费升级的时代很多产品都被重新设计着最近,一款麻将引发大家热议有人说惊艳也有人说太冰冷,没了烟火气设计者是THE 90s LAB台湾的一个90后团队这副麻将的名字很洋气叫做,马丘Machill读起来&…

c语言md5函数 linux,Linux下C语言计算文件的md5值(长度32)

google了好久都没有找到合适的,其实我只需要一个函数,能计算文件的 md5 值就好,后来找到了 md5.h 和 md5.c 的源文件,仿照别人的封装了个函数(他那个有问题,和 md5sum 计算出来的都不一样)。废话少说,直接贴…

图片的旋转

主要运用了Matrix类,postRotate()方法和postScale()方法; Matrix:中文是矩阵的意思,主要用于图片的缩放,平移与旋转; postRotate()用于旋转,postScale()用于缩放; 具体MianAvtivity代…

让 AI 为你写代码 - 体验 Github Copilot

前几天在群里看到有大神分享 Copoilot AI 写代码,看了几个截图有点不敢相信自己的眼睛。今天赶紧自己也来体验一下 Copoilot AI 写代码到底有多神奇。申请 现在 Copoilot 还处在预览阶段,想要体验需要先申请。等待大概一晚会收到邮件提示申请试用成功&am…

这个24岁北航博士刚毕业就受聘211大学副教授,他大一就保研,学术能力太牛了.........

全世界只有3.14 % 的人关注了爆炸吧知识本文综合整理自:量子位、微言航语近日,有一个人的“朋友圈”在朋友圈火了。别误会,超模君可没在玩套娃游戏。截图给大家搬来了,快看你没看错!1996年出生,今年24岁&am…

英特尔傲腾内存linux,英特尔傲腾内存怎么样?intel傲腾内存优点和缺点你知道吗?...

英特尔傲腾内存在前一段时间正是发布,对于英特尔内存的性能不少用户一无所知,那么英特尔傲腾内存怎么样?都有哪些优点和缺点?下面装机之家小编来为大家解读下。优点1:3D XPoint随机读取性能强傲腾使用了不同于普通固态…

零代码平台中的服务编排思路

先打个广告,我们的第三场零代码实践的直播在本周五( 11 月 5 日 )晚8点准时开始,扫描下面二维码,直接预约直播,到时间微信会自动提醒。随着企业数字化转型的进程加快,零代码平台的的应用越来越广…

日本原装进口雪平锅,1台顶4台,有它谁还点外卖?

▲ 点击查看小爆我虽然热爱烹饪,但不得不说「下厨房」,也是个坑。光是锅,我就要买好几个。为了蒸包子馒头买蒸锅,为了炒菜买炒锅,偶尔想精致喝热牛奶又买了小奶锅,为了煲汤、做点卤味解解馋,买炖…

如何评价一个开源项目——价值流网络

本文由X-lab开放实验室博士生赵生宇原创出品该篇博客继续之前关于活跃度和协作影响力的介绍继续展开,希望可以在解决协作影响力无法容纳更多数据,从而可以更全面衡量开源生态的同时,也引入一种高可扩展的数学模型,可以在任意时间快…

【翻译】C#编程语言和JAVA编程语言的比较(下)

原文地址:http://www.25hoursaday.com/CsharpVsJava.html 6、集合 许多有名的编程语言都会包含一个集合框架,框架一般由各种用于保存数据的数据结构和配套的操作对象的算法构成。集合框架的优势是让开发者可以不用写数据结构和排序算法,把精力…

物理太难?这些虚拟动图,让你看懂物理

全世界只有3.14 % 的人关注了爆炸吧知识(刻度尺的使用)(测量平均速度实验)(声音的产生)(温度计的使用)(晶体和非晶体的熔化)(光的反射&#xff09…

linux http 分析工具,技术|httpstat:一个检查网站性能的 curl 统计分析工具

httpstat 是一个 Python 脚本,它以美妙妥善的方式反映了 curl 统计分析,它是一个单一脚本,兼容 Python 3 ,在用户的系统上不需要安装额外的软件(依赖)。从本质上来说它是一个 cURL 工具的封装,意味着你可以在 URL 后使…

微软 Ignite 大会 PowerBI 划重点

2021 年 11 月 2 日,微软举办 Ignite 大会,其中关于 Power BI 有哪些重点,带给你了解。摘要Power BI 和 Power Point 将原生整合。Power BI 和 Teams 将更深入整合。Power BI 云端数据集推出自动聚合。Power BI 数据模型推出混合表。Power BI…