[Lo’s Axiom] Axiom of Coding: ความจริงเกี่ยวกับ “รหัส” ที่เป็นพื้นฐานของพื้นฐานระบบการรับส่งข้อมูลในรูปแบบต่างๆ ทั้งการแสดงผล และการสื่อสาร บนระบบคอมพิวเตอร์ สมาร์ทโฟน และอุปกรณ์อิเลคทรอนิกส์อื่นๆ

Advertisements
Advertisements

portfolio-img5

 

สรุปใจความสำคัญ

[box_light]ทุกการแสดงผลที่เราเห็นในชีวิตประจำวันผ่านอุปกรณ์ที่มนุษย์สร้างขึ้น อันได้แก่ คอมพิวเตอร์ สมาร์ทโฟน โทรทัศน์ วิทยุ และอื่นๆ อีกมากมาย ล้วนเป็นรหัสที่ส่งมาจากแหล่งกำเนินของข้อมูล สิ่งที่ส่งผ่านสายหรืออากาศมานั้น มันไม่ได้ส่งมาเป็นภาพ วีดีโอ เสียง หรือตัวหนังสือ แต่มันส่งมาในรูปของ “รหัส(Coding)” ซึ่งมันไม่ใช่โค๊ดโปรแกรมด้วย(โค๊ดโปรแกรมเป็นตัวหนังสือและสัญลักษณ์) คำว่า “รหัส” มันพื้นฐานมากกว่านั้น มันอยู่ในรูปตัวเลข 0 และ 1 เท่านั้น บทความนี้เราจะมาดูกันว่า มันทำงานอย่างไร? มีการพัฒนาอย่างไร? อนาคตมันจะเป็นยังไงบ้าง? และมันเชื่อมโยงกับการรับส่งข้อมูลในโลกนี้อย่างไรบ้าง ?[/box_light]

 

รหัส คืออะไร?

TheMatrixWallpaper1024

 

รหัส(Coding) ที่ผมจะกล่าวถึงในบทความนี้ไม่ใช่ “รหัสลับ(Cryptography)” เหมือนในหนังนะครับ แต่มันคือชุดตัวเลขที่มีแต่เลข 0 และ 1 เท่านั้น เป็นนวัตกรรมทางความรู้ที่ทำให้เกิดเทคโนโลยีด้านการสื่อสารในรูปแบบต่างๆ สมัยก่อนอาจเป็นแค่การส่งโทรเลข หรือคลื่นวิทยุ แต่ทุกวันนี้มันกลายเป็นทุกๆ อย่างเลยทีเดียว ทั้ง โทรทัศน์ที่เราดู คอมพิวเตอร์ที่เราใช้ โทรศัพท์ที่เราพูดคุย และอื่นๆ อีกนับไม่ถ้วน

ทำไมต้องมีแต่เลข 0 และ 1 ? เหตุผลของเรื่องนี้ก็คือ สมัยยุคเริ่มต้นของการส่งข้อมูลทางไกลโดยไม่อาศัยม้าเร็ว นักวิทยาศาสตร์เขาส่งข้อมูลไปหากันด้วยการเปิดและปิดสวิตช์ไฟผ่านสาย หากเปิดสวิตซ์ให้หมายถึงเลข 1 และหากปิดสวิตซ์ให้หมายถึงเลข 0 โดยมีการนัดแนะกันว่าชุดตัวเลขที่ส่งไปแบบนี้มันหมายความว่าอะไร? ตัวอย่างเช่น

  • “00000”   หมายถึง ตัวอักษร “A”
  • “00001”   หมายถึง ตัวอักษร “B”
  • “00010”   หมายถึง ตัวอักษร “C”
  • .
  • .
  • .
  • “01110”   หมายถึง ตัวอักษร “Z”

 

ขอเรียกชุดรหัสนี้ว่า รหัสชุดที่หนึ่ง เอาไว้กล่าวถึงภายหลัง ด้วยเหตุนี้จึงเป็นต้นกำเนิดการส่งข้อมูลผ่านสายได้เป็นครั้งแรกของโลก

 

