一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

三體問(wèn)題和軟件開(kāi)發(fā)之間的關(guān)系簡(jiǎn)析

bzdlyqxsl ? 來(lái)源:中科院物理所 ? 作者:Krste?i?gori? ? 2022-10-24 10:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

代碼結(jié)構(gòu)之間的關(guān)聯(lián)是隨時(shí)間推移逐漸形成的,因?yàn)槲覀儗⒉煌牟糠忠暈檎w的一部分,在實(shí)際操作中,我們應(yīng)盡量避免這樣做。

最近幾個(gè)月有很多工作需要做,我過(guò)得比較艱難,需要休息一下。我的放松方式是閱讀,我選擇了劉慈欣的《三體》。開(kāi)始閱讀之前,我從未了解過(guò)這本書(shū),也不了解三體問(wèn)題,但是讀完之后我震驚了?!度w》是一本科幻小說(shuō),是地球往事三部曲中的第一部。這本書(shū)構(gòu)造了一個(gè)三體問(wèn)題——經(jīng)典力學(xué)中最復(fù)雜的問(wèn)題之一,并圍繞它講述了一個(gè)故事。所以讓我,在不破壞最初故事的前提下,用我自己的方式做同樣的事情。

三體問(wèn)題

為了解釋三體問(wèn)題以及它和軟件開(kāi)發(fā)的聯(lián)系,讓我從單體問(wèn)題開(kāi)始解釋。單體問(wèn)題更常被稱(chēng)為有心力問(wèn)題(the central-force problem)。有心力問(wèn)題試圖決定一個(gè)受到中心力作用的粒子的運(yùn)動(dòng)狀態(tài),這個(gè)有心力的力源位置固定。更直白地講,恒星可以視為靜止的。行星的運(yùn)動(dòng)可以用三角函數(shù)表示。

考慮稍微復(fù)雜一點(diǎn)的情況,讓我們想象兩個(gè)有質(zhì)量的物體通過(guò)引力互相影響彼此的運(yùn)動(dòng)狀態(tài),也就是二體問(wèn)題。這可以被用來(lái)描述地球和月球圍繞對(duì)方做的運(yùn)動(dòng)。或者舉一個(gè)更好的例子,冥王星和冥衛(wèi)一,就像下面動(dòng)圖描述的一樣。

ff48dca6-528e-11ed-a3b6-dac502259ad0.gif

冥王星—冥衛(wèi)一系統(tǒng)的側(cè)視圖,顯示出冥王星繞著它外面的一點(diǎn)公轉(zhuǎn)。(維基百科)

對(duì)于包括引力在內(nèi)的許多種力來(lái)說(shuō),廣義的二體問(wèn)題可以被轉(zhuǎn)化成兩個(gè)單體問(wèn)題,因此二體問(wèn)題可以完全求解。因此,二體問(wèn)題也存在著對(duì)應(yīng)的解決方案。

但如果我們?cè)偌尤胍粋€(gè)有質(zhì)量的物體,將整個(gè)系統(tǒng)轉(zhuǎn)變?yōu)槿w問(wèn)題,那么事情就變得不可預(yù)測(cè)起來(lái),常常陷入混亂。對(duì)于絕大多數(shù)初始條件,三體問(wèn)題不像單體或二體問(wèn)題那樣有一般的封閉解。

軟件開(kāi)發(fā)中n體問(wèn)題的建立

三體問(wèn)題與軟件開(kāi)發(fā)有什么關(guān)系呢?事實(shí)上并無(wú)關(guān)系。但如果思考這兩件事,我們可以發(fā)現(xiàn)它們有相似之處。彼此影響的強(qiáng)耦合的功能與極弱耦合功能可以在同一個(gè)系統(tǒng)中和平共存,而不會(huì)迫使其中之一發(fā)生改變。讓我們將軟件開(kāi)發(fā)與n體問(wèn)題做一個(gè)比較。

最開(kāi)始事情很簡(jiǎn)單而且易于理解。我們有一個(gè)主角,也就是一個(gè)中心,其他所有事情都圍繞它展開(kāi)。軟件功能不多,不會(huì)彼此沖突。

比如,我們打算開(kāi)發(fā)一個(gè)庫(kù)存管理應(yīng)用。我們需要做的只是插入新條目、增刪數(shù)量以及了解庫(kù)存狀態(tài)。所以我們完成了這些功能。

過(guò)了一段時(shí)間我們需要添加新東西。最好能開(kāi)一家網(wǎng)店來(lái)線上售賣(mài)產(chǎn)品。因此我們開(kāi)始為庫(kù)存管理軟件添加新功能。

