为什么VERTICAL TAB有转义序列?

时间:2011-09-09 21:23:18

标签: escaping special-characters history language-design control-characters

另一个问题What is a vertical tab?描述了最初用于垂直制表符的内容。

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

另见:某个人complaining about this

2 个答案:

答案 0 :(得分:9)

正确答案:TELETYPE

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

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

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

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

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

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

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

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

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

这些电传类型约定非常牢固地存在于操作系统本身 我完全相信这种情况一直存在,直到有人从头开始编写操作系统,即便如此我也是#&# 39;我不太确定。毫无疑问,C语言为什么选择它们。请记住,C在LISP,Forth,COBOL,FORTRAN,Pascal甚至BASIC之后很久才出现。

P.S。使用钟形字符作为分隔符将是一件疯狂的事情。研磨研磨BEEP研磨研磨BEEEEEEP研磨chuka chuka BEEP研磨chuka研磨研磨BEEEP。 Whizzzz笨拙。研磨BEEP ......

答案 1 :(得分:4)

有可能在创建C时,期望垂直制表符和贝尔字符作为代码中的分隔符非常有用,这些分隔符将在ASCII和EBCDIC之间移植,代码必须提供可读且可移植的方式记下他们。虽然可以写

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

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

另一件需要考虑的事情是,C并不是一种人们在未来几十年内会使用的编程语言。它旨在解决一些迫切的需求。在20世纪70年代之后,K& R不会关心是否有人想要VTAB角色;如果他们的直接客户会使用它们,那么将它们包括在内是非常好的理由。

相关问题