复制粘贴一遍回复:
除非你只用一个空格,缩进用空格就是逻辑上扯蛋的,总是无法避免在源文件编码层次上允许光标卡进缩进内部出现“半个缩进”的破坏不变量奇葩状态,跟 malloc 到处乱飞找不到 free 的破烂代码本质上是同种的可恶。顺带还没事 bloat 一下源代码。
虽然(水平)制表符在语义上也不那么适合缩进,但至少没这种低级问题,在许多语言的基本字符集内也没别的得选的。于是高下立判。
注意在根本上,前缀空格干的活是对齐。虽然缩进可以提示对齐,插入缩进跟缩进的理由逻辑上完全是两码事。
至于可读性,py 式缩进直接干掉了 free form 语法允许具有的上下文无关性,分析这坨玩意儿现实就没法只是 parser 的事(想用 parser 做对会极其扭曲),基本只能加语义预处理,又是个不适合机器又不适合熟练的人类阅读者的奇葩设计,纯属没事找事的自以为是了。另一方面,无法局部调整缩进导致传统纸质书那样的分页排版在换页处的可读性极其看脸,一不小心跨页就得数缩进,怎么看都比用括号直接从视觉上显式辅助定位恶心得多。
相对来说,写起来可能还能用 IDE 和结构化编辑器(现在还基本是空气)解决,没读起来那么严重。但是要把这个混淆成可读性,心智多少有些问题。
@
youdoit yaml 的垃圾程度比缩进大得多。
@
rozbo 共存?试试 Haskell ?
在你显然对被迫记忆上下文相关的缩进的语义(虽然技术上被钦定为语法)没什么经验的时候,姑且还是给你一些反悔的机会吧。