Makefile 空格语法背后的原因是什么?

发布于 2024-08-11 19:33:45 字数 243 浏览 2 评论 0原文

在 Michael Sparks 在伦敦的 SO DevDay 上出色地演示了 Peter Norvig 的 Python 拼写检查器之后,我正在重新审视 Python。

他强调的要点之一是 Python 看起来是多么干净。没有用大括号表示范围,而是使用空格来指示块范围。

这让我思考。我想知道这是否就是构建 make 目标所需命令前面的 TAB 缩进背后的原因。

是同样的清晰度吗?为了轻松地区分目标和构建目标所需的命令?

I'm revisiting Python after Michael Sparks's excellent walk through of Peter Norvig's Python spell checker at the SO DevDay in London.

One of the points he highlighted was how clean Python is to look at. Not cluttered with braces for scopes but using white space to indicate block scope instead.

This got me thinking. I wonder if that is the reason behind the TAB indentations that are prepended to the commands needed to build a make target.

Was it the same clarity aspect? To readily distinguish between a target and the commands needed to build the target?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

゛时过境迁 2024-08-18 19:33:45

来自“Unix 编程的艺术”中的这句话:

为什么选项卡位于第 1 列? Yacc 是新的,Lex 是全新的。我也没有尝试过,所以我认为这是一个很好的学习借口。在第一次尝试 Lex 之后,我就用 newline-tab 模式做了一些简单的事情。它起作用了,它留下来了。几周后,我的用户数量大约有十几个,其中大多数是朋友,我不想搞砸我的嵌入式基础。遗憾的是,其余的都已成为历史。
——斯图尔特·费尔德曼

From "The Art of Unix Programming" comes this quote:

Why the tab in column 1? Yacc was new, Lex was brand new. I hadn't tried either, so I figured this would be a good excuse to learn. After getting myself snarled up with my first stab at Lex, I just did something simple with the pattern newline-tab. It worked, it stayed. And then a few weeks later I had a user population of about a dozen, most of them friends, and I didn't want to screw up my embedded base. The rest, sadly, is history.
-- Stuart Feldman

辞取 2024-08-18 19:33:45

我认为 Makefile 犯了一个错误,即坚持使用一个制表符进行缩进。留出空间有什么坏处?不会有任何精度损失,因为 shell 命令无论如何都不能有效地以空格开头,并且目标行和命令行之间不会产生混淆。

I think Makefiles make the mistake of insisting on precisely one tab character for indentation. What's the harm in allowing spaces? There's no loss of precision, since shell commands can't usefully begin with spaces anyway, and there's no confusion between target lines and command lines.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文