Facebook 开源 Skip,面向对象+函数式编程语言

e8国际娱乐平台

2018-10-11

近日,Facebook开源了全新语言Skip,这是Facebook内部开发的一个实验性质编程语言,Facebook表示,Skip项目于2018年完成,今后将不再积极开发。 Skip的官方一句话介绍是跳过那些你已经做过计算的(skipthethingsyouhavealreadycomputed),这也就是它作为一个研究项目的主要目标,它要探索编程语言和运行时可以怎样去支持准确、高效的基于记忆的缓存和缓存失效。

而通过静态类型系统追踪可变性,Skip完成了这个目标,同时它也支持现代编程语言特征,例如trait、泛型与子类型。 Skip是一种通用编程语言,它跟踪副作用,提供反应失效的缓存、ergonomics和安全的并行化以及高效的GC。 Skip是静态类型的,它使用LLVM提前编译,生成高度优化的可执行文件。

具体特点如下:反应失效的缓存Skip主要的新特性是精准跟踪副作用,包括值的可变性和非确定性数据源与能够提供反应失效的数据源之间的区别。 Skip的类型系统能够证明给定函数边界没有副作用,这样开发人员可以选择安全地记忆该计算,并在运行时确保底层数据发生变化时,之前缓存的值是无效的。 Skip支持两种互补的并发编程,由于它跟踪副作用,这两种编程都避免了常见的线程安全问题。

首先,Skip支持使用async/await语法进行ergonomic异步计算。 由于Skip跟踪副作用,异步计算不能引用可变状态,因此可以安全地并行执行。 其次,Skip有可用于直接并行计算的API,同样利用其追踪副作用的特型来避免线程安全问题,如共享对可变状态的访问。 高效和可预测的GCSkip使用一种新方法进行内存管理,结合了典型的垃圾回收特性和更直接的线性分配模式。 由于Skip追踪副作用,垃圾回收器仅需要扫描从底层计算处可访问的内存,在实践中这意味着开发者能够使用可预测GC写代码。 混合函数式与面向对象语言的特点Skip的一大特点是混合了函数式与面向对象编程语言的特点,将两者有机整合成了一种紧密结合的语言。 与函数式语言类似,Skip表达能力强,支持抽象的数据类型、模式匹配、简单的lambda和高阶函数等;另一方面,与命令式面向对象的语言相似,Skip支持可继承的类、可变对象、循环和提前返回。

Skip还结合了系统语言的思想,以支持低开销抽象、通过值类的紧凑内存布局,以及确保利用静态方法分派实现代码特例化的模式。

具体细节请查阅官方:http:///Skip由经验丰富的团队设计,包括ActionScript、C#、Flow、Hack、HHVM、Prettier、ReactNative和Relay的高级贡献者,从2015年到2018年,Facebook花了3年在这个项目上,该语言的主要设计者是Facebook语言团队负责人JulienVerlaguet,他维护了该语言、编译器与库。 如今Facebook宣布不再积极开发,但是通过开源的方式,希望让Skip继续保持活力,让编程语言研究社区在语言设计与实现、编译器和库的基础上进行研究和构建。 GitHub:https:///skiplang/skip【编辑推荐】【责任编辑:TEL:(010)68476606】。