一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MetaCode ,可以用自然語言編程

WpOh_rgznai100 ? 來源:lq ? 2019-07-18 11:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

周六晚上10點半, 張大胖興沖沖地在微信上找我:“欣哥,我發(fā)現(xiàn)一個編程軟件,非常酷!”

我:“別煩我!我忙著追劇呢?!?/p>

“真的非??幔@個軟件叫MetaCode ,可以用自然語言編程,你看看!”

自然語言編程?難道我之前故事中杜撰的X語言,Z語言真的實現(xiàn)了?

X語言:我在這兒-> 《當世界上只剩下一個Java程序員

Z語言:我在這兒-> 《Z語言傳奇》

我放下了《破冰行動》,打開了張大胖發(fā)給我的連接:

https://metacode.app/。

DSL

看了一分鐘,不僅啞然失笑:“大胖,這哪里是自然語言編程?分明是DSL編程!”

“啥是DSL?”

“就是領域特定語言(Domain Specific Language)“

“啥是領域?”

“領域...... 這個......” 這家伙把我問住了。

“比如說,UI編程就是一個特定領域,Web自動化測試也是個領域,還有些業(yè)務相關的,稅務邏輯處理,金融邏輯處理,都是特定的領域?!?我通過舉例做了一個解釋。

“那這個軟件就是針對UI編程領域的DSL嘍?”

“是的,你看這個軟件,當你輸入 view controller #TestVC的時候,它就會生成一個名稱為TestVC的Controller類, 當你輸入add stackview #stack constrained的時候,它就會自動加上一個名稱為stack的View。注意這里的關鍵字,view, controller , add ,stackview,都是人家預先定義好的關鍵詞,還有那個#號,你是不能亂來的?!?/p>

“有點明白了,也就是說,這個Metacode自定義了一個更加高層的語言,程序員可以用這個語言中的指令來寫程序, 然后Metacode再把他們轉化成實際代碼。”

“對啊,就是這個意思,但是這個Metacode的DSL并不是一個通用的編程語言,你不能用它來做別的事情,你想想,你還用過哪些DSL?”

DSL案例

我看到張大胖的微信一直顯示“正在輸入”, 又撿起了破冰行動。

過了一會兒,張大胖的消息來了:“Ant算不算?”

“當然算了,你看Ant中定義的任務,專門是用來做Build的,你只要用XML描述一下Build的過程,根本不用寫具體代碼, 所以它是Build領域的DSL?!?/p>

對類進行打包

把文件從一個地方復制到另外一個地方

運行JUnit

...

“照欣哥這么說, Maven也算是DSL嘍?”

“對啊,Maven充分利用了約定終于配置的思路, 簡化了Ant中很多不必要的Task,只要你把目錄結構安排好,Maven就能運行?!?/p>

“還有哪些知名的DSL?” 張大胖繼續(xù)問。

“Ruby on Rails(簡稱)中的Active Record是DSL的一個典型?!?/p>

“又一個新詞!什么是Active Record? ” 隔著屏幕,我都能感受到張大胖有點兒不滿。

“Active Record是一種數據源架構模式, 一個對象表示數據庫表的某一行數據,這個對象不但有領域邏輯,還封裝了對數據庫的訪問。想了解細節(jié)的話,可以看看Martin Fowler寫的《企業(yè)應用架構模式》,這是一本很老,但是又很經典的書了。”

“那RoR是怎么用DSL來實現(xiàn)Active Record的?”

“舉個例子,你有兩個業(yè)務相關的類,一個是Author, 另外一個是Book, 現(xiàn)在你想把他們之間建立關聯(lián), 也就是說一個作者可以有多本書,DSL可以這么寫:”

class Author < ApplicationRecord has_many :books, dependent: :destroyend

“當你這么寫了以后,神奇的事情發(fā)生了,按照約定,RoR會得知在數據庫表中下圖所示的關系,然后你的Author類突然擁有了很多有用的新方法?!?/p>

