Articulo de referencia

barra invertida

La barra invertida \ es un signo tipográfico utilizado principalmente en informática y matemáticas . Es la imagen especular de la barra inclinada común ('solidus'), / . Es un si...

La barra invertida \ es un signo tipográfico utilizado principalmente en informática y matemáticas . Es la imagen especular de la barra inclinada común ('solidus'), / . Es un signo relativamente reciente, documentado por primera vez en la década de 1930. A veces se la denomina hack , whack , escape (de C / UNIX ), reverse slash , slosh , backslant , backwhack , bash , reverse slant , reverse solidus y reversed virgule . [ 1 ] [ 2 ]

Historia

Un teclado perforador Wheatstone para teletipo de la década de 1930, con barra invertida al final de la tercera fila.
Diseño de teclado Teletype ASR-33 con conjunto de caracteres ASCII , anterior al 14 de junio de 1966, con barra invertida en shift+L

Lo que podría ser la primera referencia documental al carácter es un manual de mantenimiento de 1937 de la Teletype Corporation , que incluye una fotografía que muestra el teclado de su perforador de teclado Kleinschmidt WPE-3 utilizando el sistema Wheatstone . [ 3 ] En un documento de 1945, Teletype utilizó el nombre "clave diagonal" para el símbolo, [ 4 ] y le da un código Morse (no estándar) de ▄ ▄ . [ 5 ] [ a ] ​​Ninguno de los documentos da su uso.      

En junio de 1960, IBM publicó un "estándar de conjunto de caracteres extendido" que incluía el símbolo en 0x19. [ 6 ] En septiembre de 1961, Bob Bemer de IBM propuso al comité de estándares X3.2 que los caracteres [, ], y \se incluyeran en el estándar propuesto, describiendo la barra invertida como un "operador de división inversa" y citando su uso previo por Teletype en telecomunicaciones. En particular, dijo que la \ era necesaria para que los operadores booleanos ALGOL ( conjunción lógica ) y ( disyunción lógica ) pudieran componerse usando /\ y \/ respectivamente. El Comité adoptó estos cambios en el borrador del Estándar Americano (posteriormente llamado ASCII ) en su reunión de noviembre de 1961. [ 6 ]

Estos operadores se usaban para min y max en las primeras versiones del lenguaje de programación C suministrado con Unix V6 [ 7 ] y V7. [ 8 ]

Uso

Lenguajes de programación

En muchos lenguajes de programación como C , Perl , PHP , Python y lenguajes de scripting de Unix , y en muchos formatos de archivo como JSON , la barra invertida se usa como carácter de escape , para indicar que el carácter que le sigue debe tratarse de forma especial (si de otro modo se trataría literalmente), o literalmente (si de otro modo se trataría de forma especial). Por ejemplo, dentro de una cadena literal de C, la secuencia \nproduce un byte de nueva línea en lugar de una 'n', y la secuencia \"produce una comilla doble real en lugar del significado especial de la comilla doble que finaliza la cadena. Una barra invertida real se produce mediante una doble barra invertida \\.

Los lenguajes de expresiones regulares lo usaban de la misma manera, cambiando caracteres literales subsiguientes por metacaracteres y viceversa. Por ejemplo, \ | | b busca '|' o 'b', la primera barra se escapa y se busca, la segunda no se escapa y actúa como un "o".

Fuera de las cadenas entre comillas, el único uso común de la barra invertida es ignorar ("escapar") un salto de línea inmediatamente posterior. En este contexto, se la puede denominar "línea continua" [ 9 ] , ya que la línea actual continúa en la siguiente. Algunos programas reemplazan la barra invertida y el salto de línea con un espacio. [ 10 ]

Para dar soporte a ordenadores que carecían del carácter de barra invertida, se añadió el trigrafo de C??/ , equivalente a una barra invertida. Dado que este puede escapar el siguiente carácter, que a su vez puede ser una coma ?, su principal uso moderno podría ser la ofuscación de código . El soporte para trigrafos en C++ se eliminó en C++17 , y en C se eliminó en C23 . [ 11 ]

En Visual Basic (y algunos otros dialectos de BASIC ) la barra invertida se utiliza como símbolo de operador para indicar la división entera . [ 12 ] Esto redondea hacia cero.

En APL, \ se llama Expand cuando se usa para insertar elementos de relleno en matrices, y Scan cuando se usa para producir reducción de prefijo (pliegue acumulativo).

