女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

微軟正式發(fā)布了一種名為Bosque的全新編程語(yǔ)言

DPVg_AI_era ? 來(lái)源:lp ? 2019-04-21 09:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

微軟正式發(fā)布了一種名為Bosque的全新編程語(yǔ)言。微軟方面介紹說(shuō):Bosque是一種超越了結(jié)構(gòu)化編程且沒(méi)有循環(huán)的編程語(yǔ)言將極大地提高開發(fā)人員的生產(chǎn)力,提高軟件質(zhì)量,并使編譯器和開發(fā)人員工具的開發(fā)進(jìn)入第二個(gè)黃金時(shí)代。

當(dāng)?shù)貢r(shí)間 4 月 18 日,微軟正式發(fā)布了一種名為 Bosque 的全新編程語(yǔ)言。微軟方面介紹說(shuō):Bosque 受 TypeScript 啟發(fā),是一種超越了結(jié)構(gòu)化編程且沒(méi)有循環(huán)的編程語(yǔ)言,他們認(rèn)為,這種規(guī)范化的編程模型將極大地提高開發(fā)人員的生產(chǎn)力,提高軟件質(zhì)量,并使編譯器和開發(fā)人員工具的開發(fā)進(jìn)入第二個(gè)黃金時(shí)代。

超越結(jié)構(gòu)化編程的“正則化”編程語(yǔ)言

20 世紀(jì) 70 年代,結(jié)構(gòu)化編程和抽象數(shù)據(jù)類型的興起代表了編程語(yǔ)言的重大轉(zhuǎn)變。這些方法代表了從反映底層硬件體系結(jié)構(gòu)附帶特性的編程模型,開始轉(zhuǎn)向更直接地強(qiáng)調(diào)程序員意圖的模型。這種轉(zhuǎn)變同時(shí)使開發(fā)人員更容易地將系統(tǒng)的模型轉(zhuǎn)換為代碼,且更不易出錯(cuò),并開啟了編譯器和 IDE 工具開發(fā)的黃金時(shí)代。

21 世紀(jì)的今天,微軟推出了一種新的開源編程語(yǔ)言,名為 Bosque,它希望通過(guò)包含代數(shù)運(yùn)算和避免產(chǎn)生復(fù)雜性的技術(shù)來(lái)使得代碼簡(jiǎn)化和易于理解。

Bosque 的靈感來(lái)自于 TypeScript 的語(yǔ)法和類型以及 ML 和 Node/JavaScript 的語(yǔ)義。它的提出者是微軟計(jì)算機(jī)科學(xué)家 Mark Marron,他將這種語(yǔ)言描述為 超越結(jié)構(gòu)化編程模型 的成果。

自 1968 年計(jì)算機(jī)科學(xué)家 Edsger Dijkstra 發(fā)表題為《Go To Statement Considered Harmful》的論文后,結(jié)構(gòu)化編程范式開始流行起來(lái)。在結(jié)構(gòu)化編程范式中,流控制由循環(huán)、條件和子例程管理。

Marron 認(rèn)為:可以通過(guò)消除諸如循環(huán)、可變狀態(tài)和引用相等等復(fù)雜性的來(lái)源讓編程變得更好。于是 Bosque 誕生了,它代表了一種編程范式,Marron 在他的一篇論文中稱之為“正則化編程”。

Marron 在他的技術(shù)論文中解釋說(shuō):“這個(gè)模型建立在結(jié)構(gòu)化編程和抽象數(shù)據(jù)類型成功的基礎(chǔ)上,它將現(xiàn)有的編程模型簡(jiǎn)化為一種正則化的形式,這種形式消除了主要的錯(cuò)誤來(lái)源,簡(jiǎn)化了代碼理解和修改,并將許多代碼上的自動(dòng)化推理任務(wù)轉(zhuǎn)換為瑣碎的命題。”

Bosque 語(yǔ)言官方論文:

