如何理解Linus Torvalds的“什麼才是優秀程式設計師”的話

aqee發表於2012-10-09

來源:外刊IT評論

Linux的創始人Torvalds在一次演講中有一段涉及“什麼才是優秀程式設計師”的話:

“爛程式設計師關心的是程式碼。好程式設計師關心的是資料結構和它們之間的關係。”

這句話聽起來很直白,但未必所有人都能理解其內在的涵義。在國外知名的問答網站stackexchange上有人對這句話提出了自己的困惑:

● 對這句話應該如何理解?

● 如何學習和應用其中的道理?

能問出這樣的問題需要勇氣,提問的人自己也自嘲的說:我不理解這句話也許不是一個好的徵兆。但同一句經典言論,100個閱讀會得到100種不同的領悟,正像stackexchange網站上各式各樣不同的回答一樣。下面我們來看看最被認可的一種理解吧。

如果看一下Torvalds在此句話之前說的話,可能會對我們理解它有幫助:

git的設計其實非常的簡單,它的資料結構很穩定,並且有豐富的文件描述。事實上,我非常的贊同應該圍繞我們的資料結構來設計程式碼,而不是依據其它的,我認為這也是git之所以成功的原因之一[…]依我的觀點,好程式設計師和爛程式設計師之間的差別就在於他們認為是程式碼更重要還是資料結構更重要。

他說的意思是,好的資料結構設計能使程式碼更容易設計和維護,而再好的程式碼也不能彌補糟糕的資料結構帶來的危害。

如果你不理解他舉的git的例子,我再解釋一下,很多的版本控制軟體都會有規律的修改它們的資料格式來支援增加的新特徵。當你升級軟體來獲得新功能時,你通常需要一些工具來轉換到相應的資料庫格式。

舉個例子,當分散式版本控制系統剛剛開始流行時,很多人不知道,為什麼相對那些集中式的版本控制軟體,分散式模式下的程式碼合併會如此的乾淨整潔。答案無它,分散式的資料結構更適合這樣的任務。我相信集中式的合併演算法也在快速的改進,但它需要很長的時間才能趕上,因為老的資料結構限制了他們使用的某些演算法,而新的資料結構破壞了很多現有的程式碼。

相比較而言,git裡的新特徵在不斷湧現,但它底層的資料結構幾乎沒有什麼變化。先考慮資料結構,你的程式碼會自然的整潔起來。

Linus Torvalds

相關文章