“语言设计在此刻复兴,而设计新语言的最大理由是,现有的主流语言不能解决人们想要解决的问题。”——Go 语言共同设计师罗布·派克
近两年,新语言 Golang 和 Swift 红极一时,Scala、Colujre 等语言也在稳步发展,业内期待很久的 Rust 终于发布了 1.0 。而长久以来举足轻重的主流开发语言 PHP 和 C++,也都在这个时期发布了新的版本。这些新语言或新的版本,与上一代的流行技术相比,普遍提高了在并发模型、类型确定性、类型推导、类型安全、工程支持等方面的工程效率。
这些进步和发展,并非凭空而来。它们的发展和变化,有迹可循。为此, QCon 上海 2015 设置了《新语言与新发展》专题,希望邀请业界专家分享一些编程语言方面的经验,供大家参考。本专题非常荣幸邀请到了云游道 CTO刘鑫担任出品人。
刘鑫,互联网旅游行业的创业者。是 Python Tutorial 多个版本的译者。两届 PostgreSQL 中国用户大会的演讲嘉宾。目前定居珠海,是云游道( http://tratao.com )CTO。目前专注于建设智能的在线旅游平台。团队在使用且不限于 PostgreSQL 、 Golang、Swift、Rust 等工具,并且开源了包括 parsec for golang/swift/rust 等项目。积极地学习和运用新技术,使得我们拥有更好的生产效率,可以为用户提供更优质的服务。
下面我们就来看看本主题都设置了哪些话题,并请刘鑫分享一下他对几种新语言的看法。
演讲嘉宾:何婧誉(Loretta) Swiftkey 软件/ 自然语言工程师
Lisp 已然到了年近半百的年纪,与如今世界上的大多主流语言相比是近乎爷爷辈的。在这个技术越发日新月异的年代,为什么我们中的一些人对 Lisp 这门古老的艺术仍旧情有独钟?
当今大数据是技术领域中最为时髦的名词之一,我们中越来越多的技术人员开始接触数据(流)处理,进而发现程序中副作用的麻烦之处。而这也催生了很多新兴的函数语言,这其中就包括 Lisp 家族的最新成员之一 Clojure。
本次演讲将包括:
- 为什么用 Lisp?
- 为什么用 JVM?
- Clojure 的三简主义–简洁,简便,简单
- core.async - clojure 式并行
- 什么是 transducers?
- 现实世界中的应用
出品人有话说:
Java 本身是最流行的语言之一,其影响力毋庸置疑。如果仅仅是关于 Java 或 JVM 的介绍,那么有关讨论已经太多太多了。所以我这次组织语言话题的时候,希望能有一些关于 Java 平台上的“非主流”语言,或者 JVM/Java 语言本身的新特性的讲座。Clojure 可以说是在语法上跟 Java 非常互补的一门编程语言,又因为都运行在 Java 平台上,有非常好的融合性。在我看来这是一个非常值得推荐给 Java 工程师的好东西。
Loretta 老师虽然年轻,但是她用 Clojure 做过一些非常厉害的工作,包括高盛这样的金融机构的在线交易系统。她现在就职于 Swiftkey 这样的在 Android 领域非常有特色的企业。想了解更多 Clojure 就来 QCon 和 Lo 姐讨论吧。
演讲嘉宾:张淞 《Haskell 函数式编程入门》作者
Haskell 中的主要概念其实都是围绕类型展开的,类型系统主要是为我们管理程序的抽象与保证程序的正确性而引入的。为了更好的复用代码,于是有了多态类型。某些类型有着共同的属性于是 Haskell 引入了类型类来管理它们。有一些类型是需要接受一个或者多个类型参数的,为了保证这一环节不会出错于是 Haskell 又引入了 kind 这一概念,同样出于复用代码的原因,Haskell 又引入了 kind 多态。总之,抽象在一步一步加深,每加深一步就总结出更多公共的代码,为我们自动完成更多的事情,带来的问题就是会让人更加难以理解。所以了解 Haskell 的类型系统对于我们理解代码的复用、抽象非常有帮助。所以本次的演讲主要包括:
- Haskell 中的值
- Haskell 中的类型
- Haskell 中的类型类
- Haskell 中的类型的 kind
- 以上特性之应用
Haskell 不仅仅是一门学术型的语言,而是一门非常适用于编写应用软件的工程型语言,其实相当多的思想是可以迁移到非函数式语言上的。
出品人有话说:
这里我主要想谈谈 Haskell 在三个方面对生产力的提升帮助。
首先是对人的训练,这个是我亲身的体会。Haskell 在学术性的语言中属于整个体系比较严格,比较理想化的技术,在学习 Haskell 的过程中,我从一个与既往非常不同的角度去审视编程的方法和解决问题的方式,找到了很多简化问题,抽象出通用工具的路子。
第二个是 Haskell 中一些强有力的工具,移植到其他语言后,也可以发挥非常大的作用。例如我创业以来,将 Haskell 的 parsec 库移植到了我们团队使用的各种编程语言中,当我们处理一些文本和消息序列的解析功能时,可能用正则表达式已经显得比较繁琐,但是用传统的编译器构建工具来实现一个解释器,对于我们小团队是比较难承受的挑战,用 parsec 就非常合适。
再例如 Haskell 本身,在一些高端的软件工程领域,就是非常高的工具,最近 Facebook 就开始用 Haskell 构建他们新一代的反垃圾邮件系统,还有华尔街有金融企业用 Haskell 编写交易系统。在这些强调工程可靠性,强调对信息处理规则的构建的场合,就显得雇佣一些高价的 Haskell 专家也很值得了。
演讲嘉宾:林喆 芒果 TV 系统工程师
作为系统层程序设计中重要语言之一的 C++ 在新千年里的第二个十年里终于发布了 C++11 标准,其中许多对旧标准的改革和全新的特性也全面被各路编译器实现,等待工程师们来使用,本次演讲将围绕以下内容来重点介绍一些特性和库:
- 右值引用和转移语义
- lambda 与 std::function
- 泛型函数的返回值推导
- 多线程
选取以上这些内容的依据是,它们全部在 redis-cerberus 项目中实际用到,避免空谈新特性,使得演讲变成枯燥的授课。项目当时使用 C++11 是因为那是 C++11 是比较新但是足够成熟,C++14 尚未有编译器实现。
出品人有话说:
C++ 这个语言本身非常重要,在产业界的影响力已经不需要我去宣传了,我是觉得在一个介绍编程语言的专题里,这样重要的一种技术不应该缺席。
我自己也曾经是专职的 C++ 程序员,C++ 在产业界的应用中有一个问题是,很多企业不敢更新版本,十年十几年用一个“稳定版”,导致一些本来可以使用新版语言和编译器解决问题、提升生产力的机会就错过了。所以我希望有成功经验的专家出来介绍一下新特性的好处。
4.《探索 Python 3.5 中 async/await 特性的实现》
演讲嘉宾:赖勇浩 广州齐昌网络科技有限公司总经理
在与陈儒先生合作把他广获赞誉的佳作《Python 源码剖析》迁移到 Python 3 的过程中,Python 3.5 发布了它的第一个 beta 版本,而 async/await 搭上最后的这班车,也让 3.5 版本备显豪华。这个特性使得 Python 具备语法级别的协程支持,也让它有了更容易理解和交流的异步编程模型。那么,这个特性在虚拟机里是如何实现的呢?是否用了什么很特别的机制?跟之前的 yield/yield from 有何异同?我觉得有必要在书中加入这一章节,更期望在该书新版上市之前跟大家分享。
出品人有话说:
Python 传统上是一个比较“简单”的语言,这次 Python3.5 引入了 async/await 关键字,可以说是史无前例的一步。在过去,异步通常是要通过第三方库来实现。内置异步模型,并且在语法上提供支持,这在以前是从来没有出现过的。在我看来,这表现除了社区对技术发展的关注,是一种进步。
另外,七牛云存储 CEO许式伟还将分享Go 语言的新特性与最佳实践,微软亚洲研究院的施凡 ( @装配脑袋) 也将带来精彩分享。更多精彩,尽在现场。
感谢臧秀涛对本文的审校。
评论