https://www.microsoft.com/en-us/research/uploads/prod/2019/04/beyond_structured_report_v2.pdf

Bosque 語(yǔ)言概覽

那么,Bosque 語(yǔ)言是什么樣子的?下面這個(gè)例子或許可以說(shuō)明:

//Functor (Bosque)

官方 GitHub 中包含更多參考示例:

https://github.com/Microsoft/BosqueLanguage

乍一看,Bosque 的表達(dá)方式很像 JavaScript 語(yǔ)言。Marron 說(shuō),引用相等(當(dāng)兩個(gè)變量指向內(nèi)存中的同一個(gè)對(duì)象時(shí))代表了一種可能導(dǎo)致問(wèn)題的復(fù)雜性的例子。

在 Marron 的論文中,他寫道:

基于一系列開發(fā)人員訪談和對(duì)分析運(yùn)行時(shí)編譯器開發(fā)的經(jīng)驗(yàn)研究,我們確定了五個(gè)意外復(fù)雜性的主要來(lái)源,可以通過(guò)深思熟慮的語(yǔ)言設(shè)計(jì)來(lái)解決。這些問(wèn)題是各種 bug 的來(lái)源,增加了開發(fā)人員在應(yīng)用程序中推斷和實(shí)現(xiàn)功能所需的工作量,并使自動(dòng)推斷程序變得非常復(fù)雜(甚至不可能實(shí)現(xiàn))。

這五種復(fù)雜性來(lái)源分別是:

可變的狀態(tài)和框架:在編程語(yǔ)言中引入可變性,破壞了以單調(diào)的方式對(duì)應(yīng)用程序進(jìn)行推理的能力,這種方式迫使程序員 (和任何分析工具) 明確哪些在運(yùn)算之后仍然為真,哪些就無(wú)效了。可變代碼通過(guò)返回值和對(duì)參數(shù) (或其他全局狀態(tài)) 的副作用來(lái)影響應(yīng)用程序狀態(tài)的能力也引入了對(duì)每個(gè)運(yùn)算的邏輯框架進(jìn)行推理的需要。

循環(huán)、遞歸和不變量:循環(huán)和遞歸是向推理提出的一項(xiàng)基本挑戰(zhàn),因?yàn)榇a描述了單個(gè)步驟的效果,但是要理解完整的構(gòu)造,需要對(duì)一組值上的量化屬性進(jìn)行泛化。不變量提供了所需的關(guān)聯(lián),但是一般針對(duì)它們的計(jì)算不可能存在一種通用的技術(shù),甚至在有限的應(yīng)用中也很難實(shí)現(xiàn)。

不確定行為:包括未定義的、未指定的、不確定的或環(huán)境的行為,需要程序員或分析工具來(lái)推斷并解釋所有可能的結(jié)果。雖然真正未定義的行為,例如未初始化的變量,已經(jīng)從大多數(shù)語(yǔ)言中消失了,但是仍然存在大量未具體明確的行為,例如排序的穩(wěn)定性、映射 / 字典枚舉順序等。這些增加了開發(fā)過(guò)程的復(fù)雜性,并且隨著時(shí)間的推移,逐漸被視為應(yīng)該消除的負(fù)債。

違反數(shù)據(jù)不變?cè)瓌t:編程語(yǔ)言通常為數(shù)組 / 元組中的單個(gè)元素或?qū)ο?/ 記錄中的字段提供訪問(wèn)和更新的操作符。事實(shí)上,這些訪問(wèn)器 / 更新器是在單個(gè)元素的基礎(chǔ)上操作的,這導(dǎo)致程序員在多個(gè)步驟上更新對(duì)象的狀態(tài),在此期間,通常不變量在恢復(fù)之前會(huì)暫時(shí)失效。在這種情況下,大量細(xì)節(jié)必須予以跟蹤和恢復(fù),這可能會(huì)急劇增加發(fā)生錯(cuò)誤和疏忽的機(jī)會(huì)。