首先,要添加一個(gè)網(wǎng)頁(yè)。我們獲取包含可用數(shù)量的庫(kù)存狀態(tài)?,F(xiàn)在這個(gè)網(wǎng)頁(yè)需要描述可用庫(kù)存的狀態(tài),但這并不意味著這些原本可用的商品不在庫(kù)存中了,它們只是換了一種狀態(tài)。所以我們需要在庫(kù)存中設(shè)置一種新?tīng)顟B(tài)。我們需要掌握“現(xiàn)貨”狀態(tài)的商品數(shù)量,以及“可售”狀態(tài)的商品數(shù)量。

但是現(xiàn)在需要更改為網(wǎng)店獲取可用數(shù)量的操作,以反映這一變化。如果我們不能賣(mài)掉它們,那么倉(cāng)庫(kù)里到底有多少商品其實(shí)并不重要。我們只想在網(wǎng)店展示“現(xiàn)貨”數(shù)量。我們需要再次修改網(wǎng)店。

系統(tǒng)中一部分物體的重力吸引其他部分改變運(yùn)動(dòng)狀態(tài)。這兩部分之間存在競(jìng)爭(zhēng),直到二者達(dá)到穩(wěn)定狀態(tài)。一旦我們優(yōu)化了功能,事情就會(huì)回到最初可預(yù)測(cè)的狀態(tài)。所有事情都按計(jì)劃運(yùn)行,這讓我們很高興。我們?nèi)匀豢上鄬?duì)容易地預(yù)測(cè)接下來(lái)會(huì)發(fā)生什么,并知道一個(gè)部分的改變會(huì)如何影響其他部分。

ff92ef58-528e-11ed-a3b6-dac502259ad0.gif

兩個(gè)質(zhì)量有“微小”差別的物體繞共同的質(zhì)心運(yùn)動(dòng)(維基百科)

但事情可以被優(yōu)化。我們可以為顧客提供快遞服務(wù)。因此我們檢查了現(xiàn)有的系統(tǒng),并在每一步都做出改變。快遞服務(wù)改變了庫(kù)存,庫(kù)存改變了網(wǎng)站設(shè)計(jì),網(wǎng)站又反過(guò)來(lái)改變了快遞服務(wù),快遞服務(wù)改變了庫(kù)存……

快遞服務(wù)擴(kuò)展了商業(yè)貿(mào)易。一個(gè)倉(cāng)庫(kù)不再能滿足需求,我們希望在更多地方發(fā)展生意,并且系統(tǒng)需要能支持這種工作方式。但這將如何影響現(xiàn)有的系統(tǒng)?庫(kù)存需要調(diào)整以適應(yīng)多個(gè)地點(diǎn)。而由于網(wǎng)站會(huì)減少庫(kù)存的商品數(shù)量,它也需要被改造以支持多個(gè)地點(diǎn)。但怎么做到這些呢?這又要求庫(kù)存和快遞服務(wù)也做出改變……好混亂啊。

ffba6448-528e-11ed-a3b6-dac502259ad0.gif

位于不等邊三角形頂點(diǎn)的三個(gè)初始速度為零的相同物體的近似軌跡(維基百科)

回到單體問(wèn)題

我們?cè)撊绾伪苊膺@個(gè)問(wèn)題?我們有怎樣才能避免某一個(gè)功能對(duì)其他功能產(chǎn)生嚴(yán)重影響?

太陽(yáng)系有許多質(zhì)量足夠大的行星,它們可以影響彼此的運(yùn)動(dòng)狀態(tài)。然而,如果我們?cè)噲D預(yù)測(cè)地球圍繞太陽(yáng)公轉(zhuǎn)的軌道,我們完全可以忽略所有行星而只關(guān)注太陽(yáng)和地球。這會(huì)給我們足夠好的關(guān)于實(shí)際運(yùn)動(dòng)的初始近似。對(duì)于木星和其他任何行星軌道的預(yù)測(cè)也是一樣。

如果我們將軟件系統(tǒng)的兩個(gè)功能解耦,我們就可以像太陽(yáng)系中的行星一樣處理它們。一個(gè)行星的重力不足以影響另一個(gè)行星的軌道。雖然它們確實(shí)仍然互相影響,但這些影響帶來(lái)的改變不會(huì)十分明顯,一些情況下甚至不存在。

