日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

微软推出新语言Bosque,超越结构化程序设计

發(fā)布時間:2023/12/4 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微软推出新语言Bosque,超越结构化程序设计 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

微軟近期推出了一款全新的編程語言 Bosque,該語言參考了 TypeScript 的語法與類型,還有 ML 和 Node/JavaScript 的語義。

作者微軟計算機科學家 Mark Marron 致力于消除編程過程中出現(xiàn)的各種復雜情況,創(chuàng)造出了他認為超越主流結構化程序設計的 Bosque 這一語言。

結構化程序設計現(xiàn)在隨處可見,不管你用的是 C/C++,還是 Java、Python 與 Golang 等編程語言,在開發(fā)過程中使用的基本都是這一程序設計思想,它最初是為了替換掉程序中弊大于利的 goto 語法而產(chǎn)生的。

研究者使用結構化程序設計思想中的循環(huán)、順序與選擇等設計,最終完全替換掉了 goto 指令,并且這樣的編程思想也一直流行至今。

Bosque 是隨著?Mark 發(fā)表的論文《Regularized Programming with the BOSQUE Language》提出的,論文中,作者指出上世紀 70 年代興起的結構化程序設計和抽象數(shù)據(jù)類型使得開發(fā)者可以屏蔽掉底層硬件架構的特征,專注于編寫功能代碼,同時開發(fā)也變得更加不易出錯。

而作者在此基礎上,提出了一種新的程序設計思想——Regularized Programming(規(guī)范化/正則程序設計),通過避免低級循環(huán)動作的迭代處理、用代數(shù)數(shù)據(jù)轉換操作符豐富語言等設計,超越結構化程序設計。

作者同時為此思想設計了全新的編程語言 Bosque。具體來講,現(xiàn)有的程序設計得到簡化,成為規(guī)范化形式,消除了主要的不確定復雜性來源。

論文基于一系列分析、運行時與編程器開發(fā)的經(jīng)驗與驗證,以及針對開發(fā)人員的采訪,確定了開發(fā)過程中會出現(xiàn)的 5 個主要不確定復雜性來源:

  • 可變狀態(tài)和邏輯幀將可變性引入編程語言破壞了以單調(diào)方式推理程序的能力,這迫使程序員(和任何分析工具)需要去確定在操作之后哪些東西還是有效的,而哪些又已經(jīng)失效。同時可變代碼返回值和對參數(shù)(或其它全局狀態(tài))產(chǎn)生副作用影響程序狀態(tài),也使得需要推理每個操作的邏輯幀。

  • 循環(huán)、遞歸和不變量循環(huán)和遞歸是推理的最基本挑戰(zhàn),因為代碼描述了單個步驟的效果,但理解完整構造需要對一組值的量化屬性進行泛化,不變量提供了所需的連接,但是一般來說這樣的計算通用技術是無法實現(xiàn)的。

  • 不確定的行為不確定的行為包括未定義的、在指定的或非確定的環(huán)境行為,這需要程序員或分析工具來推理和解釋所有可能的結果。例如:排序穩(wěn)定性、地圖/字典枚舉順序等。這些不確定的行為增加了開發(fā)過程的復雜性,并且隨著時間的推移,慢慢地被視為應該被刪除的技術債。

  • 不遵循“數(shù)據(jù)不變”編程語言通常為數(shù)組/元組中的單個元素或?qū)ο?記錄中的字段提供訪問與更新操作符,這些訪問器/更新器在單個元素的基礎上執(zhí)行,導致程序員在多個步驟上更新對象的狀態(tài),此時通常持有的不變量在恢復之前暫時是失效的。在這些情況下,必須跟蹤和恢復的細節(jié)數(shù)量會大大增加錯誤發(fā)生的可能性。

  • 相等與別名編程語言處于數(shù)學和工程的邊界,雖然語言語義被表述為數(shù)學概念,但是存在一些常見情況,例如:引用相等、按值、按引用或評估順序傳遞,這背后其實是默認了底層是馮·諾依曼架構。雖然看似微不足道,但這些選擇對可理解性產(chǎn)生了重大影響,比如引用相等會導致關于別名關系推理的復雜性,并使其它架構的編譯變得非常復雜。

這些不確定復雜性是程序各種 bug 的來源,增加了開發(fā)者理解和實現(xiàn)應用功能的復雜性,同時使程序自動推理也變得非常復雜,或完全不可行。

其中,根據(jù)科技媒體?The Register 對 Mark 的采訪,Mark 認為可變狀態(tài)循環(huán)引用相等這三者的問題是最突出的。

以引用相等為例,Mark 指出,當兩個變量指向內(nèi)存中的同一個對象時,問題的復雜性就提高了,“看起來非常簡單,但是一旦你在語義中出現(xiàn)引用相等,那么就必須不斷地考慮它和它引入的指針別名的關系。

而最為熟悉的循環(huán)機制也帶來不小的復雜性,在 Bosque 中它被取消了,下邊是一個等同于 JavaScript 中 for 循環(huán)的例子:

//Functor (Bosque)

var a = List[Int]@{...};
//Pre: true

var b = a.map[Int](fn(x) => x*2);
//Post: List[Int]::eq(fn(x, y) => y == x*2, a, b)

Bosque 由規(guī)范化程序設計思想而來,正是為了解決當前結構化程序設計中遇到的這些問題,作者把結構化程序設計的興起認為是編程器與開發(fā)工具的第一個黃金時代,他相信此次提出的這規(guī)范化編程模型將大大提高開發(fā)者的工作效率、提高軟件質(zhì)量,并帶來編譯器和開發(fā)工具的第二個黃金時代。

詳情查看論文與源碼:

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

  • https://github.com/Microsoft/BosqueLanguage

開源中國征稿啦!


開源中國 www.oschina.net 是目前備受關注、具有強大影響力的開源技術社區(qū),擁有超過 200 萬的開源技術精英。我們傳播開源的理念,推廣開源項目,為 IT 開發(fā)者提供一個發(fā)現(xiàn)、使用、并交流開源技術的平臺。


現(xiàn)在我們開始對外征稿啦!如果你有優(yōu)秀的技術文章想要分享,熱點的行業(yè)資訊需要報道等等,歡迎聯(lián)系開源中國進行投稿。投稿詳情及聯(lián)系方式請參見:我要投稿



推薦閱讀

紅帽接手維護OpenJDK 8與11

Stack Overflow 2019開發(fā)者調(diào)查報告發(fā)布

Windows 10源碼一覽!

騰訊重磅開源DCache,分布式NoSQL存儲系統(tǒng)

fork()成為負擔,需要淘汰

我,開源中國,「在看」

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的微软推出新语言Bosque,超越结构化程序设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。