等式和混疊:編程語(yǔ)言處于數(shù)學(xué)和工程學(xué)的邊界上。盡管語(yǔ)言語(yǔ)義被表述為一個(gè)數(shù)學(xué)概念,但也存在一些常見的情況,例如引用相等、按值傳遞 vs. 按引用傳遞,或評(píng)估順序,它們通常默認(rèn)底層是馮·諾伊曼架構(gòu),要么是有意為性能考慮,要么是出于習(xí)慣或歷史原因。雖然這些選擇看起來(lái)微不足道,但是對(duì)可理解性有很大的影響——僅僅公開引用相等性就會(huì)增加關(guān)于混疊關(guān)系的推理的復(fù)雜性,并使其他體系結(jié)構(gòu)上的編譯變得非常復(fù)雜。

Marron 舉了一個(gè)例子,譬如為了讓某種方法以單例模式或緩存的形式返回一個(gè)新對(duì)象,就需要考慮對(duì)該方法進(jìn)行優(yōu)化。但 Marron 表示:“如果這個(gè)問(wèn)題出現(xiàn)在對(duì)象具有身份的語(yǔ)言中,這種行為可能會(huì)改變程序的結(jié)果;然而,在不允許對(duì)象標(biāo)識(shí)的 Bosque 中,這種優(yōu)化則是安全的。”

他引用的另一個(gè)例子是各種形式的不確定行為,他說(shuō):“在 JavaScript 中,排序函數(shù)不需要是穩(wěn)定的,所以 JS 的 V8 引擎使用了不穩(wěn)定的排序。”

Marron 進(jìn)一步解釋道:“從理論上講,這似乎是一件小事,但在實(shí)踐中,這意味著每次開發(fā)人員對(duì)列表進(jìn)行排序時(shí),他們必須記住列表是不穩(wěn)定的,并考慮到使用相同排序值重新排序的可能性,譬如 2008 年因?yàn)榉€(wěn)定性問(wèn)題被爆出的 Chromium bug 90。”

Marron 的技術(shù)論文探討了 Bosque 試圖解決的編程語(yǔ)言復(fù)雜性的潛在來(lái)源。但是他說(shuō),消除可變狀態(tài)、循環(huán)和引用相等性是三大要素。

他說(shuō):“在學(xué)術(shù)文獻(xiàn)中,強(qiáng)更新、循環(huán)不變量和別名分析等相關(guān)問(wèn)題已經(jīng)被廣泛研究了 30 多年,但仍然是一個(gè)巨大的開放問(wèn)題。通過(guò)消除這些特性,以及解決相關(guān)問(wèn)題的需要,許多像符號(hào)執(zhí)行這樣的事情可以簡(jiǎn)化為概念上的簡(jiǎn)單任務(wù)。”

Marron 說(shuō),Bosque 的最初目標(biāo)是構(gòu)建自動(dòng)化的零工作量代碼驗(yàn)證、自動(dòng)化的 SemVer 檢查和編譯,以使用 SIMD 硬件,如 AVX 或 SSE。他說(shuō):“目前,我們只在小的示例上手工完成了這些工作,但從根本上說(shuō),在實(shí)際實(shí)現(xiàn)中似乎沒(méi)有任何不可逾越的障礙。”

未來(lái)規(guī)劃

目前,Marron 將 Bosque 視為探索語(yǔ)言設(shè)計(jì)選擇的一種方式,并通過(guò)與學(xué)術(shù)界和在線開發(fā)人員社區(qū)的協(xié)作,幫助創(chuàng)建諸如驗(yàn)證器和編譯器之類的自動(dòng)化開發(fā)工具。

他說(shuō):“我們希望用 Bosque 來(lái)證明這個(gè)領(lǐng)域的各種概念。未來(lái),我們可能會(huì)努力將這些想法以某種形式投入生產(chǎn)。”

