编程语言既是开发工具,也是构成产品的原材料,以及软件开发者组织设计,表达思想的途... 展开 >
贺师俊,网名 Hax,现就职于百姓网架构部;十多年来一直活跃在 Web 标准、前端开发和 JavaScript 社区,对 HTML 标准有微小的贡献。
Hax 精通 JavaScript,很早就通过 es-discuss 邮件列表参与标准讨论,并给 ECMAScript 标准提交过 issue。Hax 关注和参与了多项 ES 新草案的讨论,写过多个针对新特性的 Babel 转换插件,给 Babel、ESLint 等项目提交过 issue 和 pull request,并是 Atom 编辑器 js-refactor 插件的维护者。Hax 做过大量 JavaScript 相关的分享,包括题为「JavaScript — The World’s Best Programming Language」的演讲。
Hax 对其他编程语言也有广泛的兴趣,机缘巧合下对 Groovy 语言并间接对 Swift 语言的设计有微小的贡献。Hax 也给 PHP 提交过 issue,并撰有「PHP 黑系列」文章。Hax 还创造了 Jedi 语言,对 DSL 的设计和实现略有一点经验。
Hax 是 QCon 的老朋友,五次出任讲师,两次担任出品人并获得「优秀出品人」荣誉,还临时客串过主持人;也经常在其他众多技术活动中担任讲师、嘉宾或主持人,并是「BXT 技术沙龙」的组织者之一。
Hax 毕业于复旦大学,曾在上海交通大学工作,是教育部「中国大学生在线」创始团队成员,任技术负责人;后两次进入盛大,先后参与过盛大盒子与电子书项目;2012 年加入百姓网至今。可在 GitHub 上 @hax,或微博 @johnhax 与他交流。Hax 还是知乎的编程、前端开发、JavaScript、CSS 等话题的「优秀回答者」,可知乎 @贺师俊 向他提问。
编程语言既是开发工具,也是构成产品的原材料,以及软件开发者组织设计,表达思想的途径。编程语言的选择和运用,影响着软件开发者的生产、协作甚至思考方式。编程语言的发展,也是软件开发技术发展过程的一部分。了解编程语言的发展趋势,对我们是一件有意义且有趣的事。
本专题延续过去几届 QCon 的传统,继续聚焦编程语言的发展和业界实践。
过去 20 年,Java 一直是业界最重要的平台和语言。不久之前阿里集团发布了《阿里巴巴Java开发手册》,再次引起业界热议。本次我们请到该手册的作者亲自来介绍阿里内部对编程规范和团队效能的思考。
除了 Java 语言,在 JVM 平台上也涌现了大量其他语言如 Groovy、Scala、Clojure 等,而今年以来最引人注目的无疑是获得 Google“钦定”的 Kotlin。这次我们安排了连续两场 Kotlin 的话题,由来自饿了么和沪江的两位资深 Android 工程师为大家全方位呈现 Kotlin 的魅力。
Kotlin 除了 JVM 平台之外,也可以编译到 JavaScript —— 可编译到 JS 似乎已经成为新兴语言的标配。而 TypeScript 则是其中翘楚。仅仅增加静态类型,除此之外就是 JS,这听上去似乎并没有什么了不起。但是几年来 TS 稳步进化,其为适应 JS 而设计的类型系统在某些方面甚至已超越许多传统静态类型语言的表达能力。这次为我们带来 TS 发展进程介绍的工程师本人也是 TS 项目的活跃贡献者。
TS 的优秀与其微软血统不无关系。而一谈起微软,大家自然会想起著名的程序员组合“温赵轮”。本次 QCon 除了“温”(Winter 程劭非)担任前端专题出品人,我们也有幸请到旅居美国的“赵”(赵劼)在本专题为大家带来多年的 .NET 平台代码性能优化的经验。
尽管 Java、JavaScript 和 .NET 平台都非常优秀,但在系统编程领域,C++ 多年来一直是唯一选择,直到 Rust 的出现。著名的高性能分布式开源数据库 TiKV 就采用了 Rust。这次我们请到 PingCAP 首席架构师,介绍如何运用 Rust 新的异步 IO 设施 Futures 实现 TiKV 中的 gRPC 服务。
最后,在编程语言专题开始之前,C++ 之父 Bjarne Stroustrup 将带来主题演讲《未来的编程和C++的作用》,大家别忘了!
在服务端编程领域,通常我们会选择一个合适的 RPC 框架来统一处理各个服务的交互,而 Google 开源的 gRPC 因为其高效以及通用的特性,逐渐脱颖而出,成为了很多系统(包括 TiKV) 首选的 RPC 方案。
但 gRPC core 的实现是基于通用的异步 IO 模型,而异步编程模型会导致代码逻辑割裂,编写困难。
为了在 Rust 中提供 gRPC 支持,我们使用 Rust Futures,封装 gRPC core,让外面可以方便的使用同步模型实现自己的 gRPC 服务。
.NET 平台作为微软旗下的主力开发平台已经有 15 年的历史了。由于各种原因,似乎大部分的 .NET 程序员更多地在关注系统快速开发,而对产生的性能问题则忽略不计,直至攒下的技术债统一爆发,造成不可挽回的结果。本人有幸在过去几年中获得充分的机会对大量 .NET 代码进行观察,发现其中的性能问题,并进行有针对性的优化。趁此机会,想对过去几年内积攒下来的经验进行简单的总结。
一、介绍《阿里巴巴Java开发手册》背后的思考
当初为什么要写《阿里巴巴Java开发手册》(下称《手册》),为什么分成五个部分;为什么固执地把数据库、安全、异常日志、服务器纳入手册;为什么分成三个约束等级。在阿里巴巴内部引起的争议,以及推动统一规范的历程。
二、介绍《手册》的主要知识点
对各个部分进行简要讲解,尤其是在知乎、CSDN、微博引起热烈讨论的点。把我的认知与思考传递给大家。
三、介绍《手册》(届时已经开源的)插件
插件可以大大提升开发者遵守规则的热情,自动修复降低执行成本。
四、如何提升团队研发效能
从《手册》讲到研发效能,提升团队研发效能,就是要有效避免 XY 问题,基础规则的统一,以及如何保持持续执行力。
Kotlin 使我们可以编写更简洁明了的代码,大幅提升编码效率,但这是否牺牲了运行性能?
本次分享将带领听众一同对 kotlin 语言本身有系统的认知,自底向上的理解 kotlin 的语言特性和实现原理,从而理解 kotlin 是如何提升代码性能与开发效率的。
1. 对 kotlin 语言有系统的认知。
2. 理解 kotlin 的优势。
3. 掌握 kotlin 的语法与工具库的实现原理。
本次分享将介绍如何利用 Kotlin 去快速方便的构建 DSL,先介绍 Kotlin 在语言特性上做的特殊支持,然后了解 Kotlin 在构建 DSL 上的应用,最后结合实践阐述如何快速构建自己的 DSL。
1、了解 Kotlin 在 DSL 上的语言特性支持;
2、了解 Kotlin 在 DSL 上的应用;
3、在实践中了解 DSL 特性,与 kotlin 实现 DSL 的注意要点。
TypeScript 是在众多编译到 JavaScript 语言中的佼佼者。脱胎与成长在 JavaScript 工业界的 TypeScript 拥有一个独特的类型系统:既秉承了工业语言的易上手和不准确, 又拥有不亚于学术语言的强大和表现力。本次演讲便会剖析为何 TypeScript 会拥有如此独树一帜的类型系统。
在横向上,将会比较 TypeScript 与其他 AltJS 的异同,归纳出 TypeScript 的设计理念和语言特色。在纵向上,演讲会回顾 TypeScript 自 1.0 正式版到如今 2.4 版本中逐渐增加的特性,我们会看到 TypeScript 是如何慢慢进化出一套为 JavaScript 度身定制的类型系统。TS 的成功除了独特设计外也离不开她稳固的实现。我们会一同回顾 TS 逐步增加的语言功能:包括自动类型定义获取,语言服务插件,代码生成转换器等等。通过 TypeScript,我们能看到现代编程语言在设计与实现的些许经验。