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