目前,Bosque 依賴于一個(gè)用 TypeScript 編寫的解釋器,運(yùn)行在 Node 上。作為參考實(shí)現(xiàn)。展望未來(lái),Marron 打算為 WASM 和本地代碼提前實(shí)現(xiàn)編譯。他說(shuō),在接下來(lái)的幾個(gè)月里,他將專注于各種 TODO 項(xiàng)目,比如 bug 修復(fù)以及開發(fā)支持用這種語(yǔ)言編寫大型程序的功能。

如果 Bosque 在學(xué)術(shù)實(shí)驗(yàn)之外的開發(fā)生態(tài)系統(tǒng)中找到了一席之地,Marron 認(rèn)為它可能會(huì)應(yīng)用在云或物聯(lián)網(wǎng)領(lǐng)域,因?yàn)?Bosque 代碼可以在一個(gè)比較小的內(nèi)存中編譯,能夠快速啟動(dòng),并且可以通過(guò)符號(hào)分析驗(yàn)證其正確性。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 微軟
    +關(guān)注

    關(guān)注

    4

    文章

    6685

    瀏覽量

    105748
  • 編程語(yǔ)言
    +關(guān)注

    關(guān)注

    10

    文章

    1956

    瀏覽量

    36643
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1662

    瀏覽量

    50210

