五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

程序算法與人生選擇

2019-12-11 10:16 作者:韋東山  | 我要投稿

作者:陳皓(左耳朵皓子)

原文:https://coolshell.cn/articles/10688.html

寫于2012,雖然過去很久了,現(xiàn)在讀來依然很受啟發(fā),或許這就是好文的標(biāo)準(zhǔn)吧,不隨著時間的流逝而減弱。


每年一到要找工作的時候,我就能收到很多人給我發(fā)來的郵件,總是問我怎么選擇他們的offer,去騰訊還是去豆瓣,去外企還是去國內(nèi)的企業(yè),去創(chuàng)業(yè)還是去考研,來北京還是回老家,該不該去創(chuàng)新工場?該不該去thoughtworks?……等等,等等。今年從7月份到現(xiàn)在,我收到并回復(fù)了60多封這樣的郵件。我更多幫他們整理思路,幫他們明白自己最想要的是什么。(注:我以后不再回復(fù)類似的郵件了)。我深深地發(fā)現(xiàn),對于我國這樣從小被父母和老師安排各種事情長大的人,當(dāng)有一天,父母和老師都跟不上的時候,我們幾乎完全不知道怎么去做選擇。而我最近也離開了亞馬遜,換了一個工作。又正值年底,就像去年的那篇《三個故事和三個問題》一樣,讓我想到寫一篇這樣的文章。

幾個例子

當(dāng)我們在面對各種對選擇的影響因子的時候,如:城市,公司規(guī)模,公司性質(zhì),薪水,項(xiàng)目,戶口,技術(shù),方向,眼界…… 你總會發(fā)現(xiàn),你會在幾個公司中糾結(jié)一些東西,舉幾個例子:

·???????? 某網(wǎng)友和我說,他們?nèi)ド虾rv訊,因?yàn)轵v訊的規(guī)模很大,但卻發(fā)現(xiàn)薪水待遇沒有豆瓣高(低的還不是一點(diǎn)),如果以后要換工作的話,起薪點(diǎn)直接關(guān)系到了以后的高工資。我說那就去豆瓣吧,他說豆瓣在北京,污染那么嚴(yán)重,又沒有戶口,生存環(huán)境不好。我說去騰訊吧,他說騰訊最近組織調(diào)整,不穩(wěn)定。我說那就去豆瓣吧,慢公司,發(fā)展很穩(wěn)當(dāng)。他說,豆瓣的盈利不清楚,而且用Python,自己不喜歡。我說,那就去騰訊吧,……

·???????? 還有一網(wǎng)友和我說,他想回老家,因?yàn)槔霞业娜嗣}關(guān)系比較好,能混得好。但又想留在大城市,因?yàn)榇蟪鞘锌梢蚤_眼界。

·???????? 另一網(wǎng)友和我說,他想進(jìn)外企,練練英語,開開眼界,但是又怕在外企里當(dāng)個螺絲釘,想法得不到實(shí)施。朋友拉他去創(chuàng)業(yè),覺得創(chuàng)業(yè)挺好的,鍛煉大,但是朋友做的那個不知道能不能做好。

·???????? 還有一網(wǎng)友在創(chuàng)新工場的某團(tuán)隊(duì)和考研之間抉擇,不知道去創(chuàng)新工場行不行,覺得那個項(xiàng)目一般,但是感覺那個團(tuán)隊(duì)挺有激情的,另一方面覺得自己的學(xué)歷還不夠,讀個研應(yīng)該能找到更好的工作。

·???????? 還有一些朋友問題我應(yīng)該學(xué)什么技術(shù)?不應(yīng)該學(xué)什么技術(shù)?或是怎么學(xué)會學(xué)得最快,技術(shù)的路徑應(yīng)該是什么?有的說只做后端不做前端,有的說,只做算法研究,不做工程,等等,等等。因?yàn)樗麄冇X得人生有限,術(shù)業(yè)有專攻。