設(shè)想如果我們?cè)噲D計(jì)算未來(lái)十年復(fù)活節(jié)的日期。復(fù)活節(jié)是一個(gè)基督教節(jié)日,在每年春分后第一個(gè)月圓夜后的第一個(gè)周日。當(dāng)我們計(jì)算這些日期時(shí),我們真的在意木星的79個(gè)衛(wèi)星嗎?當(dāng)然不,我們也不必這么做。

我們把軟件開(kāi)發(fā)的解決方案分解成許多小部分,讓每一部分都圍繞著“太陽(yáng)”運(yùn)行。這里的“太陽(yáng)”可以是信息中介、服務(wù)總線、或者只是已經(jīng)建立好的契約(接口)。我們決定我們的“太陽(yáng)系”需要多大程度的解耦。環(huán)繞太陽(yáng)運(yùn)動(dòng)的小部件是模塊、域還是微服務(wù)并不重要,重要的是部件之間要盡可能地獨(dú)立。這會(huì)讓它們更容易被理解。用這種方式計(jì)算復(fù)活節(jié)日期甚至不需要知道木星有79個(gè)衛(wèi)星。

月亮顯著地影響了地球的軌道,這是事實(shí)。如果我們關(guān)心太陽(yáng)和地球的關(guān)系,那么我們并不是在談?wù)摰厍蚝驮铝镰h(huán)繞太陽(yáng)的軌道,我們只是在談?wù)摰厍虻能壍馈o(wú)論一個(gè)功能多么復(fù)雜(比如木星有79個(gè)衛(wèi)星),在整個(gè)系統(tǒng)(比如太陽(yáng)系)中我們只需要將它們視為一個(gè)整體。

用這種方法我們并不需要處理太陽(yáng)系中(大約)一百二十萬(wàn)個(gè)天體,也不需要處理大約700個(gè)行星、小行星或衛(wèi)星。我們只考慮八大行星。因?yàn)橐话愣?,?dāng)我們談?wù)撎?yáng)系時(shí),我們只關(guān)心這八大行星。盡管這樣計(jì)算結(jié)果并不完美,但對(duì)我們來(lái)說(shuō)已經(jīng)足夠精確,不會(huì)在工作中帶來(lái)問(wèn)題。

簡(jiǎn)化問(wèn)題

當(dāng)我們考慮一個(gè)倉(cāng)庫(kù)的庫(kù)存,我們到底在考慮什么?或許是一個(gè)大的倉(cāng)庫(kù)和里面存儲(chǔ)的許多貨品。倉(cāng)儲(chǔ)的工作是什么?為了存儲(chǔ)商品直到被它們被賣(mài)出。我們的軟件系統(tǒng)應(yīng)該只考慮這些功能。

網(wǎng)店應(yīng)該只負(fù)責(zé)展示商品并創(chuàng)建購(gòu)買(mǎi)。但網(wǎng)店中的購(gòu)買(mǎi)需要改變庫(kù)存狀態(tài)。所以如何解決這個(gè)問(wèn)題?現(xiàn)在有很多解決方法,但請(qǐng)恕我直言。

購(gòu)買(mǎi)已經(jīng)是一個(gè)足夠復(fù)雜的功能了。它獲取訂單,檢查庫(kù)存以查看是否有可購(gòu)買(mǎi)的商品,執(zhí)行付款并創(chuàng)建運(yùn)輸。這可能看起來(lái)只是另一個(gè)功能,但由于它的大小,它可以被很容易地分成單獨(dú)的部分。

我們?yōu)閹?kù)存創(chuàng)建嚴(yán)格的合同,根據(jù)合同我們可以得到所有貨物的清單、所有可用貨物的清單,可以檢查這些貨物是否可以售賣(mài)并減少它們的數(shù)量。網(wǎng)店只需知道可用的貨物。如果我們決定在某一點(diǎn)上支持軟刪除,或多個(gè)狀態(tài),就像我們?cè)谏厦娴睦又凶龅哪菢?,網(wǎng)店并不需要知道這些變化。只需更改網(wǎng)店收到的數(shù)據(jù),就可以在網(wǎng)店不知情的情況下完成上述操作。

對(duì)于“購(gòu)買(mǎi)”這一功能,我們需要做相同的事。合同需要一個(gè)操作以完成購(gòu)買(mǎi)。網(wǎng)店發(fā)起這一操作,然后它的任務(wù)就完成了?!百?gòu)買(mǎi)”這一功能接管。它檢查是否有可用的貨品,然后如果一切正常,它完成購(gòu)買(mǎi)并相應(yīng)地減掉庫(kù)存商品數(shù)量。

