一場大雨引發的思考_程式員

來源:互聯網
上載者:User

昨日傍晚時分京城突降大雨,恰逢與同事去公司附近學校食堂吃晚飯,於是我一路狂奔,不過同事倒是淡定,慢慢悠悠,我就問他你不怕挨淋啊,他回答道,走得快走的慢,距離一樣,淋的雨一樣多啦。
這回答讓我一愣,心裡有些犯嘀咕。等到食堂開吃時,我的程式員病就犯了(打個傘就不淋了,非要鑽牛角尖。。),於是我再次提出這個問題:

2個人下雨天由公司去食堂吃飯,一個走的快,一個走的慢,哪個淋雨少。

飯間我想到瞭解決方法。我覺得還是很有意思的,有必要記錄下。
首先說呢,這是問題有複雜的環境因素,所以我能想到的是先將這個問題抽象成一個數學問題,也就是數學建模。
將一些複雜的影響因素,先假定為理想的因素。
這其中不確定的問題有:如何定義下雨,如何定義人的速度,如何定義人的受雨面積。
於是以上問題我先抽象成如下的數學問題。

假設公司距食堂200m,天正下雨(雨量穩定,雨與人行進方向垂直,雨是靜止參考物),雨量是1平方米內1秒有100滴,A以2m/s速度前進,B以1m/s速度前進,人的受雨面積一致,是1平方米,請問到達食堂時誰淋雨少。

抽象成了數學問題,就會與實際問題有所偏差,但數學問題的結果對實際問題還是很有參考意義的。

人的受雨面積是1平方米,可以解釋為一個人在雨中待1秒,會收到100滴雨。

根據這個數學問題,A速度是2m/s,則其走1m是0.5s。B速度1m/s,走1m是1s。

分析到這裡,靈光一閃,想到了核心調度的核心思想,宏觀並行,微觀串列啊。
把要走的200m分為200個1m來看,我們來看下每個人在1m內淋雨量,乘以200,就是總的淋雨量啦。

A走1m用0.5s,可以想象為A在1m內停留0.5s,而人的受雨面積是1平方米,
則A走1m淋雨50滴。

同樣道理,B走1m淋雨100滴。

想到這裡,我突然想到,這個問題完全可以簡化為如下:

A站在雨中100秒,B站在雨中200秒,誰淋雨少。

答案夠明顯了吧,哈哈。

不管我這套方法對錯,由實際問題進行抽象,一步步簡化問題,這個思路對我來說還是很寶貴的。
在平時的工作中,除了嵌入式系統的開發移植,debug也是一個很重要的工作。在解決一些linux kernel系統級的bug時,可能不像某個driver的bug那麼明確好定位,有時會不知道從哪裡下手。
我的感覺,解bug的思路跟淋雨問題的解決思路是一樣的,抽象簡化,可能這個問題有很複雜的異常現象,從這個複雜的異常現象不好debug。
可以先找一個簡單的異常現象入手,抽絲剝繭,肯定會找到bug所在。
之前遇到的一個奇葩bug就是這樣來解決的,連結如下:
http://blog.csdn.net/skyflying2012/article/details/44623515

淋雨問題的這套思路我不敢保證是最好的,畢竟是即興想出來的。
但是我覺得解決這個問題,我想到的數學建模,由繁入簡的思路一定是沒錯的,這對於平時工作中debug還是很有借鑒意義的。

還是那句話,想做系統級程式員,廣闊的思路永遠比知識更重要。

但求好事,莫問前程。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.