《枕邊算法書》閱讀筆記

? ? 前些天買了一本新書《枕邊算法書》([韓] 林栢濬 著;崔盛一 譯,人民郵電出版社,2018),也是想作為睡前讀物看看??戳艘粋€(gè)晚上,確實(shí)如書名所言,文章主要以作者的經(jīng)歷,寫的比較貼近程序員生活,不像傳統(tǒng)的一些算法或編程書比較刻板。這么寫的優(yōu)點(diǎn)是作者通過自己的經(jīng)歷,從自身角度出發(fā),通過一個(gè)個(gè)實(shí)際遇到的小問題小故事,寫得生動(dòng)有趣。當(dāng)然,也有缺點(diǎn),因?yàn)閺淖陨沓霭l(fā),所以有些想法很主觀,對現(xiàn)在的國內(nèi)開發(fā)者,并不一定完全合適。

? ?先說說看了第一章前幾節(jié)的一些共鳴:對自己編寫的代碼進(jìn)行單元測試,是“必須”的,而非“可選”環(huán)節(jié)。這點(diǎn)我深有感觸,不能因?yàn)橼s進(jìn)度,自己都不測試一下就把代碼提交,至少在團(tuán)隊(duì)協(xié)作中,每個(gè)人要對自己編寫的代碼負(fù)責(zé),這確實(shí)是工作態(tài)度問題。大部分情況下,查找bug是考驗(yàn)韌勁和注意力的過程,與奇思妙想或精妙構(gòu)思相比,查找bug更多地需要毅力。經(jīng)常調(diào)試別人的代碼時(shí)提高編程能力的捷徑之一。這點(diǎn)我非常同意,因?yàn)槲易陨砉ぷ鞯脑?,?jīng)常要對別人的代碼進(jìn)行二次開發(fā),而這個(gè)過程可以學(xué)到很多技巧。而即使有遇到不明白的地方,由于工作原因,也會(huì)迫使自己去學(xué)習(xí),或者去請教相關(guān)的知識(shí)。

? ? 而一些作者主觀的內(nèi)容,也很明顯,也可能和作者國籍有關(guān),有些我甚至覺得太為難自己。第一章里作者就幾次通宵熬夜,這種不放棄的毅力值得學(xué)習(xí),但我不支持常年加班熬夜,身體健康更為重要,畢竟“活著才能寫出代碼”。而他的另一個(gè)觀點(diǎn),“不能再承諾時(shí)間內(nèi)完成任務(wù)的人,壓根算不上是程序員”,我想了下,也許他是沒遇到過需求一天變?nèi)兊漠a(chǎn)品經(jīng)理吧。此外,作者覺得想“一下子”解開算法問題的都只是編程菜鳥,“高手”應(yīng)該是一步一步向著最終目標(biāo)前進(jìn)的。我覺得,真正的高手才是那種“靈光一閃”,然后“一下子”解決問題的人,一步一步按部就班解決問題并不一定是“高手”,但是可以說是“閱歷豐富”,至少很穩(wěn)健。比如小學(xué)生做數(shù)學(xué)題:8x134,按部就班的學(xué)生會(huì)列“豎式”進(jìn)行一步一步按位乘法計(jì)算,真正的高手會(huì)是8x134=8x(125+9)=1000+72=1072. 此外,作者覺得有紙筆的情況下,3分鐘以內(nèi)應(yīng)該能解開愛因斯坦的那道邏輯題。我才疏學(xué)淺,開了個(gè)excel表記錄,花了大概5分鐘解開了。這種謎題如同作者所言像查找bug時(shí)找凌亂的線頭,其實(shí)毅力更為重要,大家不用糾結(jié)是3分鐘,還是5分鐘。另外我想說的是,好記性不如爛筆頭,借助工具可以讓你更有效地提高效率。

接下去分享一下昨天看到的幾個(gè)趣題,確實(shí)不錯(cuò)。

1. 一個(gè)島上有N個(gè)和尚,紅眼睛是被詛咒過的,如果知道自己是紅眼睛,當(dāng)晚就會(huì)自裁。但是他們規(guī)定,不能告訴別人或者問別人自己的眼睛顏色,島上也沒有鏡子或其他可以看到自己眼睛顏色的條件。直到有一天,一個(gè)游客來玩,說了一句:你們之中至少有一人是紅眼睛。接下去島上發(fā)生了可怕的事。 這個(gè)故事最終從遞歸角度來講,解釋了所有情況,淺顯易懂。

2. 大家要習(xí)慣寫“防御型代碼”,增加代碼的健壯性。作者用了個(gè)很通俗易懂的例子來說明了Java中常見的NullPointerException,一道數(shù)學(xué)題:假設(shè)a=b, 那么a平方 = ab,a平方-b平方=ab-b平方,(a-b)(a+b)=b(a-b),a+b=b,b+b=b,2b=b,2=1。實(shí)際編程中經(jīng)常遇到這種類似的看起來很低級(jí)的錯(cuò)誤,因此需要寫“防御型代碼”規(guī)避類似的“低級(jí)錯(cuò)誤”。

3.挑戰(zhàn)一下自己,用Java或其他編程語言編寫一段代碼,內(nèi)容是輸出這段代碼本身。

4. 愛因斯坦的那道邏輯題:五個(gè)國家的人住在5棟屋子里,彼此愛好不同的飲料、香煙,養(yǎng)不同的寵物。①英國人住紅房子。②瑞典人養(yǎng)狗。③丹麥人喝茶。④綠房子緊鄰在白房子左側(cè)。⑤綠房子主人喝咖啡。⑥抽“長紅”牌香煙的人養(yǎng)鳥。⑦黃房子主人抽“登喜路”牌香煙。⑧正中央房子的主人喝牛奶。⑨挪威人住在最左側(cè)房屋。⑩抽Blends牌香煙的人住在養(yǎng)貓人隔壁。?養(yǎng)馬人住在抽“登喜路”牌香煙的人隔壁。?抽Bluemaster牌香煙的人喝啤酒。?德國人抽Prince牌香煙。?挪威人和藍(lán)房子主人相鄰。?抽Blends牌香煙的人與喝礦泉水的人是鄰居。問:誰養(yǎng)鳥???

這道邏輯題我正好身邊沒紙筆,借助了excel,感覺和做數(shù)獨(dú)差不多,線索還是很線性很明顯的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,063評(píng)論 25 709
  • 《讓未來現(xiàn)在就來》彭小六︱#1000本書計(jì)劃#NO.108 “接地氣的高效”,這是本書一開始就強(qiáng)調(diào)的主線。 作者用...
    梵曦FANXI閱讀 432評(píng)論 0 0
  • 你要求別人做的 別人不愿意 你可以撒嬌 可以不爽 同樣我對你有一樣需求的時(shí)候 你卻已經(jīng)擺好了滿臉的不爽 讓我根本無...
    Arc空有少女心閱讀 234評(píng)論 0 0
  • “人都愛挑軟柿子捏” “人善被人欺,馬善被人騎” 從小,大人就告訴我們,你要當(dāng)一個(gè)好孩子,聽媽媽的話。上學(xué)時(shí),老師...
    影視葩姐閱讀 1,170評(píng)論 0 2
  • 文/唐宋 夜空的彈孔被烏云縫補(bǔ) 雪浪席卷著零度以下的黑色 風(fēng)暴隱匿在求索的指尖上 寂靜漂泊向謙卑的燈火 風(fēng)聲裹緊了...
    唐宋a閱讀 139評(píng)論 0 2

友情鏈接更多精彩內(nèi)容