回答

3

當創建C時,可能期望垂直製表符和響鈴字符作爲代碼內的分隔符被認爲足夠有用,該代碼將在ASCII和EBCDIC之間移植,代碼必須提供可讀和便攜的方式注意他們。雖然人們可以寫

#define QVTAB "\013" 
printf("Field1" QVTAB "Field2");

我不認爲這種用法是C.最早方言進一步的法律,即使這樣的使用是允許的,使用特殊的宏字符的引用版本或許會被認爲是一點醜陋。我知道這樣的事情在printf可移植類型格式說明符中最終是必需的,但這並不意味着它很漂亮。

需要考慮的另一件事是C並不是一種人們在未來幾十年中會用到的編程語言。它旨在解決一些眼前的需求。 K & R在20世紀70年代之後不會關心任何人是否想要VTAB字符;如果他們的直接客戶可以使用它們,這是包含它們的完美理由。

+0

想想幾十年後,我們幾乎每種語言都有\ v。 –

+0

@CamiloMartin:從嵌入式系統的角度來看,我發現自己希望有一個很好的方式來指出一個字符串應該使用來自源字符集的特定映射存儲到'char []'中的字符中。這種機制已經消除了對特殊外殼'\ v'的需求,並且使得使用與ASCII有關的內部編碼方案的無數嵌入式設備的代碼變得更容易。在C語言中包含一個更大的三角形支持,無論它如何分片,它都是非常可怕的。 – supercat

+0

trigraph支持是什麼意思?我不是C編碼器。 –

5

正確答案:TELETYPE

它虛無縹緲做分隔符。我的父母使用大數據,許多廣播公司和財富500強仍然使用到80年代的打卡。請記住,大多數語言最初設計用於在電傳打字機上輸入和使用,而不是屏幕。打印機不僅僅用於打印今天的文檔。 根本沒有顯示器。打印輸出是顯示。

考慮到這一點,垂直製表符非常有用。即使是後電傳打字,我的父母通過覆蓋更改的部分來更快地渲染表單。因爲當時甚至純文本顯示太慢了!

有趣的視頻:https://www.youtube.com/watch?v=qv5b1Xowxdk

但更重要的是:在現代的操作系統很多,很多,很多事情都是電傳打字機的遺物......不只是垂直選項卡。我們對他們習以爲常,人們甚至不再去想他們,但他們也同樣不可思議。我相信很多人都沒有意識到這些約定來自哪裏,除非自70年代以來一直在進行編碼。

  • 您是否將文本包裝爲80列的代碼或電子郵件?
    由於IBM打卡的字符寬度爲80個字符。

  • 您是否使用支持自下而上編碼的圖形,如Windows位圖或任何圖形庫的原點位於下角?
    由於電傳打字機從下往上滾動。

  • 您是否使用\ n來表示新的文本行?
    因爲\ n代表換行符,它來自手動打字機,然後才用於teletypes。

  • 你有沒有通過在Linux下寫入/ dev/tty發送消息給朋友?
    由於TTY是電傳打字機的縮寫。

  • 你有沒有告訴某人使用現有的圖書館,而不是重新發明輪子?你有沒有使用自己的圖書館或框架?
    因爲這是多久的代碼掛起。當然,好處大於危害,但建立在圖書館之上的圖書館之上的圖書館導致了這種依賴性,即使原始圖書館早已逝去,但與之相容的所有內容都會導致其慣例繼續存在......等等......等等......

這些電傳約定如此根深蒂固到操作系統本身我完全相信這將一直保持,直到有人寫操作系統從頭開始,即使如此,我也不太確定。毫無疑問,C語言爲什麼選擇它們。記住,C在LISP,Forth,COBOL,FORTRAN,Pascal甚至BASIC之後很久了。

P.S.使用鈴鐺字符作爲分隔符會是一件瘋狂的事情。研磨研磨BEEP研磨BEEEEEEP研磨chuka chuka BEEP研磨chuka研磨研磨BEEEP。 Whizzzz clunk。研磨嗶嗶......

相關問題