En PHP versión 5.3 y superior, la barra invertida se utiliza para indicar un espacio de nombres . [ 13 ]

En Haskell , la barra invertida se utiliza tanto para introducir caracteres especiales como para introducir funciones lambda (ya que es una aproximación razonable en ASCII de la letra griega lambda, λ) . [ 14 ]

nombres de archivo

MS-DOS 2.0, lanzado en 1983, copió la idea de un sistema de archivos jerárquico de Unix y, por lo tanto, usó la barra inclinada (hacia adelante) como separador de directorios. [ 15 ] Posiblemente por insistencia de IBM, [ 16 ] [ 17 ] Microsoft agregó la barra invertida para permitir que las rutas se escribieran en el indicador del intérprete de línea de comandos, manteniendo la compatibilidad con MS-DOS 1.0 (en el que / era el indicador de opción de línea de comandos. Escribir " DIR/W " daba la opción "wide" al comando " DIR ", por lo que se necesitaba algún otro método si uno realmente quería ejecutar un programa llamado W dentro de un directorio llamado DIR ). Excepto por COMMAND.COM , todas las demás partes del sistema operativo aceptan ambos caracteres en una ruta , pero la convención de Microsoft sigue siendo usar una barra invertida, y las API que devuelven rutas usan barras invertidas. [ 18 ] En algunas versiones , el carácter de opción se puede cambiar de / a - a través de SWITCHAR , lo que permite a COMMAND.COM conservar / en el nombre del comando.

La familia de sistemas operativos Microsoft Windows heredó el comportamiento de MS-DOS y, por lo tanto, aún admite ambos caracteres; sin embargo, algunos programas y subsistemas de Windows pueden, erróneamente, aceptar solo la barra invertida como delimitador de ruta, o interpretar erróneamente una barra inclinada si se usa como tal. Algunos programas solo aceptan barras inclinadas si la ruta se coloca entre comillas dobles . [ 19 ] El hecho de que las funciones de seguridad de Microsoft no reconozcan las barras inclinadas con direcciones inesperadas en las rutas locales y de Internet, mientras que otras partes del sistema operativo aún las procesan, ha dado lugar a graves fallos de seguridad. Se ha accedido a recursos que no deberían estar disponibles con rutas que utilizan combinaciones particulares, como http://example.net/secure\private.aspx . [ 20 ] [ 21 ]

Marcado de texto

La barra invertida se utiliza en el sistema de composición tipográfica TeX y en los archivos RTF para iniciar las etiquetas de marcado.

En USFM , [ 22 ] la barra invertida se utiliza para marcar características de formato para editar traducciones de la Biblia .

En notación de circunflejo , ^\representa el carácter de control 0x1C, separador de archivos . [ 23 ]

Matemáticas

Se utiliza un símbolo similar a una barra invertida para la diferencia de conjuntos . [ 24 ]

La barra invertida también se usa a veces para denotar el espacio de clases laterales derechas . [ 25 ]

Especialmente al describir algoritmos informáticos, es común definir la barra invertida de manera que a \ b sea equivalente a a / b . [ 26 ] Esta es una división entera que redondea hacia abajo, no hacia cero.

En MATLAB y GNU Octave, la barra invertida se usa para la división de matrices por la izquierda , mientras que la barra inclinada (hacia adelante) se usa para la división de matrices por la derecha. [ 27 ]

Confusión con ¥ y otros caracteres

En las codificaciones japonesas ISO 646-JP (un código de 7 bits basado en ASCII ), JIS X 0201 (un código de 8 bits) y Shift JIS (una codificación multibyte de 8 bits para ASCII), el punto de código 0x5C, que se usaría para la barra invertida en ASCII, se representa como el símbolo del yen ¥ . Debido al uso generalizado del punto de código 005C para representar el símbolo del yen, incluso hoy en día algunas fuentes, como MS Mincho, representan la barra invertida como ¥, por lo que los caracteres en los puntos de código Unicode U+00A5 ¥ YEN SIGN y U+005C \ REVERSE SOLIDUS se representan como ¥ cuando se seleccionan estos conjuntos de caracteres . Los programas informáticos siguen tratando 005C como una barra invertida en estos entornos, pero lo muestran como un símbolo del yen, lo que causa confusión, especialmente en los nombres de archivo de MS-DOS. [ 28 ]