สงสัยไหม ทำไมสมัยก่อนคุยโทรศัพท์แล้วเสียงขาดๆ หายๆ ?

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

        นี่เป็นคำถามที่หลายคนเคยถามบ่อยๆ ว่า เรียนคณิตศาสตร์ไปเพื่ออะไร? สาเหตุที่เราไม่ตระหนักรู้ก็เพราะว่าเราเรียนคณิตศาสตร์ต้นทางที่เป็นพื้นฐานมากๆ แต่สำหรับบทความนี้ผมจะบอกว่าคณิตศาสตร์ปลายทางมันก็เพื่อสิ่งนี้ “การแก้ปัญหา” ซึ่ง ณ ทีนี้ มันได้เข้ามาแก้ปัญหาการรับส่งข้อมูลนั่นเอง

ในบทความนี้ผมจะไม่ลงลึกมากนักนะครับ แต่จะบอกคร่าวๆ ว่ามันเข้ามาแก้ปัญหาจุดไหน อย่างไร? นั่นก็คือ คณิตศาสตร์ได้นำทฤษฎีพีชคณิตนามธรรม(Abstract Algebra) เป็นทฤษฏีที่ศึกษาเกี่ยวกับ เซต และ การดำเนินการ ซึ่งสำหรับเรื่องการรับส่งข้อมูลนี้ เซตที่เราสนใจก็คือเซตของชุดรหัสที่เราส่งหากันนั่นเอง เนื่องจากชุดรหัสมีแต่ตัวเลข 0 และ 1 ดังนั้น การดำเนินการพวกเขาจึงใช้การบวกและการคูณของเลขฐานสองเข้ามาช่วย นั่นคือ 0+0 = 0, 0+1=1+0=1 และ 1+1=0 เป็นต้น ส่วนการคูณก็ได้ผลเหมือนตัวเลขปกติ นักคณิตศาสตร์ได้สร้างชุดรหัสขึ้นมาใหม่ ไม่ใช้ชุดตัวเลข 5 ตัว ดัง “รหัสชุดที่หนึ่ง” แล้ว พวกเขาใส่ตัวเลขเพิ่มเข้าไปอีก 3 ตัว ซึ่ง 5 ตัวแรก(สีแดง) ความหมายมันก็เหมือนกับ “รหัสชุดที่หนึ่ง” แต่ 3 ตัวหลังมันจะทำหน้าที่ตรวจสอบและแก้ไขหากรหัสมีการผิดพลาดระหว่างทาง “รหัสชุดที่สอง” แสดงได้ดังนี้

  • 00000011”   หมายถึง ตัวอักษร “A”
  • 00001001”   หมายถึง ตัวอักษร “B”
  • 00010101”   หมายถึง ตัวอักษร “C”
  • .
  • .
  • .
  • 01110000”   หมายถึง ตัวอักษร “Z”

 

ทำไมมันตรวจหาข้อผิดพลาดและแก้ไขได้หละ? นั่นก็เพราะว่าระบบมันสร้างเซตของรหัสขึ้นมา A = {00000000, 00000001, …, 11111111} พร้อมกับการบวกและคูณของเลขฐานสอง ทำให้มันมีคุณสมบัติเป็น “สนาม(Field)” ด้วยคุณสมบัติของเจ้า “สนาม(Field)” นี่หละครับ ทำให้เราตั้งเครื่องรับและส่งข้อมูลเช็คดูได้ว่า รหัสที่รับมามันอยู่ในเซตของรหัส A หรือไม่? ถ้าไม่อยู่ใน A แล้วมันผิดพลาดตรงไหน? ตำแหน่งอะไร? และเมื่อรู้ว่ามันผิดเครื่องก็จะแก้ให้ทันที นี่หละคือเสน่ห์ของเลขฐานสอง นั่นคือ หากเรารู้ว่าตำแหน่งอะไรผิดเราก็แก้ให้เป็นอีกตัวได้เลย เพราะตัวเลขมันมีแค่ 0 และ 1 เท่านั้น

 

เราส่งรูปภาพ วีดีโอ และข้อมูลต่างๆ หากันได้ยังไง ?

Mobile smart phones while transferring pictures

 

ในเซต A เราจะเห็นว่ามันเป็นชุดรหัสที่มีตัวเลขอยู่ 8 ตัว เราเรียกมันว่า “8 bit= 1 byte” ซึ่ง 1 byte ก็ส่งข้อมูลได้แค่ 1 ตัว เมื่อเราส่งข้อมูลหากันมากๆ มันก็จะกลายเป็น

  • 1 KiloByte (KB) = 1024 Byte
  • 1 MegaByte (MB) = 1024 KiloByte
  • 1 GigaByte (GB) = 1024 MegaByte

 

