De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

La barra invertida \ es una marca tipográfica que se utiliza principalmente en informática y es la imagen reflejada de la barra inclinada común / . A veces se le llama hack , whack , escape (de C / UNIX ), slash invertido , slosh , downwhack , backslant , backwhack , bash , reverse slant y reverse virgule . [1] [2] En Unicode y ASCIIestá codificado en U + 005C \ REVERSE SOLIDUS (92 decimal ).

Historia [ editar ]

Diseño de teclado teletipo ASR-33 con juego de caracteres ASCII, antes del 14 de junio de 1966, con barra invertida en shift + L

A marzo de 2021, los editores de Wikipedia no han podido encontrar el origen de este personaje ni siquiera los propósitos a los que fue destinado antes de la década de 1960. La primera referencia conocida encontrada hasta la fecha es un manual de mantenimiento de 1937 de Teletype Corporation con una fotografía que muestra el teclado de su perforador Wheatstone . [3] [4] Queda por descubrir el propósito de la clave, ya que el símbolo no tenía una codificación en código Morse y, por lo tanto, no se habría transmitido.

En junio de 1960, IBM publicó un "estándar de juego de caracteres extendido" que incluye el símbolo en 0x19. [4] En septiembre de 1961, Bob Bemer (IBM) propuso al comité de estándares X3.2 que [, ]y que \se hiciera parte del estándar propuesto, describiera la barra invertida como un "operador de división inversa" y citó su uso anterior por Teletype en telecomunicaciones. . En particular, dijo, se necesitaba \ para que los operadores booleanos ALGOL ( y ) y ( o ) pudieran componerse usando / \ y \ / respectivamente. El Comité adoptó estos cambios en el proyecto de Norma Americana (posteriormente llamado ASCII ) en su reunión de noviembre de 1961. [4]

Estos operadores se utilizaron para mínimo y máximo en las primeras versiones del lenguaje de programación C suministrado con Unix V6. [5] y V7 [6]

El Teletype Model 33 ("ASR-33") parece ser la primera unidad disponible comercialmente que tiene el carácter de teclado estándar para la venta en algunos mercados; este modelo tiene un juego completo de caracteres ASCII.

Uso [ editar ]

Lenguajes de programación [ editar ]

En muchos lenguajes de programación como C , Perl , PHP , Python , lenguajes de scripting Unix y muchos formatos de archivo como JSON , la barra invertida se usa como un carácter de escape , para indicar que el carácter que le sigue debe tratarse especialmente (si fuera necesario de lo contrario se trataría normalmente) o normalmente (si de lo contrario se trataría de forma especial). Por ejemplo, dentro de un literal de cadena 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 termina la cadena. Una barra invertida real se produce mediante una barra invertida doble \\.

Los lenguajes de expresión regular lo usaron de la misma manera, cambiando los caracteres literales subsiguientes en 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 una "o".

Fuera de las cadenas entre comillas, el único uso común de la barra invertida es ignorar ("escapar") una nueva línea inmediatamente después. En este contexto, puede denominarse "línea continua" [7], ya que la línea actual continúa en la siguiente. Algún software reemplaza la barra invertida + nueva línea con un espacio. [8]

Para admitir equipos que carecían del carácter de barra invertida, se agregó el trígrafo C ??/ , que es equivalente a una barra invertida. Dado que esto puede escapar al siguiente carácter, que en sí mismo puede ser un ?, el uso moderno principal puede ser para la ofuscación del código . Se eliminó el soporte para trígrafos en C ++ 17 .

En Visual BASIC (y algunos otros dialectos de BASIC ) la barra invertida se usa como símbolo de operador para indicar la división de enteros . [9] Esto se redondea a cero.

El lenguaje de programación ALGOL 68 utiliza "\" como símbolo de exponente decimal . ALGOL 68 tiene la opción de 4 símbolos de exponentes decimales: e, E, \ o 10 . Ejemplos: 6.0221415e23 , 6.0221415E23 , 6.0221415 \ 23 o 6.0221415 10 23 . [10]

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

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

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

