1. 程式人生 > >【新手向】什麽是“框架”?

【新手向】什麽是“框架”?

隨筆 一派胡言

如果你開始接觸編程,肯定會聽說“框架”這個詞,“Django”、“Spring”、“TensorFlow”、“Flask”這些名字也隨處可見。我一度被這些概念困擾,畢竟它們不像clojure,kotlin一樣是名字奇怪的編程語言,而是“基於某種語言”;它們的介紹裏會開門見山地說“這是一個框架”,然而你此時並不知道什麽是框架。

  我也可以開門見山地說,框架就是一個庫(用於import或include之物)——但你需要重新思考什麽是庫。

  舉個例子,用python寫一個網頁服務程序,完全可以不使用任何框架,python自帶的庫(urllib)完全足夠。如果是教程裏的簡單例子,代碼可能僅有十幾行。但是當你想做更大、更復雜的東西,你就會發現代碼開始膨脹,重復的代碼越來越多,你意識到應當把重復的部分單獨出來寫成一個函數,然後用不同的參數調用它。當這些函數也多起來的時候,你意識到應當把這些函數放到一個額外的文件裏。於是你原本的文件由於調用了函數,會變得非常精煉:實現不同的服務程序,互相重復的代碼變得很少。此時你就可以稱那個存放了一堆函數的文件為一個“框架”了。

  在完成其他任務的時候,這一過程是一致的:把重復的工作打包成一些函數,裝進一個單獨的地方。但是之所以有“框架”這個名字,是因為相比之前,所用的代碼在整體上換了邏輯,寫代碼的重心發生了改變。你也不能用先前的邏輯寫代碼了,因為可能一堆if else判斷被字典代替,不同語句的參數變成了同一個函數的參數……你得重新學習這些風格,這仿佛是“語言中的語言”——語言是對使用機器的抽象,而框架是對使用語言的抽象,不過每次抽象都是要花費額外的精力的。

【新手向】什麽是“框架”?