[IT永遠有新嘢學唔完]微軟正開發沒有迴圈的程式語言Bosque

64 回覆
52 Like 4 Dislike
2019-04-24 23:50:58
全新程式語言Bosque作者認為,程式語言中的迴圈、參照相等和可變狀態等是造成意外複雜度的來源,Bosque改變設計以提升程式碼可讀性

微軟研究院正在開發全新程式語言Bosque,以簡單易懂為訴求,降低程式開發過程的意外複雜度(Accidental Complexity),還支援一系列新的編譯器與開發工具,最終目的是要在提高開發人員生產力的同時,又能讓程式擁有良好的品質。Bosque作者為微軟首席研究軟體設計工程師Mark Marron,其最近主要的工作還有開發時間旅行除錯工具。

Mark Marron發表的論文提到,1970年代結構化程式語言和抽象資料類別,為程式語言開發模型帶來了一波改變,讓開發者不需要這麼在意底層基礎結構,把心力放在功能的實現上,因此開發人員的想法更容易實現,程式也更不容易出錯,而現在Mark Marron順著這個開發模型的想法,進一步提升開發體驗,發表了使用規範化程式開發方法的程式語言Bosque。

Bosque參考了TypeScript的語法,並綜合了語意機器學習和Node/JavaScript,Mark Marron提到,由於在過去結構化程式開發模型中,流程控制是由迴圈、條件和子程式所組成,而Mark Marron列出了迴圈、參照相等和可變狀態等五個造成程式碼意外複雜度的來源,開發人員可能為了解決問題,而又為自己創造了更複雜的問題。

Bosque去除了這些可能產生意外複雜度的概念,以迴圈(下圖左)來說,Bosque不再使用for、while和do while等迴圈,使用稱為Functors(下圖右)的概念,可以完成相同的工作,但是卻能有效降低程式複雜度。Functors是一系列高階迭代處理結構,Mark Marron表示,開發人員不需要重複撰寫相同迴圈的樣板,能夠消除一系列像是邊界算數類的錯誤,並讓開發者使用描述性命名Functors,而非一組共用迴圈模式。



Mark Marron提到,Bosque消除現有結構化程式開發模型中的主要錯誤來源,讓程式碼更加容易理解與修改,發展出規範化程式開發方法(Regularized Programming),而論文證明了規範化程式開發方法可以直接提升軟體品質以及開發人員生產力。

目前Mark Marron將Bosque相關程式碼開源於GitHub,以利學術界與開發社群合作,但這個專案目前仍在早期階段,不只存在錯誤且功能有限,開發者不應該用於正式的生產環境。

https://www.ithome.com.tw/news/130153

追tech追一世
2019-04-24 23:55:06
tech既野最緊要有用
2019-04-24 23:55:59
佢呢舊野底層係咩lang transpile過去先
2019-04-24 23:57:01
其實只係一句寫loop啫
好多現有嘅language都有依個功能啦,特別係簡單嗰啲high level language
利申:唔識
2019-04-24 23:59:10
Functors個讀音好好笑
之後啲人應該會撈亂晒Functions同Functors
真係好Fun
2019-04-25 00:06:49
佢唔discontinued點繼續賺錢呀
佢重要賺錢嚟cover返蝕到仆街嘅部門,例如手機部門
其實佢個office雖然每3年keep住出新版,但係其實我覺得冇乜太大變化,尤其是2013版開始到2019版 你話2003年版到2007版都重會有畫面上嘅變化,2010年到2013年版都有畫面上嘅變化,但係2013年版開始好似連樣都廢事變,直接改咗個年份就繼續賣
2019-04-25 00:11:35
個idea唔錯
利申:中化b
2019-04-25 00:14:54
自從有左 JavaScript 有左 map,forEach,reduce 都好少寫 forloop
2019-04-25 00:18:59
因為轉左玩法office 365訂閲制度
2019-04-25 00:19:40
ms 成日出d古怪嘢
2019-04-25 00:23:18
單睇呢部分同linq 有乜分別

我都用過一啲類似唔畀人寫loop嘅high lv programming tool
視乎情況
當真係單純無任何參照情況下想loop
例如講10次Hello
先要定義一個長度為10嘅常或變量
都幾滑稽
2019-04-25 00:28:30


如果冇咗for loop,重可唔可以整到呢啲pattern出嚟?
2019-04-25 00:36:32
呢啲實驗性research嘢, 到佢有朝一日變做product有人採用先啦
2019-04-25 00:37:24
2019-04-25 00:39:30
你一講我就明呢d lang做緊乜,thx。
不過咁好似冇乜用,如果要loop一千次點算,我用ffmpeg成日都係咁
2019-04-25 02:28:54
2019年model answer:
用functional programming寫code train個ai出嚟做
2019-04-25 09:42:35
map reduce filter呢D我大學學python已經有,之後就javascript
2019-04-25 09:45:14
全世界語言咪一q樣
係d名唔同 又出一隻新lang
2019-04-25 09:45:26
Functors 呢樣嘢係Haskell裡面係普通concept
2019-04-25 10:48:25
屌,map filter reduce咪又係for loop
2019-04-25 10:58:02
我諗佢想針對嘅係nested looping
但係佢個example show唔到
剩係show到佢single loop嘅時候可以寫短啲
吹水台自選台熱 門最 新手機台時事台政事台World體育台娛樂台動漫台Apps台遊戲台影視台講故台健康台感情台家庭台潮流台美容台上班台財經台房屋台飲食台旅遊台學術台校園台汽車台音樂台創意台硬件台電器台攝影台玩具台寵物台軟件台活動台電訊台直播台站務台黑 洞