แบ็กสแลช
แบ็กสแลช (\) (อังกฤษ: backslash) เป็นเครื่องหมายการพิมพ์ที่ใช้มากในคอมพิวเตอร์ ลักษณะเป็นภาพสะท้อน ของเครื่องหมายทับ(หรือแสลช)ธรรมดา (/) เครื่องหมายนี้อยู่ที่ U+005C \ reverse solidus (92decimal) ในยูนิโคดและแอสกี
\ \ | |
---|---|
แบ็กสแลช | |
ประวัติ
แก้บ็อบ เบเมอร์ ได้เพิ่มอักขระ \ ลงใน ASCII [1] ในวันที่ 18 กันยายน 1961, [2] โดยมีสาเหตุจากการศึกษาความถี่ของตัวอักษร การเพิ่มเครื่องหมาย \ มีจุดประสงค์โดยเฉพาะให้ตัวดำเนินการบูลีน ALGOL ∧ (และ) กับ ∨ (หรือ) สามารถประกอบจากสัญลักษณ์ที่มีใน ASCII เป็น /\ กับ \/ ตามลำดับ [3][4] ตัวดำเนินการทั้งสองนี้รวมอยู่ในภาษาซีรุ่นแรกที่มาพร้อมกับรับบปฏิบัติการ Unix V6 Unix V7 และปัจจุบัน BSD 2.11
การใช้งาน
แก้ในภาษาโปรแกรมหลายภาษา เช่น ซี เพิร์ล พีเอชพี ไพทอน และในภาษาสคริปต์ยูนิกซ์ ใช้แบ็กสแลชเป็นอักขระหลีก (escape character) เพื่อระบุว่าให้ปฎิบัติกับอักขระที่ตามมาเป็นพิเศษ (ถ้าปกติอักขระตัวนั้นไม่มีความหมายพิเศษ) หรือเป็นปกติ (ถ้าอักขระตัวนั้นมีความหมายพิเศ) ตัวอย่างเช่นภายในสตริงภาษาซี ลำดับ\n จะให้ค่าเป็นอักขระขึ้นบรรทัดใหม่ แทนที่จะเป็นตัวอักษร 'n' ตรง ๆ และลำดับ \" หมายถึงเครื่องหมายคำพูดคู่ตรง ๆ แทนที่จะเป็นความหมายพิเศษของเครื่องหมายคำพูดคู่ซึ่งใช้ลงท้ายสตริง ในทำนองเดียวกัน ภาษาของนิพจน์ปรกติ (regular expression) ต่าง ๆ ใช้เครื่องหมายนี้เปลี่ยนระหว่างอักขระตามตัวอักษรกับอักขระควบคุม (metacharacter) จากลักษณะการใช้งานนี้ ลำดับแบ็กสแลชคู่ \\ จะหมายถึงอักขระแบ็กสแลชตามตัวอักษรปกติ
นอกเหนือจากในสตริง การใช้งาน \ โดยทั่วไป มีแค่การใช้ลงท้ายบรรทัดเพื่อระบุให้ละเว้นอักขระขึ้นบรรทัดใหม่ที่ต่อท้าย ดังนั้นบรรทัดถัดจากนั้นจะถูกปฏิบัติเสมือนว่าเป็นส่วนหนึ่งของบรรทัดเดิม ในบริบทนี้อาจเรียกว่า "ความต่อเนื่อง" [5]
ภาษาโปรแกรม ALGOL 68 ใช้ "\" เป็น สัญลักษณ์เลขชี้กำลังฐานสิบ โดยมีตัวเลือก 4 แบบ: e, E, \, หรือ 10 ตัวอย่าง: 6.0221415e23 6.0221415E23 , 6.0221415\23 หรือ 6.02214151023 [6]
ในภาษา APL \ เรียกว่า Expand เมื่อใช้เพื่อแทรก fill element ลงในอาร์เรย์และ Scan เมื่อใช้ทำ prefix reduction (cumulative fold)
แบ็กสแลชใช้ในระบบ TeX และในไฟล์ RTF เพื่อเริ่มแท็กมาร์กอัป ในภาษาแฮสเกลล์ ใช้แบ็กสแลชในการระบุทั้งอักขระพิเศษและฟังก์ชันแลมบ์ดา (เนื่องจากเป็นสัญลักษณ์ ASCII ที่คล้ายกลับ อักษรแลมบ์ดา λ) [7]
MS-DOS 2.0 ซึ่งเปิดตัว ค.ศ. 1983 คัดลอกระบบไฟล์แบบลำดับชั้นมาจากยูนิกซ์ จึงใช้ เครื่องหมายทับ(ไปข้างหน้า)[8] แต่ได้เพิ่มแบ็กสแลช (อาจมาจากการเสนอของ IBM[9]) สำหรับการพิมพ์พาธในพรอมต์ของอินเทอร์พรีเตอร์บรรทัดคำสั่ง ในขณะที่ยังคงรักษาความเข้ากันได้กับ MS-DOS 1.0 โดยที่เครื่องหมายทับเป็นตัวบ่งชี้ตัวเลือกบรรทัดคำสั่ง (เช่น การพิมพ์ "DIR/W" จะระบุตัวเลือก "wide" ให้คำสั่ง "DIR" ดังนั้นจะต้องใช้วิธีอื่นในการเรียกใช้โปรแกรมที่เรียกว่า W ภายในไดเรกทอรีที่เรียกว่า DIR) นอกเหนือจาก COMMAND.COM ส่วนอื่น ๆ ทั้งหมดของระบบปฏิบัติการ ยอมรับทั้งสองตัวอักษรในการระบุพาธ แต่ระเบียบปกติของไมโครซอฟต์ ยังคงใช้แบ็กสแลชและ API ที่ย้อนกลับเส้นทาง ใช้แบ็กสแลช[10] ในบางรุ่น อักขระตัวเลือกสามารถเปลี่ยนจาก / เป็น - ผ่าน SWITCHAR ซึ่งอนุญาตให้ COMMAND.COM รักษาการใช้ / ในชื่อคำสั่ง
ตระกูลระบบปฏิบัติการ ไมโครซอฟท์ วินโดวส์ สืบทอดการทำงานจาก MS-DOS และยังคงรองรับอักขระทั้งสองแบบ แต่โปรแกรมและระบบย่อยแต่ละตัวของวินโดวส์ อาจผิดพลาดและยอมรับตัวคั่นพาธ เฉพาะแบ็กสแลช หรืออาจตีความเครื่องหมายทับธรรมดาผิดเมื่อใช้ในลักษณะนี้ บางโปรแกรมจะยอมรับเครื่องหมายทับเท่านั้นหากพาธอยู่ในเครื่องหมายคำพูดคู่[11] ความล้มเหลวของระบบรักษาความปลอดภัยของไมโครซอฟต์ในการรับรู้ถึงทิศทางที่ไม่คาดคิดในพาธท้องถิ่นและบนอินเทอร์เน็ตในขณะที่ส่วนอื่น ๆ ของระบบปฏิบัติการยังคงปฏิบัติหน้าที่อยู่นั้น เคยนำไปสู่ปัญหาทางความปลอดภัยที่ร้ายแรง โดยแหล่งข้อมูลที่ไม่ควรเข้าถึงได้ อาจเข้าถึงผ่านด้วยเส้นทางที่ใช้สูตรเฉพาะเช่น http://example.net/secure\private.aspx [12] [13]
ในวิชาคณิตศาสตร์ ใช้เครื่องหมายเหมือนแบ็กสแลชแสดงส่วนเติมเต็ม[14] และบางครั้งใช้เพื่อแสดงถึงปริภูมิคอเซตขวา (right coset space)[15]
ในภาษาโปรแกรม BASIC บางแบบ ใช้แบ็กสแลชเป็นสัญลักษณ์ของตัวดำเนินการการ หารแบบเลขจำนวนเต็ม (integer division)[16]
ใน MATLAB และ GNU Octave เครื่องหมายแบ็กสแลชใช้แสดงการหารเมทริกซ์ทางซ้ายในขณะที่เครื่องหมายทับใช้สำหรับการหารเมทริกซ์ทางขวา[17]
ความสับสนในการใช้งาน
แก้ในรหัสอักขระภาษาญี่ปุ่น ISO 646 (รหัส 7 บิต ที่ปรับมาจาก ASCII) JIS X 0201 (รหัส 8 บิต) และ Shift JIS (รหัสหลายไบต์ที่เป็น 8 บิตสำหรับ ASCII) ตำแหน่ง 0x5C ที่ใช้เป็นแบ็กสแลชใน ASCII กลับใช้แทนเครื่องหมายเยน (¥) ส่วนในรหัสอักขระภาษาเกาหลี ใช้เป็นเครื่องหมายวอน (₩) แต่โปรแกรมคอมพิวเตอร์จะยังคงมองรหัสนี้ว่าเป็นแบ็กสแลช ทำให้เกิดความสับสนในการทำงาน โดยเฉพาะในชื่อไฟล์ Ms-DOS[18] เนื่องจากการใช้รหัสสำหรับแบ็กสแลชในการแทนเครื่องหมายเยน ในปัจจุบันฟอนต์ยูนิโคดบางฟอนต์เช่น MS Mincho ก็จะแสดงเครื่องหมายแบ็กสแลชเป็น ¥ ทำให้อักขระที่ตำแหน่ง 00A5 กับ 005C หน้าตาเหมือนกัน นอกจากนี้ ISO 646 เวอร์ชันอื่น ๆ ก็มีการแทนที่แบ็กสแลชด้วยอักขระอื่น ๆ เช่น Ö (เยอรมัน, สวีเดน) Ø (เดนมาร์ก, นอร์เวย์) ç (ฝรั่งเศส) และ Ñ (สเปน) ซึ่งนำไปสู่ปัญหาทำนองเดียวกัน
อ้างอิง
แก้- ↑ "Mini-Biography of Bob Bemer". Thocp.net. สืบค้นเมื่อ 2013-06-16.
- ↑ "How ASCII Got Its Backslash" เก็บถาวร 2014-07-11 ที่ เวย์แบ็กแมชชีน, Bob Bemer
- ↑ "How ASCII Got Its Backslash" เก็บถาวร 2014-07-11 ที่ เวย์แบ็กแมชชีน, Bob Bemer
- ↑ Bob Bemer (2002-07-07). "The Great Curly Brace Trace Chase". Computer History Vignettes. Bob Bemer. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2009-06-04. สืบค้นเมื่อ 2009-10-11.
- ↑ "GNU 'make' manual". Gnu.org. สืบค้นเมื่อ 2013-06-16.
- ↑ "Revised Report on the Algorithmic Language Algol 68". September 1973. สืบค้นเมื่อ April 30, 2007.[ลิงก์เสีย]
- ↑ O'Sullivan, Stewart, and Goerzen, Real World Haskell, ch. 4: anonymous (lambda) functions, p.99
- ↑ "Why is the DOS path character "\"?". Blogs.msdn.com. 2005-06-24. สืบค้นเมื่อ 2013-06-16.
- ↑ Necasek, Michal (24 พฤษภาคม 2019). "Why Does Windows Really Use Backslash as Path Separator?". OS/2 Museum. คลังข้อมูลเก่าเก็บจากแหล่งเดิม (html)เมื่อ 24 พฤษภาคม 2019. สืบค้นเมื่อ 28 พฤษภาคม 2019.
- ↑ "Path.GetFullPath Method". .NET Framework Class Library. Microsoft. เก็บจากแหล่งเดิมเมื่อ 21 December 2008. สืบค้นเมื่อ 2009-01-02.
- ↑ "When did Windows start accepting forward slash as a path separator?". Bytes.com. เก็บจากแหล่งเดิมเมื่อ 6 February 2009. สืบค้นเมื่อ 2009-01-02.
- ↑ Kaplan, Simone (2004). "Microsoft Probes Flaw in ASP.NET". DevSource, sponsored by Microsoft. Ziff Davis Enterprise Holdings Inc. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2013-01-21. สืบค้นเมื่อ 2009-06-14.
- ↑ Burnett, Mark (2004). "Security Holes That Run Deep". SecurityFocus. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2021-02-02. สืบค้นเมื่อ 2009-06-14.
- ↑ "Quantities and units – Part 2: Mathematical signs and symbols to be used in the natural sciences and technology". ISO 80000-2:2009. International Organization for Standardization.
- ↑ "Definition:Coset Space". ProofWiki. สืบค้นเมื่อ 1 February 2017.
- ↑ "Arithmetic Operators in Visual Basic". Visual Basic Language Features: Operators and Expressions. MSDN. สืบค้นเมื่อ 7 October 2012.
- ↑ Eaton, John W.; David Bateman; Søren Hauberg (February 2011). "GNU Octave: A high-level interactive language for numerical computations" (PDF). Free Software Foundation. p. 145. สืบค้นเมื่อ 7 October 2012.
- ↑ "When is a backslash not a backslash?". Blogs.msdn.com. สืบค้นเมื่อ 2013-06-16.