原文標(biāo)題:Bosque語(yǔ)言問(wèn)世,超越結(jié)構(gòu)化編程,開啟第二個(gè)開發(fā)黃金年代

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    gitee 支持的編程語(yǔ)言有哪些

    些 Gitee 支持的常見編程語(yǔ)言: Python :一種廣泛使用的高級(jí)編程語(yǔ)言,以其清晰的語(yǔ)法和代碼可讀性而聞名。 Java :
    的頭像 發(fā)表于 01-06 09:50 ?672次閱讀

    Triton編譯器支持的編程語(yǔ)言

    編寫和優(yōu)化深度學(xué)習(xí)代碼。Python是一種廣泛使用的高級(jí)編程語(yǔ)言,具有簡(jiǎn)潔易讀、易于上手、庫(kù)豐富等特點(diǎn),非常適合用于深度學(xué)習(xí)應(yīng)用的開發(fā)。 二、領(lǐng)域特定語(yǔ)言(DSL) Triton也提供
    的頭像 發(fā)表于 12-24 17:33 ?963次閱讀

    編程語(yǔ)言的誤區(qū)與常見問(wèn)題

    : 選擇編程語(yǔ)言時(shí),應(yīng)考慮項(xiàng)目需求、個(gè)人興趣以及語(yǔ)言的適用性。例如,如果你對(duì)Web開發(fā)感興趣,那么學(xué)習(xí)JavaScript可能是個(gè)好選擇。 認(rèn)識(shí)到?jīng)]有
    的頭像 發(fā)表于 11-15 09:35 ?749次閱讀

    NPU支持的編程語(yǔ)言有哪些

    NPU(Neural Processing Unit)是一種專門為深度學(xué)習(xí)和人工智能應(yīng)用設(shè)計(jì)的處理器。NPU支持的編程語(yǔ)言通常與它所集成的平臺(tái)或框架緊密相關(guān)。以下是些常見的
    的頭像 發(fā)表于 11-15 09:21 ?1920次閱讀

    串口屏支持哪些編程語(yǔ)言和開發(fā)環(huán)境?

    串口屏作為一種常用的顯示和交互設(shè)備,支持多種編程語(yǔ)言和開發(fā)環(huán)境。以下是對(duì)串口屏支持的編程語(yǔ)言和開發(fā)環(huán)境的詳細(xì)歸納:
    的頭像 發(fā)表于 11-13 11:45 ?748次閱讀
    串口屏支持哪些<b class='flag-5'>編程</b><b class='flag-5'>語(yǔ)言</b>和開發(fā)環(huán)境?

    C語(yǔ)言中的socket編程基礎(chǔ)

    Socket編程簡(jiǎn)介 Socket是一種通信機(jī)制,允許程序之間進(jìn)行通信。在C語(yǔ)言中,socket編程是網(wǎng)絡(luò)編程的基礎(chǔ)。通過(guò)使用socket,
    的頭像 發(fā)表于 11-01 16:51 ?1227次閱讀

    單片機(jī)編程語(yǔ)言有哪些選擇

    些常用的單片機(jī)編程語(yǔ)言,以及它們的特點(diǎn)和應(yīng)用場(chǎng)景: 1. C語(yǔ)言 特點(diǎn) :C語(yǔ)言一種通用的編程
    的頭像 發(fā)表于 11-01 14:13 ?2418次閱讀

    MCU編程語(yǔ)言和開發(fā)環(huán)境介紹

    MCU編程語(yǔ)言 MCU編程語(yǔ)言是用于編寫MCU程序的高級(jí)編程語(yǔ)言,它們使得開發(fā)者能夠更高效地開
    的頭像 發(fā)表于 11-01 11:51 ?2194次閱讀

    C語(yǔ)言與其他編程語(yǔ)言的比較

    C語(yǔ)言作為一種歷史悠久的編程語(yǔ)言,自其誕生以來(lái),直在軟件開發(fā)領(lǐng)域扮演著重要角色。它以其高效、靈活和可移植性強(qiáng)的特點(diǎn),成為了系統(tǒng)級(jí)
    的頭像 發(fā)表于 10-29 17:30 ?1078次閱讀

    Orin芯片的編程語(yǔ)言支持

    Orin是款高度集成、高性能的車載計(jì)算平臺(tái),由英偉達(dá)推出,并采用了英偉達(dá)自家的Volta架構(gòu)GPU和其他高級(jí)處理器技術(shù)。關(guān)于Orin芯片的編程語(yǔ)言支持,可以從以下幾個(gè)方面進(jìn)行介紹:
    的頭像 發(fā)表于 10-27 16:45 ?986次閱讀

    CNC系統(tǒng)般可用幾種編程語(yǔ)言

    一種用于數(shù)控機(jī)床編程編程語(yǔ)言,廣泛應(yīng)用于CNC系統(tǒng)。G代碼是一種文本格式的編程
    的頭像 發(fā)表于 10-23 15:52 ?1507次閱讀

    plc的編程語(yǔ)言主要有哪三

    PLC(可編程邏輯控制器)的編程語(yǔ)言多種多樣,但其中最為常用和廣泛認(rèn)知的三主要編程語(yǔ)言是梯形圖
    的頭像 發(fā)表于 10-21 17:04 ?6243次閱讀

    labview是什么編程語(yǔ)言寫的

    一種圖形化編程語(yǔ)言。它并不是用傳統(tǒng)的文本編程語(yǔ)言(如C++、Python等)編寫的,而是采用了一種
    的頭像 發(fā)表于 09-04 16:00 ?2203次閱讀

    plc的編程語(yǔ)言有哪幾種

    編程邏輯控制器(PLC)是一種廣泛應(yīng)用于工業(yè)自動(dòng)化領(lǐng)域的電子設(shè)備,用于實(shí)現(xiàn)對(duì)生產(chǎn)過(guò)程的控制和管理。PLC的編程語(yǔ)言是實(shí)現(xiàn)控制邏輯的關(guān)鍵工具,以下是對(duì)PLC
    的頭像 發(fā)表于 08-25 10:07 ?1003次閱讀

    plc編程st語(yǔ)言怎么編

    PLC(可編程邏輯控制器)編程中的ST(Structured Text)語(yǔ)言一種高級(jí)編程語(yǔ)言
    的頭像 發(fā)表于 08-25 10:05 ?2810次閱讀