另一个问题What is a vertical tab?描述了最初用于垂直制表符的内容。
但是为什么U+000B VERTICAL TAB
被认为足够重要,首先在C和许多其他编程语言中分配转义序列('\v'
)?
另见:某个人complaining about this。
答案 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角色;如果他们的直接客户会使用它们,那么将它们包括在内是非常好的理由。