最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

生活工程學(xué)(一):多輪次拆解

2023-07-02 11:01 作者:木鳥雜記  | 我要投稿

我們在工程實(shí)踐中,有些構(gòu)建代碼的小技巧,其背后所體現(xiàn)的思想,生活中也常??梢?。本系列便是這樣一組跨越生活和工程的奇怪聯(lián)想。這是第一篇:多輪次拆解,也即:很多我們習(xí)慣一遍完成的事情,有時(shí)候拆成多個(gè)輪次完成,會更加簡單、高效。

我在進(jìn)行 code review 時(shí),常看到一些新手同學(xué)在一個(gè) for 循環(huán)中干太多事情。常會引起多層嵌套,或者 for 循環(huán)內(nèi)容巨大無比。此時(shí),如果不損失太多性能,我通常建議同學(xué)將要干的事情拆成多少個(gè)步驟,每個(gè)步驟一個(gè) for 循環(huán)。甚至,可以每個(gè)步驟一個(gè)函數(shù)。

當(dāng)然,這些全是從維護(hù)角度著眼的。因?yàn)槿艘幌驴偸怯洸涣颂嗍虑?,一步步來,而不是揉在一塊來,會讓每個(gè)步驟邏輯清晰很多。后者,我通常稱之為”攤大餅“式代碼,這種代碼的特點(diǎn)是寫時(shí)很自然,但是維護(hù)起來很費(fèi)勁——細(xì)節(jié)揉在一起總會讓復(fù)雜度爆炸。軟件工程中的最小可用原型,也是類似的理念。

這種理念,其實(shí)在”函數(shù)式“編程中也隨處可見,即對一個(gè)數(shù)據(jù)集操作時(shí),我們會鏈?zhǔn)降膽?yīng)用一系列變換函數(shù),從而讓數(shù)據(jù)流清晰的展示出來。在大數(shù)據(jù)處理中,這種范式就更常見了,比如 spark 論文中提到的:

SQL 查詢引擎在實(shí)現(xiàn)時(shí)也是用的類似機(jī)制,即將一個(gè)查詢語句,轉(zhuǎn)換成對一個(gè)行列組成的二維數(shù)據(jù)集,施加多輪次的算子變換。如下圖所示。

圖源:CMU15445,查詢引擎講義。

我高中時(shí)學(xué)過一點(diǎn)點(diǎn)素描,雖然沒有入門,但其多輪次的做圖技法給我印象很深:先勾輪廓,再逐層完善。打線的時(shí)候也是一層層的打,而非一個(gè)地方畫完再畫另一個(gè)地方。我最近常常翻譯文章,開始時(shí),我總是務(wù)求一遍翻譯好。但結(jié)果就是非常慢,且很容易放棄。后面開始使用多輪次、逐層打磨法。一開始用 ChatGPT 幫忙翻譯一遍,然后自己再對照原文訂正語義,最后掃一遍調(diào)換語序理順詞句等等。常言道,好文章是改出來的,應(yīng)該也是這個(gè)道理。

滑鐵盧大學(xué)教授 Srinivasan Keshav 在其 ”How to Read a Paper[2]“ 中闡述了經(jīng)典的”三遍(three-pass approach)讀論文“方法,也是類似的思想:

  1. The first pass:鳥瞰式略讀,抓摘要、章節(jié)標(biāo)題、結(jié)論等重點(diǎn)內(nèi)容。

  2. The second pass:稍微細(xì)一些,但不要陷入細(xì)節(jié)。

  3. The third pass:細(xì)讀,完全理解。

其中任何一步都可以及時(shí)停止:這可能不是你需要的論文。但我之前讀論文就常陷入一個(gè)誤區(qū),我愿稱之為”地毯式讀法“——逐字句過每一個(gè)細(xì)節(jié)。包括我剛開始進(jìn)行 code review 時(shí),也常常陷入這個(gè)誤區(qū)。

一次性的、按順序把事情做完,是大部分人的天性,但這種天性往往是低效的,我們要通過不斷地訓(xùn)練來克服。說起來,我和老婆出去點(diǎn)菜的時(shí)候,也常用兩遍法——第一遍把想吃的都加上,第二遍考慮各種約束(偏好強(qiáng)弱、價(jià)格高低、吃過與否等等)來將菜品去到一個(gè)合理的范圍內(nèi)。

我想背后的原因是:

  1. 人的注意力是有限的,因此只擅長一次專注的做好一件事情。

  2. 人的認(rèn)知也是一個(gè)由淺入深的過程,一層層細(xì)化便是利用了這個(gè)特點(diǎn)。

參考資料

[1]?cmu15445 查詢引擎: https://15445.courses.cs.cmu.edu/fall2022/notes/12-queryexecution1.pdf

[2]?How to Read a Paper: http://ccr.sigcomm.org/online/files/p83-keshavA.pdf

題圖故事

南疆,塔合曼濕地,旁邊雪山

本篇文章來自我的小報(bào)童專欄《系統(tǒng)日知錄》,主要關(guān)注分布式系統(tǒng)、存儲和數(shù)據(jù)庫。歡迎喜歡我文章的朋友訂閱支持,激勵(lì)我產(chǎn)出更多優(yōu)質(zhì)文章。訂閱方式見??這里,會保證每周不低于兩篇更新。



生活工程學(xué)(一):多輪次拆解的評論 (共 條)

分享到微博請遵守國家法律
吴堡县| 济阳县| 和林格尔县| 洪湖市| 武穴市| 上栗县| 兴和县| 库车县| 锦屏县| 偏关县| 八宿县| 威海市| 贞丰县| 江西省| 高平市| 嵩明县| 文成县| 米脂县| 崇义县| 丰台区| 新龙县| 绥芬河市| 琼结县| 广丰县| 高台县| 香港 | 上饶市| 塔城市| 神农架林区| 丰县| 合作市| 成武县| 喀喇| 长兴县| 英德市| 吐鲁番市| 建德市| 安仁县| 纳雍县| 吉木乃县| 舒兰市|