เริ่มคุ้นๆ แล้วใช่ไหมครับ ? มันก็คือหน่วยที่เราใช้วัดปริมาณของข้อมูล หรือขนาดไฟล์นั่นเอง ไม่ว่าไฟล์ของเราอยู่ในรูปแบบอะไรก็ตาม .doc, .jpg, .mov, .mp3 หรือ .mp4 ทุกรูปแบบของไฟล์มันจะมีขนาดที่มีหน่วยเป็น Byte นั่นเอง แสดงว่ามันเกิดมาจาก 0 และ 1 จำนวนมหาศาลที่มารวมกัน

 

        ขอยกตัวอย่างรูปภาพที่เราถ่ายด้วยสมาร์ทโฟนนะครับ หากรูปมันมีความละเอียด 2 ล้านพิกเซล นั่นหมายความว่า ใน 1 รูปที่เรามองเห็นมันจะมีเม็ดสีทั้งหมด 2 ล้านเม็ด ในแต่ละเม็ดจะมีเพียงสีเดียวเท่านั้น ซึ่งการที่เม็ดนั้นมันจะแสดงผลเป็นสีอะไรก็ขึ้นอยู่ว่าชุดรหัสที่มันได้รับมา ตัวอย่างเช่น 00010101 เป็นสีแดง, 01110010 เป็นสีดำ, 00011111 เป็นสีขาว อย่างนี้เป็นต้น หากเราส่งรูปให้เพื่อนหรืออัพโหลดขึ้น Facebook มันไม่ได้ส่งเป็นรูปไปเลยนะ รูปภาพมันวิ่งตามสายหรืออากาศไม่ได้ มันจะแปลงรูปในเครื่องเราเป็นชุดของรหัสก่อน จากนั้นใช้เปิดและปิดสัญญาณ ส่งตามสายหรืออากาศ เพื่อบอกว่าในแต่ละชุดรหัสมีตัวเลขอะไรบ้าง 0 หรือ 1 เมื่อส่งเข้าระบบไป หากมีข้อผิดพลาดระหว่างทางมันก็จะใช้คุณสมบัติของ “สนาม(Field)” เปลี่ยนเป็นชุดรหัสที่ถูกต้องได้ เครื่องคอมพิวเตอร์หรือสมาร์ทโฟนของเพื่อนเราก็จะแปลงชุดรหัสเป็นเม็ดสี และเมื่อเม็ดสีหลายล้านเม็ดมารวมกันก็จะกลายเป็นรูปภาพที่พวกเขาเห็นในคอมพิวเตอร์หรือในสมาร์ทโฟนนั่นเอง

 

คอมพิวเตอร์หรือสมาร์ทโฟน 32 Bit หรือ 64 Bit มันคืออะไร ?

iphone_5s_64_bit_slide

คัดมาเพื่อคุณ

 

เนื่องด้วย 1 Byte มันมีแค่ 8 Bit โดยที่เลข 5 ตัวแรกแทนข้อมูล ส่วน 3 ตัวหลังเป็นชุดตรวจสอบและแก้ไขความถูกต้อง ทำให้มันมีข้อจำกัด หากมันผิดพลาด 1 หรือ 2 ตำแหน่งยังพอแก้ไขได้ แต่ถ้ามากกว่านั้นจะแก้ไขไม่ได้ เป็นต้นเหตุให้ข้อมูลที่ได้รับมันผิดเพี้ยนไปได้ อย่างเช่นการโทรศัพท์สมัยก่อนเสียงจะขาดๆ หายๆ นั่นหละครับ หมายความว่ารหัสมันแก้ไขข้อผิดพลาดไม่ได้ ด้วยเหตุนี้เมื่อเรามีข้อมูลมากขึ้น ใน 1 Byte จึงจำเป็นต้องมีจำนวน Bit มากขึ้น ซึ่งจะทำให้เราสามารถบรรจุข้อมูลได้มากขึ้น และมีจำนวน Bit ที่เอาไว้ตรวจสอบและแก้ไขข้อผิดพลาดได้มากขึ้นด้วย ส่งผลทำให้แม้ว่าจะมีข้อผิดพลาดระหว่างทางสักแค่ไหนก็ตามระบบก็จะสามารถตรวจสอบและแก้ไขได้ ยิ่งจำนวน Bit เยอะประสิทธิภาพในการรับส่งข้อมูลก็ยิ่งดีขึ้นนั่นเอง ซึ่งทฤษฏีนั้นมันทำได้แบบนับไม่ถ้วนอยู่แล้วครับ ใน 1 Byte เราจะให้มีกี่ล้าน Bit ก็ได้ แต่ปัญหามันอยู่ที่ตัวแปลงรหัสสัญญาณนั่นเองว่ามีความสามารถแค่ไหน ดังนั้นเมื่อเทคโนโลยีพัฒนามากขึ้น คอมพิวเตอร์และสมาร์ทโฟนก็พัฒนามากขึ้นตาม จนสามารถเพิ่มจำนวน Bit เข้าไปได้มากขึ้นเรื่อยๆ  จึงเป็นที่มาของ คอมพิวเตอร์ หรือ สมาร์ทโฟน 16 Bit, 32 Bit, 64 Bit ตามลำดับของการพัฒนาการ

 

