近日,關(guān)于CRLF(回車換行)這一程序員們耳熟能詳?shù)母拍睿俅我l(fā)了廣泛的討論。CRLF由CR(r,回車)和LF(n,換行)組成,分別用于將光標(biāo)移動(dòng)到當(dāng)前行的最左側(cè)和下移一行。還有一種新行(NL,newline)的概念,它結(jié)合了這兩者的功能。CRLF主要是為了兼容不同操作系統(tǒng)的文件格式,Windows系統(tǒng)通常采用CRLF作為換行符,而Unix/Linux和macOS則只使用LF。
SQLite數(shù)據(jù)庫(kù)的創(chuàng)始人D. Richard Hipp近期提出,CRLF已經(jīng)過(guò)時(shí),應(yīng)被廢除。他認(rèn)為,CRLF的起源可追溯至70年前的機(jī)械電傳打字機(jī)時(shí)代,在現(xiàn)代計(jì)算機(jī)環(huán)境中已無(wú)實(shí)際用途。他指出,在多數(shù)編程語(yǔ)言和現(xiàn)代機(jī)器中,僅使用LF即可表示新行,CR大多數(shù)情況下已無(wú)必要。
Hipp的這一觀點(diǎn)迅速在程序員群體中引發(fā)了共鳴,但也有不少人持反對(duì)意見(jiàn)。有人認(rèn)為,CRLF在跨平臺(tái)文本文件處理中常引發(fā)混亂,尤其是在編程時(shí)解析這些文件。然而,也有人認(rèn)為處理不同或混合的行結(jié)尾并非復(fù)雜問(wèn)題,不應(yīng)因個(gè)別人的便利而改變現(xiàn)有標(biāo)準(zhǔn)。還有觀點(diǎn)指出,真正的問(wèn)題在于設(shè)計(jì)不良的Unix工具和Git,它們?cè)谔幚硇薪Y(jié)尾時(shí)存在問(wèn)題。
面對(duì)激烈的討論,Hipp最終撤回了自己的提議。他承認(rèn),盡管自己的想法在理論上近乎成功,但現(xiàn)實(shí)中的軟件依賴情況比他預(yù)想的要復(fù)雜得多。