Nombres de archivo [ editar ]

MS-DOS 2.0, lanzado en 1983, copió el sistema de archivos jerárquico de Unix y, por lo tanto, usó la barra (hacia adelante) [13] pero (posiblemente por insistencia de IBM [14] ) agregó la barra invertida para permitir que las rutas se escriban en el comando el indicador de línea del intérprete conservando la compatibilidad con MS-DOS 1.0, donde la barra inclinada era el indicador de opción de la línea de comandos (al escribir " DIR / W " se le dio la opción "amplia" al comando " DIR ", por lo que se necesitaba algún otro método si realmente quería ejecutar un programa llamado W dentro de un directorio llamado DIR ). Excepto COMMAND.COM ,todas las demás partes del sistema operativo aceptan ambos caracteres en unaruta , pero la convención de Microsoft sigue siendo usar una barra invertida, y las API que devuelven rutas usan barras invertidas. [15] En algunas versiones, el carácter de la 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 cualquiera de los caracteres, pero los programas y subsistemas individuales de Windows pueden, erróneamente, aceptar solo la barra invertida como un delimitador de ruta, o pueden malinterpretar una barra inclinada si es utilizado como tal. Algunos programas solo aceptarán barras diagonales si la ruta se coloca entre comillas dobles . [16] El hecho de que las funciones de seguridad de Microsoft no reconozcan las barras en direcciones inesperadas en las rutas locales y de Internet, mientras que otras partes del sistema operativo aún actúan sobre ellas, ha provocado algunos fallos graves en la seguridad. Se ha accedido a los recursos que no deberían estar disponibles con rutas que utilizan mezclas particulares, como http://example.net/secure\private.aspx .[17] [18]

Marcado de texto [ editar ]

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

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

Códigos de control [ editar ]

En notación de intercalación , ^\equivalente a 0x1C, separador de archivos . [20] Este sistema es técnicamente obsoleto.

Matemáticas [ editar ]

Se utiliza un símbolo similar a una barra invertida para la diferencia establecida . [21]

La barra invertida también se usa a veces para indicar el espacio lateral derecho . [22]

Especialmente cuando se describen algoritmos de computadora, es común definir una barra invertida para que a \ b sea ​​equivalente a a / b . [ cita requerida ] Esta es una división entera que se redondea hacia abajo, no hacia cero. En Wolfram Mathematica, la barra invertida se usa de esta manera para la división de enteros. [23]

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

Confusión con ¥ y otros personajes [ editar ]

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 de varios bytes que es de 8 bits para ASCII), el código el punto 0x5C que se usaría para la barra invertida en ASCII se representa en su lugar como un signo de yen ¥ . Debido al uso extensivo del punto de código 005C para representar el signo yen, incluso hoy en día algunas fuentes como MS Mincho representan el carácter de barra invertida como ¥, por lo que los caracteres en los puntos de código Unicode 00A5 (¥) y 005C (\) se representan como ¥cuando se seleccionan estas fuentes. Los programas informáticos todavía tratan a 005C como una barra invertida en estos entornos, pero lo muestran como un signo de yen, lo que genera confusión, especialmente en los nombres de archivo de MS-DOS. [25]

Varias otras versiones de ISO 646 también reemplazan la barra invertida con otros caracteres, incluidos ₩ (coreano), Ö (alemán, sueco), Ø (danés, noruego), ç (francés) y Ñ (español), lo que genera problemas similares, aunque con menos impacto duradero en comparación con el signo del yen.

RFC 1345 sugiere //como un mnemónico único de dos caracteres que puede usarse en los estándares de Internet como "una forma práctica de identificar [este] carácter, sin referencia a un juego de caracteres codificados y su código en [ese] juego de caracteres codificados". [26]

