แบ็กสแลช

แบ็กสแลช (\) () เป็นเครื่องหมายการพิมพ์ที่ใช้มากในคอมพิวเตอร์ ลักษณะเป็นภาพสะท้อน ของเครื่องหมายทับ(หรือแสลช)ธรรมดา (/) เครื่องหมายนี้อยู่ที่  ในยูนิโคดและแอสกี

 ประวัติ 
บ็อบ เบเมอร์ ได้เพิ่มอักขระ  ลงใน ASCII  ในวันที่ 18 กันยายน 1961, "How ASCII Got Its Backslash" , Bob Bemer โดยมีสาเหตุจากการศึกษาความถี่ของตัวอักษร การเพิ่มเครื่องหมาย \ มีจุดประสงค์โดยเฉพาะให้ตัวดำเนินการบูลีน ALGOL ∧ (และ) กับ ∨ (หรือ) สามารถประกอบจากสัญลักษณ์ที่มีใน ASCII เป็น  กับ  ตามลำดับ "How ASCII Got Its Backslash" , Bob Bemer ตัวดำเนินการทั้งสองนี้รวมอยู่ในภาษาซีรุ่นแรกที่มาพร้อมกับรับบปฏิบัติการ Unix V6 Unix V7 และปัจจุบัน BSD 2.11 

 การใช้งาน 
ในภาษาโปรแกรมหลายภาษา เช่น ซี เพิร์ล พีเอชพี ไพทอน และในภาษาสคริปต์ยูนิกซ์ ใช้แบ็กสแลชเป็นอักขระหลีก (escape character) เพื่อระบุว่าให้ปฎิบัติกับอักขระที่ตามมาเป็นพิเศษ (ถ้าปกติอักขระตัวนั้นไม่มีความหมายพิเศษ) หรือเป็นปกติ (ถ้าอักขระตัวนั้นมีความหมายพิเศ) ตัวอย่างเช่นภายในสตริงภาษาซี ลำดับ จะให้ค่าเป็นอักขระขึ้นบรรทัดใหม่ แทนที่จะเป็นตัวอักษร 'n' ตรง ๆ และลำดับ   หมายถึงเครื่องหมายคำพูดคู่ตรง ๆ แทนที่จะเป็นความหมายพิเศษของเครื่องหมายคำพูดคู่ซึ่งใช้ลงท้ายสตริง ในทำนองเดียวกัน ภาษาของนิพจน์ปรกติ (regular expression) ต่าง ๆ ใช้เครื่องหมายนี้เปลี่ยนระหว่างอักขระตามตัวอักษรกับอักขระควบคุม (metacharacter)  จากลักษณะการใช้งานนี้ ลำดับแบ็กสแลชคู่   จะหมายถึงอักขระแบ็กสแลชตามตัวอักษรปกติ 

นอกเหนือจากในสตริง การใช้งาน \ โดยทั่วไป มีแค่การใช้ลงท้ายบรรทัดเพื่อระบุให้ละเว้นอักขระขึ้นบรรทัดใหม่ที่ต่อท้าย ดังนั้นบรรทัดถัดจากนั้นจะถูกปฏิบัติเสมือนว่าเป็นส่วนหนึ่งของบรรทัดเดิม ในบริบทนี้อาจเรียกว่า "ความต่อเนื่อง"  

ภาษาโปรแกรม ALGOL 68 ใช้ "\" เป็น สัญลักษณ์เลขชี้กำลังฐานสิบ โดยมีตัวเลือก 4 แบบ: e, E, \, หรือ 10 ตัวอย่าง:    ,   หรือ    

ในภาษา APL  เรียกว่า Expand เมื่อใช้เพื่อแทรก fill element ลงในอาร์เรย์และ Scan เมื่อใช้ทำ prefix reduction (cumulative fold) 

แบ็กสแลชใช้ในระบบ TeX และในไฟล์ RTF เพื่อเริ่มแท็กมาร์กอัป ในภาษาแฮสเกลล์ ใช้แบ็กสแลชในการระบุทั้งอักขระพิเศษและฟังก์ชันแลมบ์ดา (เนื่องจากเป็นสัญลักษณ์ ASCII ที่คล้ายกลับ อักษรแลมบ์ดา λ) O'Sullivan, Stewart, and Goerzen, Real World Haskell, ch. 4: anonymous (lambda) functions, p.99 