·???????? 等等,等等……


我個人覺得,如果是非計(jì)算機(jī)科班出生的人不會做選擇,不知道怎么走也罷了,但是我們計(jì)算機(jī)科班出生的人是學(xué)過算法的,懂算法的人應(yīng)該是知道怎么做選擇的。

排序算法

你不可能要所有的東西,所以你只能要你最重要的東西,你要知道什么東西最重要,你就需要對你心內(nèi)的那些欲望和抱負(fù)有清楚的認(rèn)識,不然,你就會在糾結(jié)中度過。所以,在選擇中糾結(jié)的人有必要參考一下排序算法。

·???????? 首先,你最需要參考的就是“冒泡排序”——這種算法的思路就是每次冒泡出一個最大的數(shù)。所以,你有必要問問你自己,面對那些影響你選擇的因子,如果你只能要一個的話,你會要哪個?而剩下的都可以放棄。于是,當(dāng)你把最大的數(shù),一個一個冒泡出來的時候,并用這個決策因子來過濾選項(xiàng)的時候,你就能比較容易地知道知道你應(yīng)該選什么了。這個算法告訴我們,人的雜念越少,就越容易做出選擇。

·???????? 好吧,可能你已茫然到了怎么比較兩個決策因子的大小,比如:你分不清楚,工資>業(yè)務(wù)前景嗎?業(yè)務(wù)前景>能力提升嗎?所以你完全沒有辦法進(jìn)行冒泡法。那你不妨參考一個“快速排序”的思路——這個算法告訴我們,我們一開始并不需要找到最大的數(shù),我們只需要把你價值觀中的某個標(biāo)準(zhǔn)拿出來,然后,把可以滿足這個價值的放到右邊,不能的放到左邊去。比如,你的標(biāo)準(zhǔn)是:工資大于5000元&&業(yè)務(wù)前景長于3年的公司,你可以用這個標(biāo)準(zhǔn)來過濾你的選項(xiàng)。然后,你可以再調(diào)整這個標(biāo)準(zhǔn)再繼續(xù)遞歸下去。 這個算法告訴我們,我們的選擇標(biāo)準(zhǔn)越清晰,我們就越容易做出選擇。這是排序算法中最經(jīng)典的兩個算法了,面試必考。相信你已爛熟于心中了。所以,我覺得你把這個算法應(yīng)用于你的人生選擇也應(yīng)該不是什么問題。關(guān)于在于,你是否知道自己想要的是什么?

排序算法的核心思想就是,讓你幫助你認(rèn)清自己最需要的是什么,認(rèn)清自己最想要的是什么,然后根據(jù)這個去做選擇。

貪婪算法

所謂貪婪算法,是一種在每一步選擇中都采取在當(dāng)前狀態(tài)下最好或最優(yōu)(即最有利)的選擇(注意:是當(dāng)前狀態(tài)下),從而希望導(dǎo)致結(jié)果是最好或最優(yōu)的算法。貪婪算法最經(jīng)典的一個例子就是哈夫曼編碼。

對于人類來說,一般人在行為處事的時候都會使用到貪婪算法,

·???????? 比如在找零錢的時候,如果要找補(bǔ)36元,我們一般會按這樣的順序找錢:20元,10元,5元,1元。

·???????? 或者我們在過十字路口的時候,要從到對角線的那個街區(qū)時,我們也會使用貪婪算法——哪邊的綠燈先亮了我們就先過到那邊去,然后再轉(zhuǎn)身90度等紅燈再過街。

這樣的例子有很多。對于選擇中,大多數(shù)人都會選用貪婪算法,因?yàn)檫@是一個比較簡單的算法,未來太復(fù)雜了,只能走一步看一步,在當(dāng)前的狀況下做出最利于自己的判斷和選擇即可。

