GAMEINDY กระดานสนทนา
www.gameindy.com

ทำความเข้าใจเบื้องต้นเกี่ยวกับ bug โดย : ท่านอำนาจ คนหมั่น

~:•<แมวปีศาจ>•:~

  • โสด~ขั้นเทพ !!!
  • Asura Tester
  • Hero Member
  • **
    • กระทู้: 7,165
  • จีบได้ หาหม้ายจ้าว..!!!
    • Ith Continue
ทำความเข้าใจเบื้องต้นเกี่ยวกับ bug (อ่านยาว) เครดิตจากบอร์ดเก่า : ท่านอำนาจ คนหมั่น


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

การกำเนิดของเครื่องคอมพิวเตอร์อิเล็กทรอนิกส์
     เครื่องมือทั้งหลายที่ถูกประดิษฐ์ขึ้นมาในยุคก่อนนั้นส่วนมากประกอบด้วยฟันเฟือง รอก คาน ซึ่งเป็นวัสดุ ที่มีขนาดใหญ่ และมีน้ำหนักมากทำให้การทำงานล่าช้าและผิดพลาดอยู่เสมอ ดังนั้นในยุคต่อมาจึงพยายาม พัฒนาเครื่องมือ ให้มีขนาดเล็กลง แต่มีประสิทธิภาพสูงขึ้น ดังนี้
     ปี 1937 ศาสตราจารย์ Howard Aiken แห่งมหาลัยวิทยาลัยฮาวาร์ด ได้พัฒนาเครื่องคำนวณ ตาม แนวคิด ของ Babbage ร่วมกับวิศวะกรของบริษัท IBM สร้างเครื่องคำนวณตามความคิดของ Babbage ได้ สำเร็จ โดยเครื่องดังกล่าวทำงานแบบเครื่องจักรกลปนไฟฟ้า และใช้บัตรเจาะรูเป็นสื่อในการนำเข้าข้อมูลสู่ เครื่องเพื่อทำการประมวลผล การพัฒนาดังกล่าวมาเสร็จสิ้นในปี พ.ศ. 2487 โดยเครื่องมือนี้มีชื่อว่า MARK 1 และเนื่องจากเครื่องนี้สำเร็จได้จากการสนับสนุน ด้านการเงินและบุคลากรจากบริษัท IBM ดังนั้นจึงมีอีกชื่อ หนึ่งว่า IBM Automatic Sequence Controlled Calculator และนับเป็นเครื่องคำนวณแบบอัตโนมัติเครื่องแรกของโลก
     ปี 1943 ซึ่งเป็นช่วงสงครามโลกครั้งที่ 2 ศูนย์วิจัยของกองทัพบกสหรัฐอเมริกามีความจำเป็นที่จะต้อง คิดค้นเครื่องช่วยคำนวณ เพื่อใช้คำนวณหาทิศทางและระยะทางในการส่งขีปนาวุธ ซึ่งถ้าใช้เครื่องคำนวณที่มี อยู่ในสมัยนั้นจะต้องใช้เวลาถึง 12 ชั่วโมงในการคำนวณ การยิง 1 ครั้ง ดังนั้นกองทัพจึงให้กองทุนอุดหนุนแก่ John W. Mauchly และ Persper Eckert จากมหาวิทยาลัยเพนซิลวาเนีย ในการสร้างคอมพิวเตอร์ จากอุปกรณ์อิเล็กทรอนิกส์ขึ้นมา โดยนำหลอดสุญยากาศ (Vacuum Tube) จำนวน 18,000 หลอด มาใช้ในการสร้าง ซึ่งมีข้อดีคือ ทำให้เครื่องมีความเร็ว และมีความถูกต้องแม่นยำในการคำนวณมากขึ้น ในด้านของความเร็วนั้น เครื่องจักกลมีความเฉื่อยของการเคลื่อนที่ของชิ้นส่วนประกอบ แต่คอมพิวเตอร์อิเล็กทรอนิกส์ จะใช้อิเล็กตรอนเป็นตัวคลื่อนที่ ทำให้สามารถส่งข้อมูลด้วยกระแสไฟฟ้าได้ ด้วยความเร็วใกล้เคียงกับความเร็วของแสง ส่วนความถูกต้องแม่นยำในการทำงานของเครื่องจักรกลอาศัยฟันเฟือง รอก คาน ในการทำงาน ทำให้ทำงานได้ช้า และเเกิดความผิดพลดได้ง่าย
     ปี 1946 เครื่องคอมพิวเตอร์ที่ Mauchly และ Eckert คิดค้นขึ้นได้มีชื่อว่า ENIAC ย่อมาจาก (Electronic Numberical Integrater and Caculator) ประสบความสำเร็จในปี พ.ศ. 2489 ถึงแม้ว่าจะไม่ทันใช้ในสงครามโลกครั้งที่สอง แต่ความเร็วในการตำนวณของ ENIAC ทำให้วงการคอมพิวเตอร์ขณะนั้น ยอมรับความสามารถของเครื่องคอมพิวเตอร์อิเล็กทรอนิกส์ แต่อย่างไรก็ตาม ENIAC ทำงานด้วยไฟฟ้าทั้งหมดทำให้ในการทำงานแต่ละครั้งจึงทำให้เกิดความร้อนสูงมาก จำเป็นต้องติดตั้งไว้ในห้องที่มีเครือ่งปรับอากาศด้วย นอกจากนี้ ENIAC ยังเก็บได้เฉพาะข้อมูลที่เป็นตัวเลขขนาด 10 หลัก และเก็บได้เพียง 20 จำนวน เท่านั้น ส่วนชุดคำสั่งนั้น ยังไม่สามารถเก็บไว้ในเครื่องได้ การส่งชุดคำสั่งเข้าเครื่องจะต้องใช้วิธีการเดินสายไฟสร้างวงจร ถ้ามีการแก้ไขโปรแกรม ก็ต้องมีการเดินสายไฟกันใหม่ ซึ่งใช้เวลาเป็นวัน