Varias versiones de ISO 646 también reemplazan la barra invertida con otros caracteres, como (coreano), Ö (alemán, sueco), Ø (danés, noruego), ç (francés) y Ñ (español), lo que genera problemas similares, aunque con un impacto menos duradero en comparación con el símbolo del yen. Si bien el conflicto se resuelve mediante la asignación de puntos de código únicos en Unicode, la longevidad de los sistemas heredados implica que, aunque cada vez menos frecuente, el problema persiste.

En 1991, el RFC 1345 sugirió como un mnemónico// único de dos caracteres que podría usarse en los estándares de Internet como "una forma práctica de identificar [este] carácter, sin referencia a un conjunto de caracteres codificados y su código en [ese] conjunto de caracteres codificados". [ 29 ] En consecuencia, este estilo puede verse en los primeros documentos del Grupo de Trabajo de Ingeniería de Internet .

Unicode

Unicode tiene puntos de código para una variedad de símbolos de barra invertida:

  • U+005C \ SÓLIDO INVERSO ( & bsol; )
  • U+29F5 OPERADOR DE SÍNDICE INVERSO
  • U+29F9 GRAN SÓLIDO INVERSO
  • U+2572 DIBUJOS DE CAJAS LUZ DIAGONAL SUPERIOR IZQUIERDA A INFERIOR DERECHA
  • U+FE68 PEQUEÑA SÓLIDA INVERSA
  • U+FF3C SÓLIDO INVERSO DE ANCHO COMPLETO
  • U+244A OCR DOBLE BARRA INVERSA
  • U+2216 ESTABLECER MENOS
  • U+1F67D 🙽 SÓLIDO INVERSO MUY PESADO

Notas

  1. Este es el inverso del código para el símbolo de barra inclinada ( ).      