#創(chuàng)建一個Author對象author = Author.new(name: "Andy")#創(chuàng)建一個Book對象,這個對象和Author是關聯(lián)的book = author.books.create(title: "xxxx")#刪除這個Author,注意,所有相關的Book也會刪除author.destroy

張大胖說:“果然是厲害,就通過has_many這么簡簡單單的一句話,框架就可以獲取這么多信息,自動生成這么多代碼。RoR的ActiveRecord相當于一個ORM領域的DSL,對吧?”

“可以這么說,你看,這DSL是不是很有用,可以讓我們拋棄細節(jié),在一個更高的層面的編程,能極大地提升編程的效率。RoR剛誕生的時候,號稱比Java編程快10倍呢!”

DSL的實現(xiàn)

“對了,你也可以發(fā)掘下你工作的領域,看看有沒有可能創(chuàng)建一個屬于自己的DSL。但是我必須得提醒你,不能為了DSL而DSL?!?/p>

“嗯,我下周上班了仔細考慮下, 可是如果想創(chuàng)建自己的DSL,該怎么辦?。俊?/p>

“因為DSL本質上是一個語言,所以你首先的定義自己的語法,然后再考慮怎么實現(xiàn)這個語法, 一種辦法是你用Lex,YACC,ANTLR等工具自己把這個語言給實現(xiàn)了,這叫外部DSL。”

“自己實現(xiàn)語言?這太難了!”

“還有一種辦法就是‘寄生’在別的語言中,利用別的語言(Ruby ,Python)的動態(tài)特性,構建你自己的語法,像剛才的has_many就是這么做的,這種方式叫做內部DSL。”

"好麻煩!" 張大胖已經開始打退堂鼓了。

“這樣,你先看看一本書吧,也是Martin Fowler寫的,名稱就叫做《領域特定語言》!”

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • DSL
    DSL
    +關注

    關注

    2

    文章

    61

    瀏覽量

    38710
  • 數據庫
    +關注

    關注

    7

    文章

    3927

    瀏覽量

    66237
  • 自然語言
    +關注

    關注

    1

    文章

    292

    瀏覽量

    13656