ผมไม่ขอลงลึกมากเรื่อง ทฤษฏีรหัส(Coding Theory) หรือ พีชคณิตนามธรรม(Abstract Algebra) ความรู้ทางคณิตศาสตร์ที่นำมาช่วยตรวจสอบและแก้ไขข้อผิดพลาดของชุดรหัสนะครับ  นี่หละเป็นคำตอบสำหรับหลายคนที่ถามมาตลอดว่า “เรียนคณิตศาสตร์ไปทำไม?”  และนี่คือ พื้นฐานของพื้นฐานของเทคโนโลยีที่เราเสพอยู่ ที่เราอาจเคยรู้ว่ามันเกิดจากเลข 0 และ 1 มารวมกัน แต่ก็ไม่รู้ว่ามันทำงานอย่างไร?  หากใครสนใจและต้องการลงลึกมากกว่านี้ สามารถศึกษาเพิ่มเติมได้จากสื่อที่เป็นหนังสือหรือสื่อออนไลน์เกี่ยวกับ “ทฤษฏีรหัส(Coding Theory)” ได้เลยนะครับ แล้วเพื่อนๆ จะรู้ว่ามันคืออะไร ? มันตรวจสอบและแก้ไขความผิดพลาดอย่างไร? และจะได้เห็นว่าการศึกษาเรื่องนี้มันยังไม่สิ้นสุดและมีการพัฒนาไปเรื่อยๆ ครับ

 

รู้ไหมครับ เราสามารถฝังชุดรหัสลงในสารเคมีหรือสิ่งมีชีวิตได้แล้ว ?

 

 

 

 

[box_info]

เอกสารอ้างอิง:

สุพจน์ ไวท์ยางกูร, ทฤษฏีรหัสขั้นแนะนำ(Introduction to Coding Theory), ภาควิชาคณิตศาสตร์ มหาวิทยาลัยขอนแก่น, 2540.

[/box_info]

 

View Comments (6)
  • มันตายตัว ครับ 1 byte จะมี 8 bit หากเกิน แปด มันจะเริ่มขึ้น ไบต์ใหม่

  • อยากจะบอกว่า
    เป็นบทความที่น่าอ่าน
    แต่เนื้อหาเหมือนกับคิดขึ้นมาเอง
    คนที่ไม่รู้เรื่องมาก่อน อ่านแล้วจะเข้าใจผิด
    ควรลบออก หรือแก้ไขครับ

  • ไม่ได้คิดขึ้นเองครับ ผมศึกษาและวิจัยเรื่องนี้มาโดยตลอด คุณ TA อาจศึกษาด้านคอมพิวเตอร์มา ยังไงลองศึกษาด้าน Coding ทางคณิตศาสตร์ดูนะครับ ^ ^

  • ขอบคุณนะครับ แต่ผมระบุตั้งแต่ต้นบทความแล้วครับว่าพูดถึง Coding Theory ซึ่งจริงๆ แล้ว ไม่จำเป็นต้อง 1 byte = 8 bit เลยก็ได้ 1 byte = 3 bit ก็ยังได้ครับ แล้วแต่ข้อตกลงและเงื่อนไขการนำไปใช้ครับ

    มันเป็นพื้นฐานพอสมควร แต่ผมอาจผิดที่พยายามเชื่อมโยงให้มันเข้ากับเรื่องที่ผู้อ่านรับรู้ได้ สัมผัสได้ มากเกินไป จนทำให้คุณ rockcatz เข้าใจผิดไปครับ ^ ^

Leave a Reply