ความคิดต่อมาในการพัฒนาเครื่องคอมพิวเตอร์ให้ดีขึ้นก็คือ การค้นหาวิธีการเก็บโปรแกรมไว้ในเครื่อง เพื่อลดความยุ่งยาก ของขั้นตอนการป้อนคำสั่งเข้าเครื่อง มีนักคณิตศาสตร์เชื้อสายฮังการเรียนชื่อ Dr.John Von Neumann ได้พบวิธีการเก็บโปรแกรมไว้ ในหน่วยความจำของเครื่องเช่นเดียวกับการเก็บข้อมูลและต่อวงจรไฟฟ้า สำหรับการคำนวณ และการปฏิบัติการพื้นฐาน ไว้ให้เรียบร้อยภายในเครื่อง แล้วเรียกวงจรเหล่านี้ด้วยรหัสตัวเลขที่กำหนดไว้ เครื่องคอมพิวเตอร์ที่ถูกพัฒนาขึ้นตามแนวความคิดนี้ได้แก่ EVAC (Electronic Ddiscreate Variable Automatic Computer) ซึ่งสร้างเสร็จใน ปี 1949 และนำมาใช้งานจริงในปี  1951 และในเวลาใกล้เคียงกัน ที่มหาวิทยาลัยเคมบริดส์ ประเทศอังกฤษ ได้มีการสร้างคอมพิวเตอร์มีลักษณะคล้ายกับเครื่อง EVAC และให้ชื่อว่า EDSAC (Electronic Delay Strorage Automatic Caculator)

ที่มาของ bug
   เมื่อครั้งที่คอมพิวเตอร์ ตัวแรกของโลกได้ ถูกสร้างขึ้น มันทำงานโดยอาศัยหลอดสูญญากาศ จำนวนมากใหญ่ขนาดห้องทำงานห้องหนึ่ง
