色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

MetaCode ,可以用自然語言編程

WpOh_rgznai100 ? 來源:lq ? 2019-07-18 11:27 ? 次閱讀

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

我:“別煩我!我忙著追劇呢。”

“真的非常酷,這個軟件叫MetaCode ,可以用自然語言編程,你看看!”

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

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

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

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

https://metacode.app/。

DSL

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

“啥是DSL?”

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

“啥是領域?”

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

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

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

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

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

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

DSL案例

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

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

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

對類進行打包

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

運行JUnit

...

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

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

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

“Ruby on Rails(簡稱)中的Active Record是DSL的一個典型。”

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

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

“那RoR是怎么用DSL來實現Active Record的?”

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

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

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

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

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

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

DSL的實現

“對了,你也可以發掘下你工作的領域,看看有沒有可能創建一個屬于自己的DSL。但是我必須得提醒你,不能為了DSL而DSL。”

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

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

“自己實現語言?這太難了!”

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

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

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

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

    關注

    2

    文章

    58

    瀏覽量

    38293
  • 數據庫
    +關注

    關注

    7

    文章

    3794

    瀏覽量

    64360
  • 自然語言
    +關注

    關注

    1

    文章

    287

    瀏覽量

    13346

原文標題:我發現了一個非常酷的軟件,用自然語言編程!

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

收藏 人收藏

    評論

    相關推薦

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

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

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

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

    ASR與自然語言處理的結合

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

    自然語言處理與機器學習的區別

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

    圖像識別技術包括自然語言處理嗎

    圖像識別技術與自然語言處理是人工智能領域的兩個重要分支,它們在很多方面有著密切的聯系,但也存在一些區別。 一、圖像識別技術與自然語言處理的關系 1.1 圖像識別技術的定義 圖像識別技術是指利用
    的頭像 發表于 07-16 10:54 ?731次閱讀

    自然語言處理技術有哪些

    自然語言處理(Natural Language Processing,簡稱NLP)是人工智能領域的一個分支,它致力于使計算機能夠理解、解釋和生成人類語言自然語言處理技術的發展已經取得了顯著的進展
    的頭像 發表于 07-03 14:30 ?1095次閱讀

    自然語言處理模式的優點

    自然語言處理(Natural Language Processing,簡稱NLP)是人工智能領域的一個重要分支,它致力于使計算機能夠理解、生成和處理人類語言。隨著技術的發展,自然語言處理在各個領域
    的頭像 發表于 07-03 14:24 ?755次閱讀

    自然語言處理技術的核心是什么

    ,廣泛應用于機器翻譯、情感分析、語音識別、智能問答、文本摘要等眾多領域。 自然語言處理技術的發展可以追溯到20世紀50年代。1950年,圖靈提出了著名的圖靈測試,標志著自然語言處理技術的誕生。20世紀70年代,隨著計算機技術的發
    的頭像 發表于 07-03 14:20 ?710次閱讀

    自然語言處理是什么技術的一種應用

    自然語言處理(Natural Language Processing,簡稱NLP)是人工智能和語言學領域的一個分支,它涉及到使用計算機技術來處理、分析和生成自然語言文本。自然語言處理技
    的頭像 發表于 07-03 14:18 ?806次閱讀

    自然語言處理包括哪些內容

    自然語言處理(Natural Language Processing,簡稱NLP)是人工智能領域的一個重要分支,它涉及到計算機與人類語言之間的交互。NLP的目標是讓計算機能夠理解、生成和處理人類語言
    的頭像 發表于 07-03 14:15 ?820次閱讀

    自然語言列舉法描述法各自的特點

    自然語言處理(Natural Language Processing,簡稱NLP)是人工智能領域的一個重要分支,它涉及到計算機與人類語言之間的交互。自然語言處理技術使得計算機能夠理解、生成和處理
    的頭像 發表于 07-03 14:13 ?1030次閱讀

    自然語言處理屬于人工智能的哪個領域

    自然語言處理(Natural Language Processing,簡稱NLP)是人工智能(Artificial Intelligence,簡稱AI)領域的一個重要分支。它涉及到計算機與人類語言
    的頭像 發表于 07-03 14:09 ?1302次閱讀

    什么是自然語言處理 (NLP)

    自然語言處理(Natural Language Processing, NLP)是人工智能領域中的一個重要分支,它專注于構建能夠理解和生成人類語言的計算機系統。NLP的目標是使計算機能夠像人類一樣
    的頭像 發表于 07-02 18:16 ?1150次閱讀

    自然語言處理技術的原理的應用

    自然語言處理(Natural Language Processing, NLP)作為人工智能(AI)領域的一個重要分支,旨在使計算機能夠理解和處理人類自然語言。隨著互聯網的普及和大數據技術的發展
    的頭像 發表于 07-02 12:50 ?515次閱讀

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

    自然語言處理(NLP)是人工智能領域中的一個重要分支,它研究的是如何使計算機能夠理解和生成人類自然語言。隨著人工智能技術的飛速發展,神經網絡在自然語言處理中的應用逐漸展現出其強大的潛力和優勢。本文
    的頭像 發表于 07-01 14:09 ?484次閱讀
    主站蜘蛛池模板: 果冻传媒最新视频在线观看 | 天美传媒MV高清免费看| 青草在线在线d青草在线| 色婷婷五月综合久久中文字幕| 特级毛片s级全部免费| 亚色九九九全国免费视频| 亚洲精品国产高清不卡在线 | 无码AV精品久久一区二区免费 | YELLOW视频在线观看免费版高清| 被爽到叫呻呤视频免费视频| 国产成在线观看免费视频| 国内精品久久久久影院男同志| 久草高清在线| 男生插曲女生身全过程| 色欲av蜜臀av高清| 亚洲无线观看国产| 99久久国产露脸精品麻豆| 国产AV综合手机在线观看| 黑吊大战白xxxxxx| 秘密教学93话恩爱久等了免费| 日韩 亚洲 欧美 中文 高清| 亚洲精品国产高清嫩草影院 | 中文无码热在线视频| 被黑人群jian又粗又大H| 国产精品爽黄69天堂A片| 久久婷婷电影网| 欧美日韩在线成人看片a| 亚久久伊人精品青青草原2020| 伊人久久艹| 丰满少妇67194视频| 久久国产加勒比精品无码| 亲嘴扒胸摸屁股视频免费网站 | 胸大美女又黄的网站| 1819sextub欧美中国| 国产成人免费观看在线视频| 久久精品天天爽夜夜爽| 日韩欧美视频一区二区在线观看| 亚洲欧美日韩高清中文在线| max girls 大感谢祭| 好大的太粗好深BL| 青青青伊人|