国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    61

    瀏覽量

    39141
  • 數據庫
    +關注

    關注

    7

    文章

    4020

    瀏覽量

    68353
  • 自然語言
    +關注

    關注

    1

    文章

    292

    瀏覽量

    13989

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    自然語言處理NLP的概念和工作原理

    自然語言處理 (NLP) 是人工智能 (AI) 的一個分支,它會教計算機如何理解口頭和書面形式的人類語言自然語言處理將計算語言學與機器學習和深度學習相結合來處理語音和文本數據,這些數
    的頭像 發表于 01-29 14:01 ?370次閱讀
    <b class='flag-5'>自然語言</b>處理NLP的概念和工作原理

    什么方法可以用最少的引腳,接最多的按鍵?

    什么方法可以用最少的引腳,接最多的按鍵?
    發表于 01-20 07:08

    請問串口接收可以用scanf接收嗎?

    串口接收可以用scanf接收嗎?
    發表于 01-15 08:20

    為什么單片機還在用C語言編程

    說起單片機我們就會想到C語言,單片機為什么還在用C語言編程?現在有很多很好用的高級語言,如VC、PYTHON、PHP等等,為什么這些語言不能
    發表于 11-28 07:37

    C語言編程技巧

    設計,分層開發代碼,便于理解和維護。 ?8、避免使用GOTO語句?:盡管GOTO語句在某些情況下仍然有用,但現代編程更傾向于使用函數和循環控制結構,以提高代碼的可讀性和維護性。 ?9、利用C語言的靈活性
    發表于 11-27 06:46

    云知聲論文入選自然語言處理頂會EMNLP 2025

    近日,自然語言處理(NLP)領域國際權威會議 ——2025 年計算語言學與自然語言處理國際會議(EMNLP 2025)公布論文錄用結果,云知聲提交的《面向門診病歷生成的高質量醫患對話合成技術
    的頭像 發表于 11-10 17:30 ?804次閱讀
    云知聲論文入選<b class='flag-5'>自然語言</b>處理頂會EMNLP 2025

    HarmonyOSAI編程自然語言代碼生成

    安裝CodeGenie后,在下方對話框內,輸入代碼需求描述,將根據描述智能生成代碼,生成內容可一鍵復制或一鍵插入至編輯區當前光標位置。 提問示例 使用ArkTs語言寫一段代碼,在頁面中間部分
    發表于 09-05 16:58

    HarmonyOSAI編程頁面生成

    支持通過自然語言對話,生成應用/元服務可用的頁面代碼,生成結果支持實時預覽,幫助開發者快速完成頁面搭建。 點擊頁面右側菜單欄CodeGenie圖標,完成登錄后在輸入框輸入\"/\"
    發表于 08-29 15:50

    【HZ-T536開發板免費體驗】5- 無需死記 Linux 命令! CangjieMagic 在 HZ-T536 開發板上搭建 MCP 服務器,自然語言輕松控板

    )真香,是不是可以沒有YOLO和OCR了? - 北京合眾恒躍科技有限公司 - 電子技術論壇 - 廣受歡迎的專業電子論壇!已經詳細介紹了,這里不再贅述。 四、測試驗證:自然語言控制開發板 啟動服務器
    發表于 08-23 13:10

    收銀機的電源適配器壞了,可以用其他產品的替代使用嗎?

    在日常的商業運營中,收銀機作為門店管理的核心設備,其穩定性和可靠性至關重要。然而,當原裝收銀機電源適配器壞了的話,我們是否可以用其他產品的電源適配器來臨時替代收銀機的原裝電源適配器呢?答案是不能
    的頭像 發表于 08-02 10:03 ?866次閱讀
    收銀機的電源適配器壞了,<b class='flag-5'>可以用</b>其他產品的替代使用嗎?

    云知聲四篇論文入選自然語言處理頂會ACL 2025

    近日,第63屆國際計算語言學年會ACL 2025(Annual Meeting of the Association for Computational Linguistics,簡稱ACL)論文接收
    的頭像 發表于 05-26 14:15 ?1316次閱讀
    云知聲四篇論文入選<b class='flag-5'>自然語言</b>處理頂會ACL 2025

    單片機c語言編程實例大全

    單片機c語言編程實例大全_18
    發表于 04-30 16:11 ?7次下載

    自然語言處理的發展歷程和應用場景

    你是否曾經對著手機說:“嘿,Siri,今天天氣怎么樣?”或者在出國旅行時,打開翻譯軟件,對著菜單說:“請把這道菜翻譯成英文”。
    的頭像 發表于 04-17 11:40 ?1327次閱讀

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

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

    求助,網上看到可以用composite.h和composite.c進行編程,我的STM32CUBEIDE怎么沒有?

    網上看到可以用composite.h和composite.c進行編程,我的STM32CUBEIDE怎么沒有?
    發表于 03-12 07:16