เดินเครื่องที ใช้ไฟฟ้า ประมาณ อำเภอเล็ก ๆ อำเภอหนึ่ง ซึ่งสร้างประมาณปี 1947 โดย ENIVAC และเปลี่ยนชื่อมาเป็น UNIVAC ในที่สุด
วันหนึ่ง ซึ่งก็คือ วันที่ 9 เดือนกันยายน โปรแกรมเมอร์ หญิง Grace Hopper พบว่า โปรแกรมไม่สามารถทำงานได้ ตามที่สั่งไว้ เธอก็ทำการค้นหา
ข้อผิดพลาดใน โปรแกรมรวมทั้งในเครื่องคอมพิวเตอร์ จะกระทั่งในที่สุดเธอก็พบเจ้า "BUG" ตัวหนึ่งในเครื่อง UNIVAC มันไปเกาะอยู่หน้าคอนแทคตัวหนึ่งในคอมพิวเตอร์ จนทำงานผิดพลาดนับจากนั้นเป็นต้นมา เมื่อโปรแกรมเมอร์ พบว่า การทำงานของโปรแกรมผิดพลาด จะเรียกข้อผิดพลาดในโปรแกรมนั้น ๆ ว่า BUG ซึ่งหมายถึง แมลงตัวเล็ก ๆ ที่เข้าไปอยู่ในโปรแกรม จนทำให้โปรแกรมทำงานผิดพลาดไป

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

Bug ในเกมอสุราออนไลน์
     โดยดั้งเดิมคำว่า Bug  เกิดจากนักพัฒนารุ่นบุกเบิกโปรแกรมเมอร์ หญิง Grace Hopper ผู้ซึ่งทำการพัฒนา โปรแกรมเป็นคนแรก
ในระหว่างนั้นโปรแกรมได้เกิดจุดบกพร่องขึ้น เมื่อลองค้นหาสาเหตุดูก็ ค้นพบว่ามีแมลงตัวหนึ่งอยู่ในเครื่องคอมพิวเตอร์ที่เขาพัฒนาโปรแกรม
ตั้งแต่นั้นมาคำว่า Bug ก็ถูกใช้มาตลอด และยังใช้เรียกกับข้อผิดพลาดที่เกิดขึ้นกับเครื่องใช้ไฟฟ้าด้วย แต่ไม่บ่อยนัก
     ในความหมายของวิทยาการทางคอมพิวเตอร์ Bug หมายถึง ข้อผิดพลาดใน การเขียนโปรแกรม ซึ่งการเกิด bug นั้น สามารถเกิดขึ้นได้โดยที่
ทางทีมงานไม่สามารถคาดการณ์ได้ล่วงหน้า และทางทีมงานไม่ได้มีความประสงค์อยากให้เกิด bug ขึ้นมา เพราะเมื่อเกิด bug และจะเกิดผลเสีย
ต่อระบบโดยรวม ยิ่งในเกมออนไลน์ด้วยแล้ว bug เป็นอันตรายอย่างร้ายแรง ไม่ว่า bug ที่เกิดขึ้นนั้น จะร้ายแรง หรือไม่ก็ตาม
     ในเกมอสุราออนไลน์ ในเกมอสุราออนไลน์ก็เช่นเดียวกัน ทีมงานไม่มีความประสงค์ให้เกิด bug ขึ้น เพราะเมื่อเกิดข้อผิดพลาดขึ้นมาจะส่งผล