縱觀整個(gè)系統(tǒng),我們已經(jīng)清晰地分開(kāi)了所有可以獨(dú)立存在的功能(一些而不是另一些)。我們是從庫(kù)存開(kāi)始的,所以它當(dāng)然有自己的系統(tǒng)。接下來(lái)我們添加了“網(wǎng)店”和“購(gòu)買(mǎi)”兩個(gè)可以獨(dú)立實(shí)現(xiàn)的功能。

我們確實(shí)有快遞服務(wù),但目前為止整個(gè)流程并不需要知道它的存在。所以我們也應(yīng)該將其視為一個(gè)獨(dú)立系統(tǒng)。我們不應(yīng)該把它強(qiáng)行加入已有的系統(tǒng)中并讓它們相匹配。

好了?,F(xiàn)在我們還沒(méi)有一個(gè)有著許多有復(fù)雜依賴性的功能的系統(tǒng)。我們有許多子系統(tǒng),每一個(gè)子系統(tǒng)都有特定的復(fù)雜度,它們共同構(gòu)成了一個(gè)相容并可持續(xù)的解決方案。

結(jié)論

建立、維護(hù)并擴(kuò)展軟件是一件復(fù)雜的事。最開(kāi)始可能看起來(lái)很容易?!爸皇翘砑舆@個(gè)功能而已?!钡俏覀兲砑拥臇|西越多,方程就變得越復(fù)雜。如果我們想強(qiáng)行加入太多東西,最終我們會(huì)發(fā)現(xiàn)自己陷入了一個(gè)無(wú)法解決的問(wèn)題中。而二者之間只有一線之隔。

對(duì)于多體問(wèn)題,我們可以盡量簡(jiǎn)化系統(tǒng),把它分成許多小部分。有很多人都可以來(lái)解決這些小的部分,比如小學(xué)生都可以解決單體問(wèn)題。三體問(wèn)題看起來(lái)無(wú)解,然而,這兩類(lèi)問(wèn)題之間的差異乍一看卻很小,因此可以利用軟件設(shè)計(jì)的思路,嘗試化整為零,對(duì)問(wèn)題做一些簡(jiǎn)化近似。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)注

    33

    文章

    9005

    瀏覽量

    153759
  • 解耦
    +關(guān)注

    關(guān)注

    0

    文章

    42

    瀏覽量

    12088

原文標(biāo)題:三體問(wèn)題和軟件開(kāi)發(fā)有什么關(guān)系?

