愛伊米

谷歌釋出新程式語言,專治SQL各種“不服”

豐色 發自 凹非寺

天下苦

SQL

久矣。

寫個查詢語句而已,動不動就

上百行

……

不過谷歌新推出的這個

邏輯程式設計

語言,對於“SQL黨”來說可謂是福音:

專治SQL語句的

冗長

和它不擅長的

抽象機制

(abstraction mechanisms)。

它就是

Logica

(又有新語言了?“扶我起來,還能學”)

邏輯程式語言解決SQL的侷限性

谷歌為什麼要推出這樣一門新的程式語言?

有道是,“資料是新世紀的石油”。

SQL作為處理資料的通用語言,因為它基於自然語言的設計,好理解好入門,已流行了很多年,但,也並非完美無缺:

沒有將邏輯分成小塊的設計

沒有“模組”和“匯入”的概念

更沒有高階點的構造(例如函式間的傳遞)

這就導致SQL對抽象的支援非常有限,就更不用說還要去維護那動輒上百行的語句了。

有沒有好的解決方案呢?

市面上開發了很多可供大家選擇的資料庫查詢語言和相應的庫。

其中,

邏輯程式語言最能解決SQL的侷限性。

邏輯程式語言Logica

Logica就是這樣一門邏輯程式語言。

何為邏輯程式設計?

邏輯程式設計是種程式設計典範,它設定答案須符合的規則來解決問題,而非設定步驟來解決問題,過程是事實+規則=結果。

Logica進一步擴充套件了經典的邏輯程式設計語法,最顯著的是使用聚合,這也是這個名字的來源:

Logic + Aggregation

(聚合)。

Logica繼承自Yedalog(早期谷歌開發的一種語言),是一種類似資料日誌(Datalog-like)的邏輯程式語言。

Logica程式碼可以編譯成SQL

,可在谷歌BigQuery上執行(也支援PostgreSQL和SQLite):

支援SQL所缺乏的

簡潔和可重用的抽象機制

支援模組和匯入

甚至使測試查詢變得不再困難!

到底好不好用,上手體現便知結果。

下面是一個

查詢小於 30 的質數

的具體示例:

執行結果:

熱議:能否成為主流?

谷歌工程師們鼓勵大家積極嘗試Logica。

很多人很高興看到Google推出的這樣一門新的邏輯程式語言,但表示被主流採用還有很長的路要走。

正如很多網友都有一些質疑:

有人認為Logica沒有真的做到轉SQL,只是用了作為虛擬機器的直譯器動態“翻譯”的。

還有人覺得這不是通常意義的邏輯程式設計,僅僅搞了搞資料庫查詢。

並且還會帶來依賴問題。

但他們都表示可能是對Logica瞭解得不夠深入。

只有一個人的關注點是這個新程式語言的名字和一家公司撞名了

最後,專案已開源,參見連結[2]。有興趣(有頭髮的)的朋友可以自己嘗試一下!

參考連結:

[1]https://opensource。googleblog。com/2021/04/logica-organizing-your-data-queries。html

[2]https://github。com/EvgSkv/logica

[3]https://news。ycombinator。com/item?id=26805121

[4]https://www。163。com/dy/article/G7GCQN3G0511FQO9。html

微軟於年初推出了自己的Python教程,我們將其漢化提供給大家,歡迎大家收藏關注哦~(已經漢化完成的20集,我們日更1集,未完成部分我們儘快更新)