有的人會貪婪薪水,有的人會貪婪做的項(xiàng)目,有的人會貪婪業(yè)務(wù),有的人會貪婪職位,有的人會貪婪自己的興趣……這些都沒什么問題。貪婪算法并沒有錯,雖然不是全局最優(yōu)解,但其可以讓你找到局部最優(yōu)解或是次優(yōu)解。

其實(shí),有次優(yōu)解也不錯了。貪婪算法基本上是一種急功近利的算法,但是并不代表這種算法不好,如果貪婪的是一種長遠(yuǎn)和持續(xù),又未嘗不可呢?

動態(tài)規(guī)劃

但是我們知道,對于大部分的問題,貪婪法通常都不能找出最優(yōu)解,因?yàn)樗麄円话銢]有測試所有可能的解。因?yàn)樨澙匪惴ㄊ且环N短視的行為,只會根據(jù)當(dāng)前的形式做判斷,也就是過早做決定,因而沒法達(dá)到最佳解。

動態(tài)規(guī)劃和貪婪算法的最大不同是,貪婪算法做出選擇,不能在過程優(yōu)化。動態(tài)規(guī)劃則會保存以前的運(yùn)算結(jié)果,并根據(jù)以前的結(jié)果對當(dāng)前進(jìn)行選擇,會動態(tài)優(yōu)化功能。動態(tài)規(guī)劃算法至少告訴我們兩個事:

1)承前啟后非常重要,當(dāng)你準(zhǔn)備去做遍歷的時候,你的上次的經(jīng)歷不但能開啟你以后的經(jīng)歷,而且還能為后面的經(jīng)歷所用。你的每一步都沒有浪費(fèi)。

2)是否可以回退也很重要。這意思是——如果你面前有兩個選擇,一個是A公司一個是B公司,如果今天你選了A公司,并不是你完全放棄了B公司。而是,你知道從A公司退出來去B公司,會比從B公司退出來去A公司要容易一些。

比如說:你有兩個offer,一個是Yahoo,一個是Baidu,上述的第一點(diǎn)會讓我們思考,我以前的特長和能力更符合Yahoo還是Baidu?而Yahoo和Baidu誰能給我開啟更大的平臺?上述的第二點(diǎn)告訴我們,是進(jìn)入Yahoo后如果沒有選好,是否還能再選擇Baidu公司?還是進(jìn)入Baidu公司后能容易回退到Y(jié)ahoo公司?

Dijkstra最短路徑

最短路徑是一個Greedy + DP的算法。相當(dāng)經(jīng)典。這個算法的大意如下:

1)在初始化的時候,所有的結(jié)點(diǎn)都和我是無窮大,默認(rèn)是達(dá)不到的。

2)從離自己最近的結(jié)點(diǎn)開始貪婪。

3)走過去,看看又能到達(dá)什么樣的結(jié)點(diǎn),計(jì)算并更新到所有目標(biāo)點(diǎn)的距離。

4)在貪婪與原點(diǎn)最短的結(jié)點(diǎn),如此反復(fù)。

這個算法給我們帶來了一些這樣的啟示:

·???????? 有朋友和我說過他想成為一個架構(gòu)師,或是某技術(shù)領(lǐng)域的專家,并會踏踏實(shí)實(shí)的向這個目標(biāo)前進(jìn),永不放棄。我還是鼓勵了他,但我也告訴他了這個著名的算法,我說,這個算法告訴你,架構(gòu)師或某領(lǐng)域的專家對你來說目前的距離是無窮大,他們放在心中,先看看你能夠得著的東西。

·???????? 所謂踏實(shí),并不是踏踏實(shí)實(shí)追求你的目標(biāo),而是踏踏實(shí)實(shí)把你夠得著看得見的就在身邊的東西干好。我還記得我剛參加工作,從老家出來的時候,從來沒有想過要成為一個技術(shù)牛人,也從來沒有想過我的博客會那么的有影響力,在做自己力所能及,看得見摸得著的事情,我就看見什么技術(shù)就學(xué)什么,學(xué)著學(xué)著就知道怎么學(xué)更輕松,怎么學(xué)更扎實(shí),這也許就是我的最短路徑。

