为什么VERTICAL TAB有转义序列?

Mec*_*ail 7 history language-design escaping special-characters control-characters

另一个问题,什么是垂直标签?,描述最初用于垂直制表符的内容.

但是为什么被U+000B VERTICAL TAB认为是重要'\v'的,首先在C和许多其他编程语言中分配一个转义序列()?

另见:有人抱怨这个.

lis*_*isa 8

正确答案:TELETYPE

它与分隔符有关.我的父母使用大数据,很多广播公司和财富500强仍在使用高达80年代的打卡.请记住,大多数语言最初设计为在电传打字机上输入和使用,而不是屏幕.打印机不仅仅是用于打印今天的文档.根本没有监视器.打印输出是显示屏.

考虑到这一点,垂直标签非常有用.即使是电传后类型,我的父母也会使用它们通过覆盖改变的部分来更快地渲染表格.因为当时甚至纯文字显示太慢了!

有趣的视频:https://www.youtube.com/watch?v = qv5b1Xowxdk

但更重要的是:现代操作系统中的许多很多东西都是电传打字机的遗物...而不仅仅是垂直标签.我们已经习惯了他们,人们甚至不再考虑他们了,但他们并不那么奇怪.我确定很多人都没有意识到这些惯例来自哪里,除非他们自70年代开始编码.

  • 您是否将您的代码或电子邮件包装在80列?
    因为IBM穿孔卡的宽度为80个字符.

  • 您是否使用支持自下而上编码的图形,例如Windows位图,或者原点位于下角的任何图形库?
    因为电传打字机从下往上滚动.

  • 您是否使用\n来表示新的文本行?
    因为\n代表换行,它来自手动打字机,然后才用于电传手机.

  • 您是否曾通过在Linux下写入/ dev/tty向朋友发送消息?
    因为TTY是电传打字机的缩写.

  • 你有没有告诉别人使用现有的图书馆而不是重新发明轮子?你自己曾经使用过图书馆或框架吗?
    因为那是旧代码的遗留问题.当然,好处大于危害,但是建立在库之上的库之上构建的库导致了这种渐渐的依赖性,即使原始库很久以来一直存在,所以与它兼容的所有内容都会导致它的约定生效. ......以及.......

这些电传类型惯例在操作系统本身中根深蒂固,我完全相信这将永远存在,直到有人从头开始编写操作系统,即便如此,我也不太确定.毫无疑问,C语言为什么选择它们.请记住,C在LISP,Forth,COBOL,FORTRAN,Pascal甚至BASIC之后很久才出现.

PS使用铃声字符作为分隔符将是一件疯狂的事情.研磨研磨BEEP研磨研磨BEEEEEEP研磨chuka chuka BEEP研磨chuka研磨研磨BEEEP.Whizzzz笨拙.研磨BEEP ......


sup*_*cat 2

有可能在创建 C 时,人们期望垂直制表符和钟形字符作为在 ASCII 和 EBCDIC 之间移植的代码中的分隔符足够有用,该代码必须提供一种可读且可移植的方式来表示它们。虽然可以写

#定义QVTAB“\013”
printf("字段1" QVTAB "字段2");

我认为这种用法在最早的 C 方言中是不合法的。此外,即使允许这种用法,对引用版本的字符使用特殊宏可能会被认为有点难看。我知道这些东西最终在 printf 可移植类型格式说明符中是必需的,但这并不意味着它很漂亮。

另一件需要考虑的事情是,C 并不是旨在成为人们在未来几十年使用的编程语言。它旨在解决一些即时需求。K&R 不会关心 1970 年代之后是否有人想要 VTAB 角色;如果他们的直接客户需要使用它们,那么这就是将它们纳入其中的充分理由。