快科技10月15日消息,对于程序员而言,CRLF(回车换行)肯定不陌生,其中CR (\r,回车) 是将光标移动到当前行的最左侧,而和LF (\n,换行)则是将光标下移一行。
此外还有新行 (NL,NewLine),它是指将光标下移一行,并移动到当前行的最左侧。
CRLF 的存在主要是为了兼容不同操作系统的文件格式,通常Windows使用CRLF作为换行符,而Unix/Linux和macOS只使用LF。
近日SQLite数据库的创始人D. Richard Hipp提出,CRLF已经过时,应当被废除。
Hipp认为,CRLF的起源可以追溯到70年前的机械电传打字机时代,而现代计算机环境中早已不再需要这样的字符组合。
他指出,在大多数编程语言和现代机器中,仅使用LF即可表示新行,而CR在大多数情况下已无实际用途。
Hipp甚至提出了四点建议,包括停止使用不必要的CR字符、更改Unicode中U+000a的名称为"newline"而非"linefeed"等。
此观点一出,引发了诸多程序员强烈的共鸣,同时也有不少人持不同的看法。
有人认为CRLF在跨平台文本文件处理中常常引发混乱,尤其是在编程时解析这些文件时。
但同时也有观点认为,处理不同或混合的行结尾并不是一个复杂的问题,不应该因为个别人的便利而改变现有的标准。
还有观点指出,真正的问题在于那些设计不良的Unix工具和Git,它们在处理行结尾时存在问题。
面对讨论Hipp最终撤回了自己的提议,他承认,尽管自己的想法在理论上几乎成功,但现实中的软件依赖情况比他预想的要复杂得多。