·???????? 有很多朋友問我要不要學(xué)C++,或是問我學(xué)Python還是學(xué)Ruby,是不是不用學(xué)前端,等等。這些朋友告訴我,他們不可能學(xué)習(xí)多個語言,學(xué)了不用也就忘了,而且術(shù)業(yè)有專攻。這并沒有什么不對的,只是我個人覺得,學(xué)習(xí)一個東西沒有必要只有兩種狀態(tài),一種是不學(xué),另一種是精通。了解一個技術(shù)其實(shí)花不了多少時間,我學(xué)C++的目的其實(shí)是為了更懂Java,學(xué)TCP/IP協(xié)議其實(shí)是為了更懂Socket編程,很多東西都是連通和相輔相成的,學(xué)好了C/C++/Unix/TCP等這些基礎(chǔ)技術(shù)后,我發(fā)現(xiàn)到達(dá)別的技術(shù)路徑一下縮短了(這就是為什么我用兩天時間就可以了解Go語言的原因)。

·???????? 這就好像這個算法一樣,算法效率不高,也許達(dá)到你的目標(biāo),你在一開始花了很長時間,遍歷了很多地方,但是,這也許這就是你的最短路徑(比起你達(dá)不到要好得多。

算法就是Trade-Off

你根本沒有辦法能得到所有你想得到的東西,任何的選擇都意味著放棄——當(dāng)你要去獲得一個東西的時候,你總是需要放棄一些東西。人生本來就是一個蹺蹺板,一頭上,另一頭必然下。

這和我們做軟件設(shè)計(jì)或算法設(shè)計(jì)一樣,用時間換空間,用空間換時間,還有CAP理論,總是有很多的Trade-Off,正如這個短語的原意一樣——你總是要用某種東西去交易某種東西。

我們都在用某種東西在交易我們的未來,有的人用自己的努力,有的人用自己的思考,有的人用自己的年輕,有的人用自己的自由,有的人用自己的價值觀,有的人用自己的道德…… …… 有的人在交換金錢,有的人在交換眼界,有的人在交換經(jīng)歷,有的人在交換地位,有的人在交換能力,有的人在交換自由,有的人在交換興趣,有的人在交換虛榮心,在交換安逸享樂…… ……

每個人有每個人的算法,每個算法都有每個算法的purpose,就算大家在用同樣的算法,但是每個人算法中的那些變量、開關(guān)和條件都不一樣,得到的結(jié)果也不一樣。我們就是生活在Matrix里的一段程序,我們每個人的算法決定著我們每個人的選擇,我們的選擇決定了我們的人生。

(全文完)

聯(lián)系我們

對于這篇文章您怎么看?歡迎加群討論(加群方式:添加管理員微信13163769879,會拉您到對應(yīng)的技術(shù)交流群)

掃描下方二維碼關(guān)注公眾號百問科技,后臺回復(fù):書單,獲取嵌入式Linux學(xué)習(xí)書單。



程序算法與人生選擇的評論 (共 條)

分享到微博請遵守國家法律
玉树县| 阳朔县| 土默特左旗| 巨鹿县| 右玉县| 天祝| 丁青县| 西和县| 巴彦淖尔市| 抚松县| 清苑县| 建水县| 大邑县| 高密市| 丰台区| 民勤县| 城口县| 兴国县| 肥城市| 博野县| 临海市| 汶川县| 栾川县| 陈巴尔虎旗| 萨嘎县| 鹰潭市| 无为县| 浙江省| 河间市| 夏津县| 屏边| 临清市| 南充市| 孝义市| 蓬安县| 阳泉市| 万载县| 龙江县| 南华县| 宝坻区| 扬州市|