Ver también [ editar ]

  • Barra oblicua (o 'solidus'), /

Referencias [ editar ]

  1. ^ Diccionario Macquarie (tercera edición)
  2. ^ Raymond, Eric S. "ASCII" .
  3. ^ Boletín 125, número 2: Descripción y ajustes del perforador de teletipo Wheatstone (PDF) . Teletype Corporation. Mayo de 1938 [agosto de 1937]. pag. ii.
  4. ↑ a b c Eric Fischer (20 de junio de 2000). "La evolución de los códigos de caracteres, 1874-1968". págs. 14 (Tabla 35), 15. CiteSeerX 10.1.1.96.678 . 
  5. ^ Fuente del compilador de C (1975)
  6. ^ Fuente del compilador de C (1979)
  7. ^ El preprocesador de C
  8. ^ "3.1.1 División de líneas largas" . GNU hacer manual . Consultado el 28 de julio de 2019 .
  9. ^ "Operadores aritméticos en Visual Basic" . Funciones del lenguaje Visual Basic: operadores y expresiones . MSDN . Consultado el 7 de octubre de 2012 .
  10. ^ "Informe revisado sobre el lenguaje algorítmico Algol 68" . Acta Informatica . 5 (1–3): 1–236. Septiembre de 1973. doi : 10.1007 / BF00265077 . S2CID 2490556 . 
  11. ^ "Descripción general de los espacios de nombres" .
  12. ^ O'Sullivan, Stewart y Goerzen, Mundo real Haskell , cap. 4: funciones anónimas (lambda), p.99
  13. ^ "¿Por qué el carácter de ruta de DOS es" \ "?" . Blogs.msdn.com. 2005-06-24 . Consultado el 16 de junio de 2013 .
  14. ^ Necasek, Michal (24 de mayo de 2019). "¿Por qué Windows realmente usa la barra invertida como separador de rutas?" . Museo OS / 2 . Archivado desde el original el 24 de mayo de 2019 . Consultado el 28 de mayo de 2019 .
  15. ^ "Método Path.GetFullPath" . Biblioteca de clases de .NET Framework . Microsoft. Archivado desde el original el 21 de diciembre de 2008 . Consultado el 2 de enero de 2009 .
  16. ^ "¿Cuándo empezó Windows a aceptar la barra diagonal como separador de ruta?" . Bytes.com. Archivado desde el original el 6 de febrero de 2009 . Consultado el 2 de enero de 2009 .
  17. ^ Kaplan, Simone (2004). "Microsoft Probes Defecto en ASP.NET" . DevSource, patrocinado por Microsoft . Ziff Davis Enterprise Holdings Inc. Archivado desde el original el 21 de enero de 2013 . Consultado el 14 de junio de 2009 .
  18. ^ Burnett, Mark (2004). "Agujeros de seguridad que son profundos" . SecurityFocus . Consultado el 14 de junio de 2009 .
  19. ^ "USFM - Marcadores de formato estándar unificado" . paratext.org .
  20. ^ "Conjunto de caracteres de control C0, 1987" .
  21. ^ "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.
  22. ^ "Definición: Coset Space" . ProofWiki . Consultado el 1 de febrero de 2017 .
  23. ^ "División de enteros" .
  24. ^ 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) . Fundación de Software Libre. pag. 145 . Consultado el 7 de octubre de 2012 .
  25. ^ "¿Cuándo una barra invertida no es una barra invertida?" . Blogs.msdn.com . Consultado el 16 de junio de 2013 .
  26. ^ "RFC 1345" . Tools.ietf.org. 1991-12-26 . Consultado el 16 de junio de 2013 .

Enlaces externos [ editar ]

  • Bob Bemer. "Cómo ASCII obtuvo su barra invertida" . Archivado desde el original el 19 de julio de 2013.
  • Definición de barra invertida por The Linux Information Project (LINFO)