Referencias

  1. Diccionario Macquarie (3.ª edición)
  2. Raymond, Eric S. "ASCII" . The Jargon File . Archivado del original el 18 de enero de 2019. Consultado el 28 de julio de 2007 .
  3. Boletín 125, número 2: Descripción y ajustes del perforador Wheatstone del teletipo (PDF) . Teletype Corporation. Mayo de 1938 [agosto de 1937]. pág. ii. Archivado (PDF) del original el 12 de febrero de 2021. Recuperado el 15 de marzo de 2021 a través de navy-radio.com. 
  4. «Boletín 188: Juego de perforadoras automáticas para teletipo» (PDF) . Teletype Corporation. Agosto de 1945. pág. 6. Archivado (PDF) del original el 19 de diciembre de 2021. Recuperado el 19 de diciembre de 2021 a través de navy-radio.com. 
  5. «Boletín 1025, número 3: Piezas para perforador de piedra de trigo de teletipo» (PDF) . Teletype Corporation. Julio de 1945. pág. 9. Archivado (PDF) del original el 19 de diciembre de 2021. Recuperado el 19 de diciembre de 2021 a través de navy-radio.com. 
  6. 1 2 Fischer, Eric (20 de junio de 2000). "La evolución de los códigos de caracteres, 1874-1968" (PDF) . págs. 14-15 (Tabla 35). Archivado (PDF) del original el 30 de noviembre de 2022. Recuperado el 30 de noviembre de 2022 . Referencias: Bemer, RW; Buchholz, W. (1 de junio de 1960). Un estándar de conjunto de caracteres extendido (Informe técnico). Laboratorio de Desarrollo de Productos, División de Sistemas de Datos, International Business Machines Corporation. TR 00.721.Colección de estándares informáticos, Centro de Archivos, Museo Nacional de Historia Americana, Instituto Smithsonian, caja 1.
  7. "C compilador fuente" . bitsavers.org . 1975. Archivado del original el 15 de agosto de 2011. Consultado el 11 de octubre de 2009 .
  8. "C compilador fuente" . mit.edu . 1979. Archivado del original el 3 de diciembre de 2013. Consultado el 11 de octubre de 2009 .
  9. "El preprocesador de C" . GNU.org . Archivado del original el 3 de agosto de 2021. Consultado el 4 de enero de 2021 .
  10. "3.1.1 Dividir líneas largas" . Manual de GNU make . Archivado del original el 5 de junio de 2018. Recuperado el 28 de julio de 2019 .
  11. Seacord, Robert C. "¿Eliminar trígrafos?!" (PDF) . www.open-std.org .
  12. "Operadores aritméticos en Visual Basic" . Características del lenguaje Visual Basic: Operadores y expresiones . MSDN. 10 de julio de 2012. Archivado del original el 17 de septiembre de 2012. Consultado el 7 de octubre de 2012 .
  13. "Descripción general de los espacios de nombres" . php.net . Archivado del original el 16 de octubre de 2012. Consultado el 10 de octubre de 2012 .
  14. O'Sullivan, Stewart y Goerzen, Real World Haskell , cap. 4: funciones anónimas (lambda), pág. 99
  15. "¿Por qué el carácter de ruta de DOS es "\"?" . Blogs.msdn.com. 24-06-2005. Archivado del original el 19-11-2022 . Consultado el 16-06-2013 .
  16. Necasek, Michal (24 de mayo de 2019). "¿Por qué Windows realmente usa la barra invertida como separador de rutas?" . Museo OS/2 . Archivado del original el 24 de mayo de 2019 . Recuperado el 28 de mayo de 2019 .
  17. Larson, Chris; Immerwahr, Don (1983), Código fuente de MS-DOS v1.25 y v2.0, README.txt , Microsoft, archivado del original el 21 de noviembre de 2022 , recuperado el 21 de noviembre de 2022 , El manual del usuario contiene algunos errores significativos. La mayoría de estos se deben a cambios de última hora para lograr un mayor grado de compatibilidad con la implementación de MS-DOS de IBM (PC DOS). Esto incluye el uso de "\" en lugar de "/" como separador de ruta, y "/" en lugar de "-" como carácter de conmutación. Para transportar archivos por lotes entre máquinas, Microsoft recomienda el uso de "\" y "/" respectivamente en el mercado estadounidense. [...] Pedimos disculpas por cualquier inconveniente que estos cambios hayan podido causar a su personal de publicaciones técnicas.
  18. "Método Path.GetFullPath" . Biblioteca de clases de .NET Framework . Microsoft. Archivado del original el 21 de diciembre de 2008. Consultado el 2 de enero de 2009 .
  19. "¿Cuándo empezó Windows a aceptar la barra inclinada como separador de ruta?" . Bytes.com. Archivado del original el 6 de febrero de 2009. Consultado el 2 de enero de 2009 .
  20. Kaplan, Simone (2004). "Microsoft investiga una falla en ASP.NET" . DevSource, patrocinado por Microsoft . Ziff Davis Enterprise Holdings Inc. Recuperado el 14 de junio de 2009 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  21. Burnett, Mark (2004). "Agujeros de seguridad profundos" . SecurityFocus. Archivado del original el 2 de febrero de 2021. Consultado el 14 de junio de 2009 .
  22. "USFM – Marcadores de formato estándar unificado" . paratext.org . 18 de abril de 2017. Archivado del original el 13 de agosto de 2020. Recuperado el 30 de junio de 2013 .
  23. "Conjunto de caracteres de control C0, 1987" . pd.infn.it. Archivado del original el 6 de septiembre de 2019. Consultado el 14 de marzo de 2021 .
  24. "Cantidades y unidades – Parte 2: Signos y símbolos matemáticos que se utilizarán en las ciencias naturales y la tecnología" . ISO 80000-2:2009 . Organización Internacional de Normalización. 15 de abril de 2008. Archivado del original el 26 de marzo de 2014. Consultado el 7 de octubre de 2012 .
  25. "Definición: Espacio de clases laterales" . ProofWiki. Archivado del original el 26 de febrero de 2021. Consultado el 1 de febrero de 2017 .
  26. "División entera" . mathworld.wolfram.com . Archivado del original el 21 de febrero de 2020. Consultado el 10 de marzo de 2020 .
  27. Eaton, John W.; David Bateman; Søren Hauberg (febrero de 2011). "GNU Octave: Un lenguaje interactivo de alto nivel para cálculos numéricos" (PDF) . Free Software Foundation. pág. 145. Archivado (PDF) del original el 24 de octubre de 2012. Recuperado el 7 de octubre de 2012 . 
  28. "¿Cuándo una barra invertida no es una barra invertida?" . Blogs.msdn.com. Archivado del original el 23-03-2016 . Consultado el 16-06-2013 .
  29. Simonsen, Keld (1991-12-26). "RFC 1345" . Tools.ietf.org. Archivado del original el 13-06-2016 . Recuperado el 16-06-2013 .
  • Bob Bemer. "Cómo ASCII obtuvo su barra invertida" . Archivado del original el 19 de julio de 2013.