原文標題:我發(fā)現(xiàn)了一個非??岬能浖?,用自然語言編程!

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    自然語言提示原型在英特爾Vision大會上首次亮相

    在英特爾Vision大會上,Network Optix首次展示了自然語言提示原型,該方案將重新定義視頻管理,為各行各業(yè)由AI驅動的洞察和效率提速。
    的頭像 發(fā)表于 04-09 09:30 ?419次閱讀

    如何優(yōu)化自然語言處理模型的性能

    優(yōu)化自然語言處理(NLP)模型的性能是一個多方面的任務,涉及數據預處理、特征工程、模型選擇、模型調參、模型集成與融合等多個環(huán)節(jié)。以下是一些具體的優(yōu)化策略: 一、數據預處理優(yōu)化 文本清洗 :去除文本中
    的頭像 發(fā)表于 12-05 15:30 ?1704次閱讀

    如何使用自然語言處理分析文本數據

    使用自然語言處理(NLP)分析文本數據是一個復雜但系統(tǒng)的過程,涉及多個步驟和技術。以下是一個基本的流程,幫助你理解如何使用NLP來分析文本數據: 1. 數據收集 收集文本數據 :從各種來源(如社交
    的頭像 發(fā)表于 12-05 15:27 ?1582次閱讀

    自然語言處理與機器學習的關系 自然語言處理的基本概念及步驟

    自然語言處理(Natural Language Processing,簡稱NLP)是人工智能和語言學領域的一個分支,它致力于研究如何讓計算機能夠理解、解釋和生成人類語言。機器學習(Machine
    的頭像 發(fā)表于 12-05 15:21 ?1987次閱讀

    語音識別與自然語言處理的關系

    在人工智能的快速發(fā)展中,語音識別和自然語言處理(NLP)成為了兩個重要的技術支柱。語音識別技術使得機器能夠理解人類的語音,而自然語言處理則讓機器能夠理解、解釋和生成人類語言。這兩項技術共同推動
    的頭像 發(fā)表于 11-26 09:21 ?1506次閱讀

    什么是LLM?LLM在自然語言處理中的應用

    隨著人工智能技術的飛速發(fā)展,自然語言處理(NLP)領域迎來了革命性的進步。其中,大型語言模型(LLM)的出現(xiàn),標志著我們對語言理解能力的一次飛躍。LLM通過深度學習和海量數據訓練,使得機器能夠以前
    的頭像 發(fā)表于 11-19 15:32 ?3657次閱讀

    ASR與自然語言處理的結合

    ASR(Automatic Speech Recognition,自動語音識別)與自然語言處理(NLP)是人工智能領域的兩個重要分支,它們在許多應用中緊密結合,共同構成了自然語言理解和生成的技術體系
    的頭像 發(fā)表于 11-18 15:19 ?1026次閱讀

    卷積神經網絡在自然語言處理中的應用

    。 卷積神經網絡的基本原理 卷積神經網絡是一種前饋神經網絡,它通過卷積層來提取輸入數據的特征。在圖像處理中,卷積層能夠捕捉局部特征,如邊緣和紋理。在自然語言處理中,我們可以將文本視為一個序列,其中每個詞或字符可以
    的頭像 發(fā)表于 11-15 14:58 ?807次閱讀

    循環(huán)神經網絡在自然語言處理中的應用

    自然語言處理(NLP)是人工智能領域的一個重要分支,它致力于使計算機能夠理解、解釋和生成人類語言。隨著深度學習技術的發(fā)展,循環(huán)神經網絡(RNN)因其在處理序列數據方面的優(yōu)勢而在NLP中扮演了重要
    的頭像 發(fā)表于 11-15 09:41 ?816次閱讀

    使用LSTM神經網絡處理自然語言處理任務

    自然語言處理(NLP)是人工智能領域的一個重要分支,它旨在使計算機能夠理解、解釋和生成人類語言。隨著深度學習技術的發(fā)展,特別是循環(huán)神經網絡(RNN)及其變體——長短期記憶(LSTM)網絡的出現(xiàn)
    的頭像 發(fā)表于 11-13 09:56 ?1161次閱讀

    自然語言處理的未來發(fā)展趨勢

    隨著技術的進步,自然語言處理(NLP)已經成為人工智能領域的一個重要分支。NLP的目標是使計算機能夠理解、解釋和生成人類語言,這不僅涉及到語言的表層形式,還包括語言的深層含義。隨著大數
    的頭像 發(fā)表于 11-11 10:37 ?1727次閱讀

    自然語言處理與機器學習的區(qū)別

    在人工智能的快速發(fā)展中,自然語言處理(NLP)和機器學習(ML)成為了兩個核心的研究領域。它們都致力于解決復雜的問題,但側重點和應用場景有所不同。 1. 自然語言處理(NLP) 定義: 自然語言處理
    的頭像 發(fā)表于 11-11 10:35 ?1551次閱讀

    自然語言處理的應用實例

    在當今數字化時代,自然語言處理(NLP)技術已經成為我們日常生活的一部分。從智能手機的語音助手到在線客服機器人,NLP技術的應用無處不在。 1. 語音識別與虛擬助手 隨著Siri、Google
    的頭像 發(fā)表于 11-11 10:31 ?1611次閱讀

    使用LLM進行自然語言處理的優(yōu)缺點

    自然語言處理(NLP)是人工智能和語言學領域的一個分支,它致力于使計算機能夠理解、解釋和生成人類語言。大型語言模型(LLM)是NLP領域的一項重要技術,它們通過深度學習和大量的數據訓練
    的頭像 發(fā)表于 11-08 09:27 ?2458次閱讀

    AI智能化問答:自然語言處理技術的重要應用

    自然語言處理(NLP)是人工智能領域的一個重要分支,它致力于使計算機能夠理解、解釋和生成人類語言。問答系統(tǒng)作為NLP的一個重要應用,能夠精確地解析用戶以自然語言提出的問題,并從包含豐富信息的異構
    的頭像 發(fā)表于 10-12 10:58 ?1096次閱讀
    AI智能化問答:<b class='flag-5'>自然語言</b>處理技術的重要應用