2009-11-18 53 views
18

邁克爾·斯帕克斯在倫敦SO DevDay的Peter Norvig的Python拼寫檢查器中的精彩演繹之後,我正在重溫Python。Makefile空白語法背後的原因是什麼?

他強調的一點是如何清理Python來看待。不要使用大括號作爲示波器,而是使用空格來表示塊範圍。

這讓我思考。我想知道這是否是建立制定目標所需的命令之前的TAB縮進背後的原因。

它是一樣的清晰度方面?爲了容易區分目標和構建目標所需的命令?

+1

我總是有點關注重新簽署10k +用戶...你可以請給這個職位的一些反饋? http://meta.stackexchange.com/questions/24030/why-do-they-specify-makefile-tag-instead-of-make/26567#26567 – 2009-11-18 18:50:48

+0

@Pavel,剛發佈了一個答案。 BTW +1的評論。 – 2009-11-19 00:28:36

回答

40

從 「Unix編程藝術」 說到這句話:

爲什麼在第1列的標籤? Yacc是新的,Lex是全新的。我還沒有嘗試,所以我認爲這將是一個很好的藉口學習。在我第一次刺穿Lex之後,我對自己做了一些簡單的修改,使用了newline-tab模式。它的工作,它保持。幾周後,我有大約十幾個用戶,其中大多數是朋友,我不想搞亂我的嵌入式基礎。其餘的,可悲的是,歷史。
- 斯圖爾特費爾德曼
2

我認爲Makefiles犯了一個錯誤,即堅持只是一個製表符縮進。允許空間有什麼危害?沒有精度損失,因爲shell命令無論如何都不能有用地以空格開始,並且目標線和命令行之間沒有混淆。

+0

@Ned,yep同意你的意見。我猜想把它變成「你必須選擇標籤!」我們不必擔心像Pythonic這樣的討論! ( - : – 2009-11-18 15:29:57

+0

@Ned,我認爲makefiles接受了多個空格,並且不僅僅限於一個TAB字符 – 2009-11-23 12:35:29

+1

Makefiles需要配方行以TAB開頭,在TAB之後你可以有許多其他的TAB或使用任何空格而不僅僅是TAB,會破壞成千上萬的makefile,因爲許多makefile使用空格縮進變量賦值或其他非命令行。僅供參考GNU make的新版本定義了一個變量'.RECIPEPREFIX'您可以使用它將默認(TAB)中的食譜行介紹字符更改爲其他單個字符,這使得makefile文件的可移植性降低,但可讀性更高。 – MadScientist 2013-05-23 17:17:36

相關問題