6

Otra pregunta, What is a vertical tab?, describe para qué se utilizó originalmente el carácter de tabulación vertical.¿Por qué hay una secuencia de escape para VERTICAL TAB?

Pero, ¿por qué se consideró U+000B VERTICAL TAB lo suficientemente importante como para asignarle una secuencia de escape() en primer lugar, en C y en muchos otros lenguajes de programación?

Vea también: some guy complaining about this.

+0

para que pueda utilizarlo en una cadena/char [], tal vez? –

+0

@ e-MEE: ''\ x00b'' –

+0

@Mechanicalsnail ¿no sería'' \ x0b''? –

Respuesta

3

Es posible que cuando se creó C, se esperaba que los caracteres verticales de tabulación y campana fueran lo suficientemente útiles como delimitadores dentro del código que se trasladarían entre ASCII y EBCDIC que el código debía proporcionar una forma legible y portátil de notificarlos. Aunque se podría escribir

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

No creo que ese uso sea legal en los primeros dialectos de C. Además, incluso si se permite tal uso, el uso de macros especiales para la versión citada de caracteres probablemente habría sido considerado como una poco feo Sé que tales cosas terminaron siendo necesarias en los especificadores de formato de tipo portátil printf, pero eso no significa que sea bonito.

Otra cosa a considerar es que C no fue diseñado para ser un lenguaje de programación que la gente usaría en las décadas por venir. Fue diseñado para resolver algunas necesidades inmediatas. K & A R no le hubiera importado si alguien quisiera personajes VTAB después de la década de 1970; si sus clientes inmediatos tendrían uso para ellos, esa era una razón perfectamente buena para incluirlos.

+0

Pensar que varias décadas después estamos teniendo \ v en prácticamente todos los idiomas. –

+0

@CamiloMartin: Desde una perspectiva de sistemas embebidos, he encontrado a mí mismo deseando para una buena manera de anotar que una cadena se debe almacenar utilizando un mapeo particular, del carácter fuente establecido en caracteres dentro de un 'char [] '. Tal mecanismo habría eliminado la necesidad de '' envoltura especial '', y habría hecho mucho más fácil escribir código para los innumerables dispositivos integrados que usan esquemas de codificación internos que tienen relación con ASCII. Una inclusión más extraña en el lenguaje C es el soporte de trigrafos, que es asombrosamente horrible sin importar cómo uno lo corta. – supercat

+0

¿Qué quiere decir con soporte de trigraph? No soy un codificador de C –

5

respuesta correcta: TELETIPO

Tiene nada que ver con delimitadores. Mis padres trabajaron con Big Data y muchas emisoras y Fortune 500 seguían usando tarjetas perforadas hasta los 80's. Recuerde que la mayoría de los idiomas se diseñaron originalmente para ser ingresados ​​y utilizados en una máquina de teletipo, no en una pantalla. La impresora no era solo para imprimir documentos como lo es hoy. No había ningún monitor. La impresión fue la pantalla.

Teniendo esto en cuenta, las pestañas verticales eran bastante útiles. Incluso después del teletipo, mis padres los usaron para procesar formularios más rápido sobrescribiendo solo las partes que cambiaron. ¡Porque en aquel entonces, incluso la visualización de solo texto era demasiado lenta!

vídeo Diversión: https://www.youtube.com/watch?v=qv5b1Xowxdk

Pero más al punto: Muchas, muchas, muchas cosas en los sistemas operativos modernos son reliquias de la máquina de teletipo ... no sólo pestaña vertical. Estamos tan acostumbrados a ellos que la gente ya ni siquiera piensa en ellos, pero no son menos extraños. Estoy seguro de que muchos no se dan cuenta de dónde vienen estas convenciones a menos que hayan estado codificando desde los años 70.

  • ¿Te texto envolver su código o e-mail en 80 columnas?
    Porque las tarjetas perforadas de IBM tenían 80 caracteres de ancho.

  • ¿Utiliza gráficos que admitan la codificación de abajo hacia arriba, como los mapas de bits de Windows o cualquier biblioteca de gráficos con el origen en la esquina inferior?
    Porque las máquinas de teletipo se desplazaron de abajo hacia arriba.

  • ¿Utiliza \ n para indicar una nueva línea de texto?
    Debido \ n representa un salto de línea, que proviene de las máquinas de escribir antes de que se utilizó en los teletipos.

  • ¿Alguna vez ha enviado un mensaje a un amigo escribiendo a/dev/tty en Linux?
    Porque TTY es la abreviatura de teletipo.

  • ¿Alguna vez le ha dicho a alguien que use una biblioteca existente en lugar de reinventar la rueda? ¿Alguna vez ha usado una biblioteca o marco?
    Porque así es como se bloquea el código antiguo. Ciertamente, los beneficios superan el daño, pero las bibliotecas creadas sobre bibliotecas construidas sobre bibliotecas conducen a esta creciente dependencia de tal manera que incluso cuando la biblioteca original se ha ido hace mucho tiempo, todo lo que alguna vez fue compatible hace que sus convenciones vivan ... y sigue ... y sigue ...

Estas convenciones teletipo están tan firmemente arraigados en el propio sistema operativo espero plenamente esta siempre permanecerá hasta que alguien escribe un sistema operativo desde cero, y aun así no estoy tan seguro. No hay duda de por qué el lenguaje C los recogió. Recuerde, C llegó mucho después de LISP, Forth, COBOL, FORTRAN, Pascal e incluso BASIC.

P.S. Usar el carácter de campana como delimitador hubiera sido una locura. Moler grind grind BEEP grind grind BEEEEEEP grind chuka chuka BEEP grind chuka grind grind BEEEP. Whizzzzz clunk. Grind BEEP rutina ...

Cuestiones relacionadas