กระทบต่อระบบของเกมโดยรวม และต่อผู้เล่นไม่ทางตรงก็ทางอ้อม โดย bug ที่เกิดขึ้นในเกมนั้น มีทั้ง bug ที่เป็นคุณแก่ผู้เล่นโดยรวม bug ที่เป็นคุณต่อผู้เล่นบางกลุ่ม bug ที่ทำให้ผู้เล่นโดยรวมเสียประโยชน์ และ bug ที่ทำให้ผู้เล่นบางกลุ่มเสียประโยชน์  แต่เมื่อเกิด Bug ในเกมอสุรานี้เมื่อเกิด
ขึ้นทีมงานต้องรีบหาทางแก้ไขเพราะเมื่อมี bug เกิดขึ้น อาจมีผู้เล่นที่ ทราบช่องโหว่ของ bug และอาศัย bug เป็นเครื่องมือที่ใช้สร้างผลประโยชน์ต่อ
ตนเองและพวกพ้อง หรือสร้างความเสียหาย ให้กับโปรแกรมหรือข้อมูลเพิ่มขึ้น หากโปรแกรมเกมมี bug เกิดขึ้น และมีผู้เล่นที่มีความรู้และทราบเกี่ยว
กับ bug นี้ ก็อาจจะใช้ความรู้ที่มี ฉกฉวยผลประโยชน์จากbugนั้นๆ ได้  ซึ่งโดยส่วนใหญ่การพัฒนาเกมขึ้นมาจะยังคงมีbugอยู่ เพราะผู้ที่พัฒนา
โปรแกรมไม่สามารถที่จะคาดเดาพฤติกรรมการเล่นของผู้เล่นได้ทุกอย่าง รวมไปถึงสภาพแวดล้อม ของเครื่องคอมพิวเตอร์ที่ผู้เล่นใช้อยู่ อีกทั้งองค์
ประกอบอื่นๆ อีกมากมาย แต่ส่วนใหญ่จะมีการ ออกแบบโปรแกรมแก้ไขมาเพื่อแก้ไขปัญหาเหล่านี้ (Patch) ซึ่งวิธีการที่ใช้ในการหาbugของ
โปรแกรมเรียกว่า ดีบั๊กกิ้ง (Debugging) และ  เมื่อ มีการใช้โปรแกรมแก้ไขเพื่อแก้ไขbugแล้วbugก็จะหายไป แต่อาจจะมี bugอื่นเกิดขึ้นอีกหรือ
ไม่ นั่น ไม่มีใครสามารถกำหนดได้ ซึ่งการเกิด bug นี้ ไม่ใช่เกิดขึ้นเฉพาะเกมอสุรานะครับ แต่เกิดขึ้นกับเกมออนไลน์ทุกเกม เพียงแต่จะแตกต่างกันในจำนวน bug ที่เกิดมากหรือน้อย หรือรุนแรงแตกต่างกันไป

     เมื่อเราทราบอย่างดีแล้วว่าbugจะส่งผลกระทบต่อการทำงานของระบบข้อมูลเกมทำให้เกิด ความเสียหายได้ ในส่วนของผู้เล่นนั้นเมื่อพบเห็นbug
ก็ควรที่จะแจ้งต่อ gm เพื่อให้ gm หาวิธีแก้ไข และจัดการกับbugนี้ให้หมดไป ดังนั้นสิ่งที่ผู้เล่นใช้ควรทำ คือ หมั่นตรวจสอบดูว่ามีอะไรเปลี่ยนไปบ้าง
จากการอัพเดท Patch ประจำสัปดาห์ ซึ่งสิ่งที่เปลี่ยนแปลงไปนั้น ถูกต้องตรงกันกับประกาศของ gm หรือไม่ หากไม่ถูกต้องตรงตามที่ gm ประกาศ ให้ติดต่อสอบถาม gm ว่า สิ่งที่ตนเองพบนั้น ใช่ bug หรือไม่ ถ้าใช่ทาง gm จะได้ดำเนินการออกโปรแกรมแก้ไข (Patch)มาเพื่อแก้ไข bug
เหล่านั้น เพราะหากไม่มีการแจ้งแก่ทีมงานแล้ว bug ที่เกิดขึ้น เป็น bug ที่มีความรุนแรงมากอาจเกิดความเสียหายต่อระบบ จนทำให้ระบบล่ม หรือ
ระเกิดความเสียหายได้ และทีมงานอาจมีการ ย้อนกลับข้อมูลเพื่อรักษาระบบส่วนใหญ่ให้คงอยู่ จะเป็นผลเสียต่อผู้เล่นโดยรวมมากกว่า

