在伦敦SO DevDay上,Michael Sparks精彩地讲解了Peter Norvig的Python拼写检查器,这促使我重新学习Python。
他强调的一点是Python很干净整洁。不像其他语言为了控制作用域而拥有大量的大括号,Python使用空格来表示代码块的作用域。
这让我想到一个问题:是否正是这种清晰性导致了需要缩进TAB来构建make目标命令所需的命令之间的区分?
同样出于清晰性考虑?以便轻松区分目标和构建目标所需的命令?
在伦敦SO DevDay上,Michael Sparks精彩地讲解了Peter Norvig的Python拼写检查器,这促使我重新学习Python。
他强调的一点是Python很干净整洁。不像其他语言为了控制作用域而拥有大量的大括号,Python使用空格来表示代码块的作用域。
这让我想到一个问题:是否正是这种清晰性导致了需要缩进TAB来构建make目标命令所需的命令之间的区分?
同样出于清晰性考虑?以便轻松区分目标和构建目标所需的命令?
这段话来自于《Unix编程艺术》一书:
为什么在第一列使用制表符?当时Yacc刚出,Lex更是崭新的工具。我两个都没用过,所以我想这会是一个很好的借口去学习一下。在我的第一次尝试中,我被Lex搞得很糊涂,所以我就使用了一个简单的模式,即换行符加制表符。它起作用了,就一直沿用至今。之后几周,我的用户数量约为十几人,他们大多是我的朋友,我不想破坏我的基础用户群。其余的,就成了历史。
-- Stuart Feldman
我认为Makefiles犯了一个错误,坚持使用一个制表符作为缩进。允许使用空格有什么问题?没有精度损失,因为Shell命令无法以空格开头,并且目标行和命令行之间也不会混淆。
.RECIPEPREFIX
的变量,您可以使用它来将配方行引入字符从默认值 (TAB) 更改为其他单个字符。这会使您的 makefile 不太具可移植性,但可能更易读。 - MadScientist