99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MetaCode ,可以用自然語(yǔ)言編程

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

掃碼添加小助手

加入工程師交流群

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

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

“真的非???,這個(gè)軟件叫MetaCode ,可以用自然語(yǔ)言編程,你看看!”

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

X語(yǔ)言:我在這兒-> 《當(dāng)世界上只剩下一個(gè)Java程序員

Z語(yǔ)言:我在這兒-> 《Z語(yǔ)言傳奇》

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

https://metacode.app/。

DSL

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

“啥是DSL?”

“就是領(lǐng)域特定語(yǔ)言(Domain Specific Language)“

“啥是領(lǐng)域?”

“領(lǐng)域...... 這個(gè)......” 這家伙把我問(wèn)住了。

“比如說(shuō),UI編程就是一個(gè)特定領(lǐng)域,Web自動(dòng)化測(cè)試也是個(gè)領(lǐng)域,還有些業(yè)務(wù)相關(guān)的,稅務(wù)邏輯處理,金融邏輯處理,都是特定的領(lǐng)域?!?我通過(guò)舉例做了一個(gè)解釋。

“那這個(gè)軟件就是針對(duì)UI編程領(lǐng)域的DSL嘍?”

“是的,你看這個(gè)軟件,當(dāng)你輸入 view controller #TestVC的時(shí)候,它就會(huì)生成一個(gè)名稱為T(mén)estVC的Controller類(lèi), 當(dāng)你輸入add stackview #stack constrained的時(shí)候,它就會(huì)自動(dòng)加上一個(gè)名稱為stack的View。注意這里的關(guān)鍵字,view, controller , add ,stackview,都是人家預(yù)先定義好的關(guān)鍵詞,還有那個(gè)#號(hào),你是不能亂來(lái)的?!?/p>

“有點(diǎn)明白了,也就是說(shuō),這個(gè)Metacode自定義了一個(gè)更加高層的語(yǔ)言,程序員可以用這個(gè)語(yǔ)言中的指令來(lái)寫(xiě)程序, 然后Metacode再把他們轉(zhuǎn)化成實(shí)際代碼?!?/p>

“對(duì)啊,就是這個(gè)意思,但是這個(gè)Metacode的DSL并不是一個(gè)通用的編程語(yǔ)言,你不能用它來(lái)做別的事情,你想想,你還用過(guò)哪些DSL?”

DSL案例

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

過(guò)了一會(huì)兒,張大胖的消息來(lái)了:“Ant算不算?”

“當(dāng)然算了,你看Ant中定義的任務(wù),專門(mén)是用來(lái)做Build的,你只要用XML描述一下Build的過(guò)程,根本不用寫(xiě)具體代碼, 所以它是Build領(lǐng)域的DSL?!?/p>

對(duì)類(lèi)進(jìn)行打包

把文件從一個(gè)地方復(fù)制到另外一個(gè)地方

運(yùn)行JUnit

...

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

“對(duì)啊,Maven充分利用了約定終于配置的思路, 簡(jiǎn)化了Ant中很多不必要的Task,只要你把目錄結(jié)構(gòu)安排好,Maven就能運(yùn)行?!?/p>

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

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

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

“Active Record是一種數(shù)據(jù)源架構(gòu)模式, 一個(gè)對(duì)象表示數(shù)據(jù)庫(kù)表的某一行數(shù)據(jù),這個(gè)對(duì)象不但有領(lǐng)域邏輯,還封裝了對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。想了解細(xì)節(jié)的話,可以看看Martin Fowler寫(xiě)的《企業(yè)應(yīng)用架構(gòu)模式》,這是一本很老,但是又很經(jīng)典的書(shū)了。”

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

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

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

“當(dāng)你這么寫(xiě)了以后,神奇的事情發(fā)生了,按照約定,RoR會(huì)得知在數(shù)據(jù)庫(kù)表中下圖所示的關(guān)系,然后你的Author類(lèi)突然擁有了很多有用的新方法?!?/p>

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

張大胖說(shuō):“果然是厲害,就通過(guò)has_many這么簡(jiǎn)簡(jiǎn)單單的一句話,框架就可以獲取這么多信息,自動(dòng)生成這么多代碼。RoR的ActiveRecord相當(dāng)于一個(gè)ORM領(lǐng)域的DSL,對(duì)吧?”

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

DSL的實(shí)現(xiàn)

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

“嗯,我下周上班了仔細(xì)考慮下, 可是如果想創(chuàng)建自己的DSL,該怎么辦啊?”

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

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

“還有一種辦法就是‘寄生’在別的語(yǔ)言中,利用別的語(yǔ)言(Ruby ,Python)的動(dòng)態(tài)特性,構(gòu)建你自己的語(yǔ)法,像剛才的has_many就是這么做的,這種方式叫做內(nèi)部DSL?!?/p>

"好麻煩!" 張大胖已經(jīng)開(kāi)始打退堂鼓了。

“這樣,你先看看一本書(shū)吧,也是Martin Fowler寫(xiě)的,名稱就叫做《領(lǐng)域特定語(yǔ)言》!”

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

    關(guān)注

    2

    文章

    61

    瀏覽量

    38707
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3926

    瀏覽量

    66203
  • 自然語(yǔ)言
    +關(guān)注

    關(guān)注

    1

    文章

    292

    瀏覽量

    13654

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