ทราบได้อย่างไรว่าเป็น 
     เราจะทราบได้อย่างไรว่าเป็น bug นั้น โดยทั่วไป bug คือข้อผิดพลาดไปจากข้อมูลที่ควรจะเป็น ซึ่งหากยกตัวอย่างง่ายๆ เช่น สกิลโกยแนบ
คำอธิบายสกิลบอกว่าใช้เอ็มพี 10 หน่วย แต่ใช้จริง 9 หน่วย นี่เป็นข้อผิดพลาดแน่นอน โดยจุดที่ผิดพลาดนั้นอาจจะเป็นได้ทั้ง 2 ส่วน คือ คำอธิบายผิด หรือไม่ก็การใช้เอ็มพีที่น้อยกินที่ระบุ ต้องดำเนินการแก้ไขให้ถูกต้อง  หรือเช่น สกิลๆ หนึ่ง มีระยะเวลาหลังใช้ 1 นาที แต่พอใช้จริง ดังมีระยะหลังใช้ 1.30 นาที  โดยทั่วไปแล้ว bug นั้น คือความผิดพลาดจากที่ทีมงานตั้งใจไว้ ซึ่งถ้า bug  จากในส่วนของสกิลนั้นจะสามารถดูได้ง่ายที่สุด เพราะมีคำอธิบายรายสกิลไว้ สกิลใดๆ ที่ใช้แล้วไม่ตรงตามคำอธิบาย คิดในเบื้อต้นได้เลยว่า bug แต่ถ้าเป็น bug ในส่วนอื่นนั้นจะดูยากขึ้น เพราะบางทีผู้เล่นโดยทั่วไปไม่ทราบว่า bug  หรือไม่ แต่หากพบสิ่งผิดปกติ จากที่ควรจะเป็น ให้สันนิฐานไว้ก่อนเลยว่า bug เช่น bug ตายแล้วไม่เสียเปอร์เซ็นต์ ซึ่ง
โดยปกติหากไม่มีการใช้ประกันชั้นดี เมื่อตายแล้วจะเสียเปอร์เซ็นต์ แต่เมื่อเราตายกลับไม่เสีย นั่นคือ bug แน่นอน

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

      สุดท้าย ขอขอบคุณทุกท่านที่พยายามอ่านมาจนจบ หากมีข้อมูลในส่วนใดผิดพลาดไปก็ขออภัย ณ ที่นี้ด้วย หรือมีข้อมูลเพิ่มเติม
ก็แนะนำมากันได้ครับ

ข้อมูลอ้างอิง  :
     รุ่งฤดี ลุ้ยประเสริฐ.โตรงการจัดทำข้อมูลองค์ความรู้ งวดที่ 1 : นิยามธุรกิจ: เทคโนโลยีสารสนเทศ
      วาสนา สุขกระสานดี. โลกของคอมพิวเตอร์และสารสนเทศ. กรุงเทพฯ: จุฬาลงกรณ์มหาวิทยาลัย.
     สีลยุทธ์ สว่างบรรณ. ตำราคอมพิวเตอร์ระดับโลก เครือข่ายคอมพิวเตอร์ : Computer Network.กรุงเทพฯ: ซีเอ็ดยูเคชั่น.
     พิเชษฐ ศิริรัตนไพศาลกุล. ระบบปฏิบัติการ : Operating System. กรุงเทพฯ: ซีเอ็ดยูเคชั่น.
     เวปไซท์ www.sglcomp.com
90% ของพวกชอบดราม่าด่าด้วยภาษาย่าทวดในอินเตอร์เน็ต
มักจะหงอแดกเงียบเป็นสากเวลาเจอหน้ากันนอกจอ จริงป้ะ ?