文章出處:【微信號(hào):信息與電子工程前沿FITEE,微信公眾號(hào):信息與電子工程前沿FITEE】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    知識(shí)分享 | 敏捷方法在基于模型的軟件開(kāi)發(fā)項(xiàng)目中的應(yīng)用

    傳統(tǒng)的瀑布式軟件開(kāi)發(fā)流程存在諸多局限,這使得應(yīng)用敏捷原則變得尤為重要,尤其是面對(duì)復(fù)雜且不斷變化的開(kāi)發(fā)環(huán)境時(shí)。作為最高效的軟件開(kāi)發(fā)方法之一,基于模型的開(kāi)發(fā)(MBD)具有諸多優(yōu)勢(shì)。將敏捷原
    的頭像 發(fā)表于 07-16 16:52 ?402次閱讀
    知識(shí)分享 | 敏捷方法在基于模型的<b class='flag-5'>軟件開(kāi)發(fā)</b>項(xiàng)目中的應(yīng)用

    簡(jiǎn)Modbus與MQTT的區(qū)別

    Modbus和MQTT是工業(yè)領(lǐng)域中兩種不同的通信協(xié)議,在設(shè)計(jì)目標(biāo)、應(yīng)用場(chǎng)景、通信模式等方面存在顯著差異,以下從多個(gè)維度簡(jiǎn)兩者的區(qū)別: 1.設(shè)計(jì)目標(biāo)與起源 Modbus 誕生于1979年,由施耐德
    的頭像 發(fā)表于 07-10 14:10 ?151次閱讀

    我國(guó)軟件開(kāi)發(fā)者數(shù)量突破940萬(wàn)

    2024開(kāi)放原子開(kāi)發(fā)者大會(huì)20到21日在武漢舉辦。工業(yè)和信息化部負(fù)責(zé)人透露,我國(guó)軟件開(kāi)發(fā)者數(shù)量突破940萬(wàn)。 開(kāi)源就是開(kāi)放軟件的源代碼,在遵守許可協(xié)議的前提下,任何人都可以使用、修改甚至再發(fā)布源代碼
    的頭像 發(fā)表于 12-24 13:52 ?477次閱讀

    我國(guó)軟件開(kāi)發(fā)者數(shù)量超過(guò)940萬(wàn)

    在近日舉辦的開(kāi)放原子開(kāi)發(fā)者大會(huì)上,工業(yè)和信息化部負(fù)責(zé)人傳來(lái)了一則令人振奮的消息:我國(guó)軟件開(kāi)發(fā)者數(shù)量已經(jīng)突破940萬(wàn)大關(guān)。這一數(shù)據(jù)不僅彰顯了我國(guó)在軟件開(kāi)發(fā)領(lǐng)域的雄厚實(shí)力,也預(yù)示著我國(guó)在全球軟件開(kāi)
    的頭像 發(fā)表于 12-23 11:08 ?618次閱讀

    BQ7690x軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《BQ7690x軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 11-07 10:19 ?1次下載
    BQ7690x<b class='flag-5'>軟件開(kāi)發(fā)</b>指南

    北京軟件開(kāi)發(fā)公司有那些?做軟件的公司有哪些?

    北京作為中國(guó)的科技創(chuàng)新中心之一,擁有眾多提供軟件開(kāi)發(fā)服務(wù)的公司。以下是一些在北京地區(qū)較為知名的軟件開(kāi)發(fā)公司: 華盛恒輝科技有限公司:是一家專(zhuān)注于高端軟件定制開(kāi)發(fā)服務(wù)和高端建設(shè)的服務(wù)機(jī)構(gòu)
    的頭像 發(fā)表于 10-28 15:02 ?1279次閱讀

    TMS320C6201 DSP軟件開(kāi)發(fā)技術(shù)

    電子發(fā)燒友網(wǎng)站提供《TMS320C6201 DSP軟件開(kāi)發(fā)技術(shù).pdf》資料免費(fèi)下載
    發(fā)表于 10-26 09:25 ?0次下載
    TMS320C6201 DSP<b class='flag-5'>軟件開(kāi)發(fā)</b>技術(shù)

    PGA460軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《PGA460軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 10-09 10:30 ?7次下載
    PGA460<b class='flag-5'>軟件開(kāi)發(fā)</b>指南

    PGA450-Q1軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《PGA450-Q1軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-30 14:25 ?1次下載
    PGA450-Q1<b class='flag-5'>軟件開(kāi)發(fā)</b>指南

    ECU電控軟件開(kāi)發(fā)及測(cè)試介紹

    本文重點(diǎn)介紹符合AutoSar架構(gòu)的應(yīng)用軟件開(kāi)發(fā)、MBD開(kāi)發(fā)模式下的軟件質(zhì)量評(píng)估與優(yōu)化方案、復(fù)雜場(chǎng)景下的ECU性能壓力測(cè)試方案。
    的頭像 發(fā)表于 09-26 14:25 ?4052次閱讀
    ECU電控<b class='flag-5'>軟件開(kāi)發(fā)</b>及測(cè)試介紹

    TUSS44x0軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《TUSS44x0軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 10:59 ?0次下載
    TUSS44x0<b class='flag-5'>軟件開(kāi)發(fā)</b>指南

    BQ769x2軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《BQ769x2軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 08-26 09:12 ?1次下載
    BQ769x2<b class='flag-5'>軟件開(kāi)發(fā)</b>指南

    軟件開(kāi)發(fā)分為多少個(gè)階段

    軟件開(kāi)發(fā)分為多少個(gè)階段 第一階段:需要分析及確認(rèn)階段 系統(tǒng)需要分析階段,明確項(xiàng)目需求,確保所有利益相關(guān)者對(duì)項(xiàng)目目標(biāo)、功能、性能、安全、用戶接口等方面有共同的理解和期望。 需求分析:對(duì)收集到的需求
    的頭像 發(fā)表于 08-21 14:27 ?1042次閱讀

    BQ769x2 軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《BQ769x2 軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 08-12 14:41 ?0次下載

    嵌入式軟件開(kāi)發(fā)與AI整合

    嵌入式軟件開(kāi)發(fā)與AI整合是當(dāng)前技術(shù)發(fā)展的重要趨勢(shì)之一。隨著人工智能技術(shù)的快速發(fā)展,嵌入式系統(tǒng)越來(lái)越多地集成了AI算法,以實(shí)現(xiàn)更復(fù)雜的智能功能。以下是關(guān)于嵌入式軟件開(kāi)發(fā)與AI整合的詳細(xì)分析
    的頭像 發(fā)表于 07-31 09:25 ?1368次閱讀
    嵌入式<b class='flag-5'>軟件開(kāi)發(fā)</b>與AI整合