<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          谷歌發(fā)布新編程語(yǔ)言,專治SQL各種不服

          共 2797字,需瀏覽 6分鐘

           ·

          2021-04-30 15:14

          豐色 發(fā)自 凹非寺

          量子位 報(bào)道 | 公眾號(hào) QbitAI


          天下苦SQL久矣。

          寫個(gè)查詢語(yǔ)句而已,動(dòng)不動(dòng)就上百行……

          不過(guò)谷歌新推出的這個(gè)邏輯編程語(yǔ)言,對(duì)于“SQL黨”來(lái)說(shuō)可謂是福音:

          專治SQL語(yǔ)句的冗長(zhǎng)和它不擅長(zhǎng)的抽象機(jī)制 (abstraction mechanisms)。

          它就是Logica

          (又有新語(yǔ)言了?“扶我起來(lái),還能學(xué)”)

          邏輯編程語(yǔ)言解決SQL的局限性

          谷歌為什么要推出這樣一門新的編程語(yǔ)言?

          有道是,“數(shù)據(jù)是新世紀(jì)的石油”。

          SQL作為處理數(shù)據(jù)的通用語(yǔ)言,因?yàn)樗谧匀徽Z(yǔ)言的設(shè)計(jì),好理解好入門,已流行了很多年,但,也并非完美無(wú)缺:

          •     沒(méi)有將邏輯分成小塊的設(shè)計(jì)

          •     沒(méi)有“模塊”和“導(dǎo)入”的概念

          •     更沒(méi)有高級(jí)點(diǎn)的構(gòu)造(例如函數(shù)間的傳遞)

          這就導(dǎo)致SQL對(duì)抽象的支持非常有限,就更不用說(shuō)還要去維護(hù)那動(dòng)輒上百行的語(yǔ)句了。

          有沒(méi)有好的解決方案呢?

          市面上開(kāi)發(fā)了很多可供大家選擇的數(shù)據(jù)庫(kù)查詢語(yǔ)言和相應(yīng)的庫(kù)。

          其中,邏輯編程語(yǔ)言最能解決SQL的局限性。

          邏輯編程語(yǔ)言Logica

          Logica就是這樣一門邏輯編程語(yǔ)言。

          何為邏輯編程?

          邏輯編程是種編程典范,它設(shè)定答案須符合的規(guī)則來(lái)解決問(wèn)題,而非設(shè)定步驟來(lái)解決問(wèn)題,過(guò)程是事實(shí)+規(guī)則=結(jié)果。

          Logica進(jìn)一步擴(kuò)展了經(jīng)典的邏輯編程語(yǔ)法,最顯著的是使用聚合,這也是這個(gè)名字的來(lái)源:Logic + Aggregation(聚合)。

          Logica繼承自Yedalog(早期谷歌開(kāi)發(fā)的一種語(yǔ)言),是一種類似數(shù)據(jù)日志(Datalog-like)的邏輯編程語(yǔ)言。Logica代碼可以編譯成SQL,可在谷歌BigQuery上運(yùn)行(也支持PostgreSQL和SQLite):

          •     支持SQL所缺乏的簡(jiǎn)潔和可重用的抽象機(jī)制

          •     支持模塊和導(dǎo)入

          •     甚至使測(cè)試查詢變得不再困難!

          到底好不好用,上手體現(xiàn)便知結(jié)果。

          下面是一個(gè)查找小于 30 的質(zhì)數(shù)的具體示例:

          # Define natural numbers from 1 to 29.
          N(x) :- x in Range(30);
          # Define primes.
          Prime(prime: x) :-
            N(x),
            x > 1,
            ~(
              N(y),
              y > 1,
              y != x,
              Mod(x, y) == 0
            );

          運(yùn)行結(jié)果:
          $ logica primes.l run Prime
          +-------+
          | prime |
          +-------+
          |     2 |
          |     3 |
          |     5 |
          |     7 |
          |    11 |
          |    13 |
          |    17 |
          |    19 |
          |    23 |
          |    29 |
          +-------+

          熱議:能否成為主流?

          谷歌工程師們鼓勵(lì)大家積極嘗試Logica。
          很多人很高興看到Google推出的這樣一門新的邏輯編程語(yǔ)言,但表示被主流采用還有很長(zhǎng)的路要走。
          正如很多網(wǎng)友都有一些質(zhì)疑:
          有人認(rèn)為L(zhǎng)ogica沒(méi)有真的做到轉(zhuǎn)SQL,只是用了作為虛擬機(jī)的解釋器動(dòng)態(tài)“翻譯”的。
          還有人覺(jué)得這不是通常意義的邏輯編程,僅僅搞了搞數(shù)據(jù)庫(kù)查詢。
          并且還會(huì)帶來(lái)依賴問(wèn)題。
          但他們都表示可能是對(duì)Logica了解得不夠深入。
          只有一個(gè)人的關(guān)注點(diǎn)是這個(gè)新編程語(yǔ)言的名字和一家公司撞名了
          最后,項(xiàng)目已開(kāi)源,參見(jiàn)鏈接[2]。有興趣(有頭發(fā)的)的朋友可以自己嘗試一下!

          參考鏈接:

          [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


          -END-


          PS:歡迎在留言區(qū)留下你的觀點(diǎn),一起討論提高。如果今天的文章讓你有新的啟發(fā),歡迎轉(zhuǎn)發(fā)分享給更多人。

          Java后端編程交流群已成立

          公眾號(hào)運(yùn)營(yíng)至今,離不開(kāi)小伙伴們的支持。為了給小伙伴們提供一個(gè)互相交流的平臺(tái),特地開(kāi)通了官方交流群。掃描下方二維碼備注 進(jìn)群 或者關(guān)注公眾號(hào) Java后端編程 后獲取進(jìn)群通道。


          —————END—————

          推薦閱讀:


          最近面試BAT,整理一份面試資料Java面試BAT通關(guān)手冊(cè),覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。
          獲取方式:關(guān)注公眾號(hào)并回復(fù) java 領(lǐng)取,更多內(nèi)容陸續(xù)奉上。
          明天見(jiàn)(??ω??)??
          瀏覽 49
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天堂а√在线中文在线新版 | 欧美深夜福利 | 久在线| 五月天久久婷婷 | 青青草成人在线免费观看 |