寫于2011年, 紀(jì)念曾經(jīng)開發(fā)流媒體服務(wù)器的日子
Rob Pike 編程原理
Brook
The magic number seven
緊湊:
c,python 半緊湊
其余,不緊湊
C++, 反緊湊
編程風(fēng)格的元素
初心
只做好一件事情
可復(fù)用庫架構(gòu)的守則和方法
列集,散集:序列化,反序列化
互用性,透明性, 可擴展性, 存儲/事務(wù)處理的經(jīng)濟性;首先考慮經(jīng)濟型是一種過早優(yōu)化
文本是最好的交互手段,如果擔(dān)心性能問題,就在應(yīng)用協(xié)議之上或者之下壓縮文本協(xié)議流
當(dāng)你想設(shè)計一個復(fù)雜的二進制文件格式,或是一個復(fù)雜的二進制應(yīng)用協(xié)議時,最明智的做法是躺下來等待這種感覺過去
xmltk, pyxie: xml
DSV:優(yōu)良的格式,鍵值對的情況
《系統(tǒng)設(shè)計中的端對端論》
統(tǒng)一資源定位符:url
《機器美學(xué):優(yōu)雅和技術(shù)本質(zhì)》
設(shè)計要注意的問題:
程序中遞歸調(diào)用超過四次就要擔(dān)心
全局唯一的記錄器捕獲系統(tǒng)的高層級狀態(tài)
特殊情況使得代碼難以理解
API是否正交
magic number
區(qū)別隱藏細節(jié)和無法訪問細節(jié)
文本化器和瀏覽器
拿不準(zhǔn),就窮舉
《作為第四代語言的unix shell》
《對遠程過程調(diào)用范式的批評》
多線程是進城生成代價昂貴,ipc功能薄弱的操作系統(tǒng)的選擇
《為什么線程是個餿主意》
編程其實就是管理復(fù)雜度的問題
程序員每百行代碼的出錯率和所使用的編程語言在很大程度上無關(guān)
m4
《The Humane Interface》
用戶接口設(shè)計模式:
編譯器模式
ed模式:需要持續(xù)的交互式對話
接收器模式
源模式
Cantrip模式 : 沒有輸入,沒有輸出,只被調(diào)用一次,產(chǎn)生退出狀態(tài)數(shù)值
海綿,在接受數(shù)據(jù)前需要讀入全部的輸入
引擎和接口分離:分解成幾個相互通訊的進程,而不是龐然大物,每個進程只做一件事情并且做好
假脫機/守護進程
基于語言
牽扯環(huán)境因素最少,交互最少的模式
Mac的開發(fā)者曾經(jīng)擁有最丑陋的Unix內(nèi)部架構(gòu),他們以交互為中心,由外向內(nèi)設(shè)計,而Unix則相反,現(xiàn)在他們試圖融合
《敏捷宣言》
《無根的根》
《The Unix Programming Environment》
《The pragmatic programmer》
《The practice of programming》
《zen flesh, zen bones》
《Timeless Way of Building》
《A pattern language》
《Death March》
用軟件包的名字或者主題關(guān)鍵字加上"Howto"或者"FAQ",用它作為關(guān)鍵字在網(wǎng)上搜索,會有更有用的資料。
blivet:描述把十磅馬糞硬塞進五磅麻袋的行為:過專用陷阱
New Jersey哲學(xué)
Freshmeat
用GNU軟件編程
lex