Facebook 开源 Skip,面向对象+函数式编程语言
開(kāi)發(fā)四年只會(huì)寫業(yè)務(wù)代碼,分布式高并發(fā)都不會(huì)還做程序員???
近日,Facebook 開(kāi)源了全新語(yǔ)言 Skip,這是 Facebook 內(nèi)部開(kāi)發(fā)的一個(gè)實(shí)驗(yàn)性質(zhì)編程語(yǔ)言,Facebook 表示,Skip 項(xiàng)目于 2018 年完成,今后將不再積極開(kāi)發(fā)。
Skip 的官方一句話介紹是“跳過(guò)那些你已經(jīng)做過(guò)計(jì)算的”(skip the things you have already computed),這也就是它作為一個(gè)研究項(xiàng)目的主要目標(biāo),它要探索編程語(yǔ)言和運(yùn)行時(shí)可以怎樣去支持準(zhǔn)確、高效的基于記憶的緩存和緩存失效。而通過(guò)靜態(tài)類型系統(tǒng)追蹤可變性,Skip 完成了這個(gè)目標(biāo),同時(shí)它也支持現(xiàn)代編程語(yǔ)言特征,例如 trait、泛型與子類型。
Skip 是一種通用編程語(yǔ)言,它跟蹤副作用,提供反應(yīng)失效的緩存、ergonomics?和安全的并行化以及高效的 GC。Skip 是靜態(tài)類型的,它使用 LLVM 提前編譯,生成高度優(yōu)化的可執(zhí)行文件。具體特點(diǎn)如下:
反應(yīng)失效的緩存
Skip 主要的新特性是精準(zhǔn)跟蹤副作用,包括值的可變性和非確定性數(shù)據(jù)源與能夠提供反應(yīng)失效的數(shù)據(jù)源之間的區(qū)別。Skip 的類型系統(tǒng)能夠證明給定函數(shù)邊界沒(méi)有副作用,這樣開(kāi)發(fā)人員可以選擇安全地記憶該計(jì)算,并在運(yùn)行時(shí)確保底層數(shù)據(jù)發(fā)生變化時(shí),之前緩存的值是無(wú)效的。
Skip 支持兩種互補(bǔ)的并發(fā)編程,由于它跟蹤副作用,這兩種編程都避免了常見(jiàn)的線程安全問(wèn)題。首先,Skip 支持使用 async/await 語(yǔ)法進(jìn)行?ergonomic 異步計(jì)算。由于 Skip 跟蹤副作用,異步計(jì)算不能引用可變狀態(tài),因此可以安全地并行執(zhí)行。其次,Skip 有可用于直接并行計(jì)算的 API,同樣利用其追蹤副作用的特型來(lái)避免線程安全問(wèn)題,如共享對(duì)可變狀態(tài)的訪問(wèn)。
高效和可預(yù)測(cè)的 GC
Skip 使用一種新方法進(jìn)行內(nèi)存管理,結(jié)合了典型的垃圾回收特性和更直接的線性分配模式。由于 Skip 追蹤副作用,垃圾回收器僅需要掃描從底層計(jì)算處可訪問(wèn)的內(nèi)存,在實(shí)踐中這意味著開(kāi)發(fā)者能夠使用可預(yù)測(cè) GC 寫代碼。
混合函數(shù)式與面向?qū)ο笳Z(yǔ)言的特點(diǎn)
Skip 的一大特點(diǎn)是混合了函數(shù)式與面向?qū)ο缶幊陶Z(yǔ)言的特點(diǎn),將兩者有機(jī)整合成了一種緊密結(jié)合的語(yǔ)言。與函數(shù)式語(yǔ)言類似,Skip 表達(dá)能力強(qiáng),支持抽象的數(shù)據(jù)類型、模式匹配、簡(jiǎn)單的 lambda 和高階函數(shù)等;另一方面,與命令式面向?qū)ο蟮恼Z(yǔ)言相似,Skip 支持可繼承的類、可變對(duì)象、循環(huán)和提前返回。Skip 還結(jié)合了“系統(tǒng)”語(yǔ)言的思想,以支持低開(kāi)銷抽象、通過(guò)值類的緊湊內(nèi)存布局,以及確保利用靜態(tài)方法分派實(shí)現(xiàn)代碼特例化的模式。
具體細(xì)節(jié)請(qǐng)查閱官方:http://www.skiplang.com/
Skip 由經(jīng)驗(yàn)豐富的團(tuán)隊(duì)設(shè)計(jì),包括 ActionScript、C#、Flow、Hack、HHVM、Prettier、React Native 和 Relay 的高級(jí)貢獻(xiàn)者,從 2015 年到 2018 年,Facebook 花了 3 年在這個(gè)項(xiàng)目上,該語(yǔ)言的主要設(shè)計(jì)者是 Facebook 語(yǔ)言團(tuán)隊(duì)負(fù)責(zé)人 Julien Verlaguet,他維護(hù)了該語(yǔ)言、編譯器與庫(kù)。如今 Facebook 宣布不再積極開(kāi)發(fā),但是通過(guò)開(kāi)源的方式,希望讓 Skip 繼續(xù)保持活力,讓編程語(yǔ)言研究社區(qū)在語(yǔ)言設(shè)計(jì)與實(shí)現(xiàn)、編譯器和庫(kù)的基礎(chǔ)上進(jìn)行研究和構(gòu)建。
GitHub:https://github.com/skiplang/skip
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Facebook 开源 Skip,面向对象+函数式编程语言的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: bzoj 3489 A simple r
- 下一篇: 易校园怎么用