文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    自然語(yǔ)言提示原型在英特爾Vision大會(huì)上首次亮相

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

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

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

    如何使用自然語(yǔ)言處理分析文本數(shù)據(jù)

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

    自然語(yǔ)言處理與機(jī)器學(xué)習(xí)的關(guān)系 自然語(yǔ)言處理的基本概念及步驟

    自然語(yǔ)言處理(Natural Language Processing,簡(jiǎn)稱NLP)是人工智能和語(yǔ)言學(xué)領(lǐng)域的一個(gè)分支,它致力于研究如何讓計(jì)算機(jī)能夠理解、解釋和生成人類(lèi)語(yǔ)言。機(jī)器學(xué)習(xí)(Machine
    的頭像 發(fā)表于 12-05 15:21 ?1981次閱讀

    語(yǔ)音識(shí)別與自然語(yǔ)言處理的關(guān)系

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

    什么是LLM?LLM在自然語(yǔ)言處理中的應(yīng)用

    隨著人工智能技術(shù)的飛速發(fā)展,自然語(yǔ)言處理(NLP)領(lǐng)域迎來(lái)了革命性的進(jìn)步。其中,大型語(yǔ)言模型(LLM)的出現(xiàn),標(biāo)志著我們對(duì)語(yǔ)言理解能力的一次飛躍。LLM通過(guò)深度學(xué)習(xí)和海量數(shù)據(jù)訓(xùn)練,使得機(jī)器能夠以前
    的頭像 發(fā)表于 11-19 15:32 ?3643次閱讀

    ASR與自然語(yǔ)言處理的結(jié)合

    ASR(Automatic Speech Recognition,自動(dòng)語(yǔ)音識(shí)別)與自然語(yǔ)言處理(NLP)是人工智能領(lǐng)域的兩個(gè)重要分支,它們?cè)谠S多應(yīng)用中緊密結(jié)合,共同構(gòu)成了自然語(yǔ)言理解和生成的技術(shù)體系
    的頭像 發(fā)表于 11-18 15:19 ?1025次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)在自然語(yǔ)言處理中的應(yīng)用

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

    循環(huán)神經(jīng)網(wǎng)絡(luò)在自然語(yǔ)言處理中的應(yīng)用

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

    使用LSTM神經(jīng)網(wǎng)絡(luò)處理自然語(yǔ)言處理任務(wù)

    自然語(yǔ)言處理(NLP)是人工智能領(lǐng)域的一個(gè)重要分支,它旨在使計(jì)算機(jī)能夠理解、解釋和生成人類(lèi)語(yǔ)言。隨著深度學(xué)習(xí)技術(shù)的發(fā)展,特別是循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)及其變體——長(zhǎng)短期記憶(LSTM)網(wǎng)絡(luò)的出現(xiàn)
    的頭像 發(fā)表于 11-13 09:56 ?1158次閱讀

    自然語(yǔ)言處理的未來(lái)發(fā)展趨勢(shì)

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

    自然語(yǔ)言處理與機(jī)器學(xué)習(xí)的區(qū)別

    在人工智能的快速發(fā)展中,自然語(yǔ)言處理(NLP)和機(jī)器學(xué)習(xí)(ML)成為了兩個(gè)核心的研究領(lǐng)域。它們都致力于解決復(fù)雜的問(wèn)題,但側(cè)重點(diǎn)和應(yīng)用場(chǎng)景有所不同。 1. 自然語(yǔ)言處理(NLP) 定義: 自然語(yǔ)言處理
    的頭像 發(fā)表于 11-11 10:35 ?1541次閱讀

    自然語(yǔ)言處理的應(yīng)用實(shí)例

    在當(dāng)今數(shù)字化時(shí)代,自然語(yǔ)言處理(NLP)技術(shù)已經(jīng)成為我們?nèi)粘I畹囊徊糠?。從智能手機(jī)的語(yǔ)音助手到在線客服機(jī)器人,NLP技術(shù)的應(yīng)用無(wú)處不在。 1. 語(yǔ)音識(shí)別與虛擬助手 隨著Siri、Google
    的頭像 發(fā)表于 11-11 10:31 ?1608次閱讀

    使用LLM進(jìn)行自然語(yǔ)言處理的優(yōu)缺點(diǎn)

    自然語(yǔ)言處理(NLP)是人工智能和語(yǔ)言學(xué)領(lǐng)域的一個(gè)分支,它致力于使計(jì)算機(jī)能夠理解、解釋和生成人類(lèi)語(yǔ)言。大型語(yǔ)言模型(LLM)是NLP領(lǐng)域的一項(xiàng)重要技術(shù),它們通過(guò)深度學(xué)習(xí)和大量的數(shù)據(jù)訓(xùn)練
    的頭像 發(fā)表于 11-08 09:27 ?2443次閱讀

    AI智能化問(wèn)答:自然語(yǔ)言處理技術(shù)的重要應(yīng)用

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