不以寫效率低下的程式為恥

a1ex5發表於2020-03-12

先感謝 Cliffu 給出的連結,我跑去看了下原文,看來還是有一些味道是翻譯不過來的,看了原文更 能感受到作者的意思。

我在看了這章後,很有感慨。我很同意作者的觀點就是我想要的程式語言是一種能讓我快速簡單地開發 出我想開發的軟體的語言。在我不在研究程式設計和程式語言本身的時候,使用程式語言程式設計只是我想開發 出一個實現我想法的程式的一個步驟而已,我的真正在乎目標是實現一個程式,那個程式完成了我的 想法中的功能,而不管使用那種語言,它只是完成我目標的一個過程,一種工具。但是不同的語言之間 還是有很大差別的。我學的第一門程式語言是C語言,C語言給我的認識是核心很小的語言,語言本身的 特性很小,我很喜歡C語言,因為我學會了,而我應該再也不會忘記C語言了。但是C語言本身的標準庫 卻是非常有限的,當你需要什麼功能時,要不然自己實現,要不然就去找第三方庫去吧,使用起來很不 方便(在想完成自己的一些專案時)。而後面我接觸了Python,我的感覺是:臥槽,這語言用起來也 太爽了吧,自帶的標準庫功能就非常強大了,而且還有很多使用起來非常方便的第三方庫。使用Python, 我總能比較迅速的實現一個我想要的程式,而這才是我想要的。而效率是我關心的重點嗎?其實很多時候 並不是,我能接受Python版程式帶來的一些效能損失和執行時間變長。

作者也說了,即使計算機的硬體效能增長,帶來的效能提升很大可能也會被浪費掉。計算機上的一層 一層的抽象,每一層都在消耗著效能,但是我們還是樂此不疲地新增著一層一層的抽象層,因為每 多做一層抽象,我們就能更方便更直觀更直接的解決我們遇到的問題,而不用再在思考著高層次的問題 的時候還要考慮著底層的實現細節。這肯定會帶來效能損失的,是waste,不過這個是一種good waste, 因為這些抽象讓我們可以以更加簡潔的方式來解決問題。那麼在一層一層的抽象層之上我們的程式在 從底層的視角來看,是非常低效的,浪費了很多的效能;但是在高層的視角來看,我們簡潔明瞭地解決 了問題,而不是花費了很多的時間浪費在了與我們的目標問題無關的其他實現細節上。這樣實現出來的 軟體,可能效率低下,卻並不是爛的。

我認為作者的程式設計思維是浪費機器時間而節省程式設計師的時間。因為即使摩爾定律不成立了,機器計算 速度的增長肯定也是會比程式設計師開發時間的增多來的更加便宜的,那麼我們就沒有必要為了我們現在 明顯可以進行“浪費”的算力而花費大量開發時間來換取不划算的執行效率。

對於未來的程式語言,我的看法是宣告式程式設計(Declarative programming)會變得更流行,雖然 在底層我認為肯定還是使用指令式程式設計實現的,但是在不斷增加的抽象層之上,最終應用層會使用宣告 式程式設計,我們只需要告訴電腦要做什麼就可以了,至於怎麼做就不用應用層程式設計師操心了。

相關文章