MS-DOS 2.0 ซึ่งเปิดตัว ค.ศ. 1983 คัดลอกระบบไฟล์แบบลำดับชั้นมาจากยูนิกซ์ จึงใช้ เครื่องหมายทับ(ไปข้างหน้า) แต่ได้เพิ่มแบ็กสแลช (อาจมาจากการเสนอของ IBM) สำหรับการพิมพ์พาธในพรอมต์ของอินเทอร์พรีเตอร์บรรทัดคำสั่ง ในขณะที่ยังคงรักษาความเข้ากันได้กับ MS-DOS 1.0 โดยที่เครื่องหมายทับเป็นตัวบ่งชี้ตัวเลือกบรรทัดคำสั่ง (เช่น การพิมพ์ "" จะระบุตัวเลือก "wide" ให้คำสั่ง "" ดังนั้นจะต้องใช้วิธีอื่นในการเรียกใช้โปรแกรมที่เรียกว่า   ภายในไดเรกทอรีที่เรียกว่า ) นอกเหนือจาก COMMAND.COM ส่วนอื่น ๆ ทั้งหมดของระบบปฏิบัติการ ยอมรับทั้งสองตัวอักษรในการระบุพาธ แต่ระเบียบปกติของไมโครซอฟต์ ยังคงใช้แบ็กสแลชและ API ที่ย้อนกลับเส้นทาง ใช้แบ็กสแลช  ในบางรุ่น อักขระตัวเลือกสามารถเปลี่ยนจาก  เป็น   ผ่าน SWITCHAR ซึ่งอนุญาตให้ COMMAND.COM รักษาการใช้   ในชื่อคำสั่ง 

ตระกูลระบบปฏิบัติการ ไมโครซอฟท์ วินโดวส์ สืบทอดการทำงานจาก MS-DOS และยังคงรองรับอักขระทั้งสองแบบ แต่โปรแกรมและระบบย่อยแต่ละตัวของวินโดวส์ อาจผิดพลาดและยอมรับตัวคั่นพาธ เฉพาะแบ็กสแลช หรืออาจตีความเครื่องหมายทับธรรมดาผิดเมื่อใช้ในลักษณะนี้ บางโปรแกรมจะยอมรับเครื่องหมายทับเท่านั้นหากพาธอยู่ในเครื่องหมายคำพูดคู่ ความล้มเหลวของระบบรักษาความปลอดภัยของไมโครซอฟต์ในการรับรู้ถึงทิศทางที่ไม่คาดคิดในพาธท้องถิ่นและบนอินเทอร์เน็ตในขณะที่ส่วนอื่น ๆ ของระบบปฏิบัติการยังคงปฏิบัติหน้าที่อยู่นั้น เคยนำไปสู่ปัญหาทางความปลอดภัยที่ร้ายแรง โดยแหล่งข้อมูลที่ไม่ควรเข้าถึงได้ อาจเข้าถึงผ่านด้วยเส้นทางที่ใช้สูตรเฉพาะเช่น     

ในวิชาคณิตศาสตร์ ใช้เครื่องหมายเหมือนแบ็กสแลชแสดงส่วนเติมเต็ม และบางครั้งใช้เพื่อแสดงถึงปริภูมิคอเซตขวา (right coset space) 

ในภาษาโปรแกรม BASIC บางแบบ ใช้แบ็กสแลชเป็นสัญลักษณ์ของตัวดำเนินการการ หารแบบเลขจำนวนเต็ม (integer division) 

ใน MATLAB และ GNU Octave เครื่องหมายแบ็กสแลชใช้แสดงการหารเมทริกซ์ทางซ้ายในขณะที่เครื่องหมายทับใช้สำหรับการหารเมทริกซ์ทางขวา 

ใน PHP เวอร์ชัน 5.3 ขึ้นไปจะใช้แบ็กสแลชเพื่อระบุเนมสเปซ  

 ความสับสนในการใช้งาน 
ในรหัสอักขระภาษาญี่ปุ่น ISO 646 (รหัส 7 บิต ที่ปรับมาจาก ASCII) JIS X 0201 (รหัส 8 บิต) และ Shift JIS (รหัสหลายไบต์ที่เป็น 8 บิตสำหรับ ASCII) ตำแหน่ง 0x5C ที่ใช้เป็นแบ็กสแลชใน ASCII กลับใช้แทนเครื่องหมายเยน (¥) ส่วนในรหัสอักขระภาษาเกาหลี ใช้เป็นเครื่องหมายวอน (₩) แต่โปรแกรมคอมพิวเตอร์จะยังคงมองรหัสนี้ว่าเป็นแบ็กสแลช ทำให้เกิดความสับสนในการทำงาน โดยเฉพาะในชื่อไฟล์ Ms-DOS เนื่องจากการใช้รหัสสำหรับแบ็กสแลชในการแทนเครื่องหมายเยน ในปัจจุบันฟอนต์ยูนิโคดบางฟอนต์เช่น MS Mincho ก็จะแสดงเครื่องหมายแบ็กสแลชเป็น ¥ ทำให้อักขระที่ตำแหน่ง 00A5 กับ 005C หน้าตาเหมือนกัน นอกจากนี้ ISO 646 เวอร์ชันอื่น ๆ ก็มีการแทนที่แบ็กสแลชด้วยอักขระอื่น ๆ เช่น Ö (เยอรมัน, สวีเดน) Ø (เดนมาร์ก, นอร์เวย์) ç (ฝรั่งเศส) และ Ñ (สเปน) ซึ่งนำไปสู่ปัญหาทำนองเดียวกัน

 อ้างอิง 

หมวดหมู่:เครื่องหมายวรรคตอน