國(guó)際象棋作為可計(jì)算數(shù)據(jù)
我們使用Wolfram 語(yǔ)言的目標(biāo)是使盡可能多的可計(jì)算性。版本13.2 添加了另一個(gè)域- 國(guó)際象棋 -支持導(dǎo)入 FEN和 PGN 國(guó)際象棋格式:
PGN文件通常包含許多游戲,每個(gè)游戲都表示為FEN字符串的列表。這將計(jì)算特定PGN文件中的游戲數(shù)量:
這是文件中的第一個(gè)游戲:
鑒于此,我們現(xiàn)在可以使用Wolfram 語(yǔ)言的視頻功能來(lái)制作游戲視頻:
控制失控計(jì)算
早在1979 年,當(dāng)我開(kāi)始構(gòu)建SMP(Wolfram語(yǔ)言的前身)時(shí),我做了一件對(duì)某些人來(lái)說(shuō)似乎非常大膽,甚至可能是魯莽的事情:我建立系統(tǒng)從根本上進(jìn)行“無(wú)限評(píng)估”,也就是說(shuō),繼續(xù)使用任何給定的定義,直到無(wú)能為力。換言之,評(píng)價(jià)過(guò)程將一直持續(xù)到達(dá)到一個(gè)固定點(diǎn)。“但是如果x沒(méi)有值,你說(shuō)x= x + 1會(huì)發(fā)生什么?”人們會(huì)問(wèn)?!澳菢拥脑?,系統(tǒng)不會(huì)爆炸嗎?”嗯,從某種意義上說(shuō)是的。但我賭了一把,人們真正想做的對(duì)普通計(jì)算進(jìn)行無(wú)限評(píng)估的好處將遠(yuǎn)遠(yuǎn)超過(guò)任何看似“毫無(wú)意義的極端情況”(如x = x + 1)可能出現(xiàn)的問(wèn)題。好吧,43年后,我想我可以自信地說(shuō),那場(chǎng)賭博成功了。無(wú)限評(píng)估的概念- 結(jié)合 Wolfram語(yǔ)言的符號(hào)結(jié)構(gòu) -一直是巨大力量的源泉,大多數(shù)用戶根本就沒(méi)有遇到過(guò),也永遠(yuǎn)不必考慮x = x + 1 的“極端情況”。
但是,如果您鍵入x = x +1,則系統(tǒng)顯然必須執(zhí)行某些操作。從某種意義上說(shuō),最純粹的事情就是永遠(yuǎn)繼續(xù)計(jì)算。但是34年前,這導(dǎo)致了實(shí)際計(jì)算機(jī)上的災(zāi)難性問(wèn)題-事實(shí)上今天仍然如此。因?yàn)橐话銇?lái)說(shuō),這種重復(fù)評(píng)估是一個(gè)遞歸過(guò)程,最終必須使用操作系統(tǒng)為每個(gè)程序?qū)嵗O(shè)置的調(diào)用堆棧來(lái)實(shí)現(xiàn)。但是操作系統(tǒng)的工作方式(仍然?。┦菫槎褩V环峙涔潭〝?shù)量的內(nèi)存- 如果這被溢出,操作系統(tǒng)只會(huì)讓你的程序崩潰(或者,在早期,操作系統(tǒng)本身可能會(huì)崩潰)。這意味著從版本1 開(kāi)始,我們就需要在無(wú)限評(píng)估方面有一個(gè)限制。在早期版本中,我們?cè)噲D給出“到目前為止的計(jì)算結(jié)果”,包裝在Hold 中?;氐桨姹?0,我們開(kāi)始只返回原始表達(dá)式的保留版本:
但即使這樣在某種意義上也不安全。因?yàn)橛辛似渌麩o(wú)限的定義,人們最終可能會(huì)遇到這樣一種情況:即使試圖返回持有的形式也會(huì)觸發(fā)額外的無(wú)限計(jì)算過(guò)程。
最近,特別是隨著我們對(duì)多計(jì)算的探索,我們決定重新審視如何限制無(wú)限計(jì)算的問(wèn)題。在某個(gè)理論層面上,人們可以想象使用超限數(shù)之類的東西明確表示無(wú)限計(jì)算。但這充滿了困難,并且具有明顯的不可判定性(“這個(gè)無(wú)限計(jì)算輸出真的和那個(gè)一樣嗎?”等)。但是在版本13.2 中,作為一種新的“純符號(hào)”“失控計(jì)算”方法的開(kāi)始,我們引入了構(gòu)造TerminatedEvaluation——正如它所說(shuō),它只是象征性地表示終止計(jì)算。
所以這是現(xiàn)在x = x + 1 發(fā)生的情況:
這樣做的一個(gè)顯著特征是它是“獨(dú)立封裝的”:計(jì)算的一部分的終止不會(huì)影響其他部分,因此,例如,我們得到:
終止評(píng)估和延遲評(píng)估之間存在復(fù)雜的關(guān)系,我們正在開(kāi)發(fā)該領(lǐng)域一些有趣且可能強(qiáng)大的新功能。但就目前而言,終止評(píng)估是在計(jì)算失控的極端情況下提高系統(tǒng)“安全性”的重要結(jié)構(gòu)。引入它使我們能夠解決多年來(lái)圍繞復(fù)雜失控計(jì)算的“理論上無(wú)法解決”的問(wèn)題。
終止評(píng)估是如果您遇到像$RecursionLimit這樣的系統(tǒng)范圍的“護(hù)欄”,您會(huì)遇到的情況。但在版本13.2 中,我們還加強(qiáng)了對(duì)顯式請(qǐng)求中止的處理— 通過(guò)將新選項(xiàng)“PropagateAborts 添加到CheckAbort”。一旦生成了中止(直接使用Abort[ ]),或者由于TimeConstrained[ ] 或MemoryConstrained[]之類的結(jié)果生成了中止,就會(huì)出現(xiàn)中止應(yīng)該傳播多遠(yuǎn)的問(wèn)題。默認(rèn)情況下,它會(huì)一直向上傳播,因此您的整個(gè)計(jì)算最終將被中止。但是從版本2(1991年)開(kāi)始,我們就有了函數(shù)CheckAbort,它檢查給定表達(dá)式中的中止,然后停止中止的進(jìn)一步傳播。
但是在諸如時(shí)間約束[]之類的問(wèn)題上總是有很多棘手之處。由這些生成的中止是否應(yīng)該以與中止[] 中止相同的方式傳播?在版本13.2 中,我們現(xiàn)在已經(jīng)清理了所有這些,并使用顯式選項(xiàng)PropagateAborts forCheckAbort。使用PropagateAborts→True,所有中止都會(huì)被傳播,無(wú)論是由Abort[]還是TimeCompated[]或其他什么啟動(dòng)。傳播中止→錯(cuò)誤傳播不中止。但也有PropagateAborts→Automatic,它從TimeConstrained[]等傳播中止,但不從Abort[]傳播中止。
另一個(gè)小列表函數(shù)
在我們永無(wú)止境的擴(kuò)展和完善Wolfram語(yǔ)言的過(guò)程中,我們一直在尋找人們反復(fù)想要做的“大量計(jì)算工作”,我們可以為此創(chuàng)建具有易于理解的名稱的函數(shù)。如今,我們經(jīng)常在Wolfram 函數(shù)存儲(chǔ)庫(kù)中對(duì)此類函數(shù)進(jìn)行原型設(shè)計(jì),然后進(jìn)一步簡(jiǎn)化其設(shè)計(jì), 并最終在永久核心 Wolfram語(yǔ)言中實(shí)現(xiàn)它們.在版本13.2 中,此過(guò)程只產(chǎn)生了兩個(gè)新的基本列表操作函數(shù):PositionGreatest和 PositionSmallest。
自版本1 以來(lái),我們一直擁有Position 函數(shù),以及Max。但多年來(lái),我經(jīng)常發(fā)現(xiàn)自己需要做的事情是將這些結(jié)合起來(lái)來(lái)回答這個(gè)問(wèn)題:“這個(gè)列表的最大值在哪里?當(dāng)然,在Wolfram 語(yǔ)言中做到這一點(diǎn)并不難——Position[list,Max[list]]基本上就是這樣做的。但是有一些邊緣情況和擴(kuò)展需要考慮,只有一個(gè)函數(shù)來(lái)做到這一點(diǎn)很方便。而且,更重要的是,現(xiàn)在我們有了像TakeLargest這樣的函數(shù),這個(gè)函數(shù)有一個(gè)明顯的、一致的名稱:PositionLargest。(我所說(shuō)的“顯而易見(jiàn)”,是指你聽(tīng)完之后顯而易見(jiàn);我們直播的設(shè)計(jì)評(píng)審會(huì)議的檔案會(huì)揭示——就像經(jīng)常發(fā)生的情況一樣——我們實(shí)際上花了相當(dāng)長(zhǎng)的時(shí)間才確定“顯而易見(jiàn)”。
這是位置最大和在行動(dòng):
而且,是的,它必須返回一個(gè)列表來(lái)處理“關(guān)系”:
審核編輯 :李倩
-
Wolfram
+關(guān)注
關(guān)注
0文章
16瀏覽量
7706 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6630瀏覽量
123060 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4265瀏覽量
62262
原文標(biāo)題:Wolfram 語(yǔ)言與Mathematica 13.2 版本(6)
文章出處:【微信號(hào):哲想軟件,微信公眾號(hào):哲想軟件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論