หลักสูตรคอมพิวเตอร์ในเมืองไทย (ปรับปรุงใหม่)

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

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

ผมสรุปแล้ว (สรุปเอง) ว่าเราสามารถจัดหลักสูตรคอมพิวเตอร์ในเมืองไทยได้ 10 หลักสูตรใน 4 วุฒิการศึกษาครับ ตามรายการด้านล่างนี้

วุฒิวิทยาศาสตร์

  • วิทยาการคอมพิวเตอร์ (Computer Science) มุ่งเน้นการเรียนรู้ทฤษฎีการคำนวณสำหรับคอมพิวเตอร์ และ ทฤษฎีการประมวลผลสารสนเทศ
  • วิศวกรรมซอฟต์แวร์ (Software Engineering) มุ่งเน้นการเรียนรู้ทฤษฎีการพัฒนาซอฟต์แวร์ และกระบวนการพัฒนาซอฟต์แวร์อย่างเป็นระบบ
  • เทคโนโลยีสารสนเทศ (Information Technology) มุ่งเน้นการประยุกต์ทฤษฎีทางคอมพิวเตอร์ให้เกิดประโยชน์และใช้ได้จริง
  • ระบบสารสนเทศเพื่อการจัดการ (Management Information System) มุ่งเน้นการเรียนรู้ทฤษฎีการค้นหา วิเคราะห์ สังเคราะห์ข้อมูลด้วยคอมพิวเตอร์ เพื่อสกัดสารสนเทศและตกผลึกสารสนเทศ สำหรับนำเสนอ ตัดสินใจ และบริหารจัดการ
  • เทคโนโลยีมัลติมีเดียและแอนิเมชั่น (Multimedia Technology and Animation) มุ่งเน้นการเรียนรู้การใช้คอมพิวเตอร์เพื่อประมวลผลสัญญาณภาพดิจิทัล ผสานสื่อผสม สร้างเกมคอมพิวเตอร์ และประสานงานด้านนิเทศศาสตร์
  • เทคโนโลยีคอมพิวเตอร์อุตสาหกรรม (Industrial Computer Technology) มุ่งเน้นการประยุกต์ใช้คอมพิวเตอร์ เพื่อตอบสนองต่องานช่างอุตสาหกรรม และพัฒนาระบบในงานอุตสาหกรรม

วุฒิวิศวกรรมศาสตร์

  • วิศวกรรมคอมพิวเตอร์ (Computer Engineering) มุ่งเน้นการเรียนรู้กระบวนวิธีเพื่อสั่งการคอมพิวเตอร์ในระดับล่างเชิงลึก และการสั่งการฮาร์ดแวร์ที่ต่อเชื่อมกับคอมพิวเตอร์ การสั่งการระบบฝังตัวและระบบไมโครคอนโทรลเลอร์
  • วิศวกรรมข้อมูลขนาดใหญ่ (Big Data Engineering) มุ่งเน้นการเรียนรู้ทฤษฎีการบริหารจัดการข้อมูลขนาดใหญ่ การเรียนรู้โดยเครื่องจักร และการสกัดความรู้จากข้อมูลขนาดใหญ่

วุฒิบริหารธุรกิจ

  • คอมพิวเตอร์ธุรกิจ (Business Computer) มุ่งเน้นเรียนรู้การประยุกต์ใช้คอมพิวเตอร์ในด้านฐานข้อมูล สินค้าคงคลัง ค้าปลีก ค้าส่ง การเงิน บัญชี ทรัพยากรบุคคล เพื่อตอบสนองทางธุรกิจ

วุฒิครุศาสตร์อุตสาหกรรม

  • เทคโนโลยีคอมพิวเตอร์ (Computer Technology) มุ่งเน้นเรียนรู้เทคโนโลยีทางคอมพิวเตอร์ และเรียนรู้ขั้นตอนวิธีการถ่ายทอดความรู้ เพื่อเป็นผู้ถ่ายทอดความรู้ทางคอมพิวเตอร์ให้ผู้อื่นอย่างเป็นระบบ

คอมพิวเตอร์

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

ถ้าใครอยากรู้ว่าวิศวกรรมข้อมูลขนาดใหญ่ มันมีความสำคัญยังไงต่ออนาคต อยากให้ไปลองอ่านหัวข้อ Data Science คืออะไร และ Data Scientist คืออะไร ที่ผมเคยเขียนไว้ครับ เพื่อจะได้เข้าใจว่าปฐมบทแห่งวิศวกรรมข้อมูลขนาดใหญ่ มันมีต้นกำเนิดมาจากอะไร

เครื่องจักรโง่ เครื่องจักรฉลาด เครื่องจักรปัญญาประดิษฐ์

ก่อนที่เราจะเข้าเรื่องกัน ผมอยากจะค่อย ๆ เล่าให้เห็นภาพว่า มนุษย์เราเหนือกว่าสัตว์ได้ยังไง แล้วมนุษย์เราเหนือกว่ามนุษย์ด้วยกันเองได้ยังไง และอะไรที่ทำให้เผ่าพันธุ์หนึ่งเหนือกว่าอีกเผ่าพันธุ์หนึ่ง และอารยธรรมหนึ่งเหนือกว่าอีกอารยธรรมหนึ่ง

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

มนุษย์เราก็เหมือนกับสัตว์หรือแม้แต่แมลง เราต้องดิ้นรนเพื่อเอาตัวรอด เราต้องการอาหาร เครื่องนุ่งห่ม ที่อยู่อาศัย ยารักษาโรค เพื่อหล่อเลี้ยงให้เราดำรงชีพอยู่ จากนั้นเราก็ต้องการความปลอดภัย สิ่งเหล่านี้ล้วนเป็นไปตามลำดับความต้องการแบบปัจเจกบุคคลที่เสนอโดยมาสโลว์เป๊ะ

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

ยุคที่หนึ่ง มนุษย์ทำเอง

มนุษย์ทำ
มนุษย์ทำ

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

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

ยุคที่สอง มนุษย์คุม เครื่องมือทำ

มนุษย์คุม เครื่องมือทำ
มนุษย์คุม เครื่องมือทำ

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

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

ถึงแม้จะมีเครื่องมือแล้ว แต่ปัญหาในเรื่องของประสิทธิภาพยังมีอยู่ เพราะเครื่องมือมันมีการส่งกำลังที่จำกัด ดังนั้น มนุษย์จึงเริ่มคิดค้นสิ่งที่เรียกว่า “เครื่องจักร” ขึ้นมา

ยุคที่สาม มนุษย์คุม เครื่องจักรโง่ทำ

มนุษย์คุม เครื่องจักรโง่ทำ
มนุษย์คุม เครื่องจักรโง่ทำ

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

แล้วเครื่องมืออะไรบ้างที่ประกอบกันเป็นเครื่องจักร? ก็มีหลายอย่าง เช่น ทางลาด รอก ล้อและเพลา ตะปูควง น็อต คานดีดคานงัด ลิ่ม เฟือง โซ่ คันโยก ใบจักร สายพาน สปริง เป็นต้น

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

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

ถึงมันจะทุ่นแรงไปมาก แต่ว่าเครื่องจักรเหล่านี้ยัง “โง่” อยู่ เพราะทุก ๆ ครั้งที่เราจะใช้มันให้ทำงาน เราก็ต้องสั่งมันใหม่ทุกครั้ง ยิ่งขั้นตอนในการสั่งมีมากเท่าไหร่ มนุษย์เราก็จะเริ่มมีความยุ่งยากในการสั่งเครื่องจักรโง่เหล่านี้เท่านั้น ดังนั้น มนุษย์จึงเริ่มคิดว่าจะทำยังไงให้เครื่องจักร “ฉลาด” ขึ้นมาได้?

ยุคที่สี่ เครื่องจักรฉลาดคุม เครื่องจักรโง่ทำ

เครื่องจักรฉลาดคุมเครื่องจักรโง่
เครื่องจักรฉลาดคุมเครื่องจักรโง่

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

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

เมื่อป้อนชุดคำสั่งให้ทำงานได้ ก็หมายความว่ามนุษย์จะไม่จำเป็นต้องมาสั่งซ้ำ ๆ ในทุกขั้นตอนให้เครื่องจักรทำงานอีกต่อไป สั่งแค่ครั้งเดียว แล้วก็ให้เครื่องจักรทำงานตามขั้นตอนที่สั่งเอาไว้ แล้วมนุษย์ก็เอาเวลาที่เหลือไปทำอย่างอื่นต่อไป

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

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

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

เอาเป็นสถิติของปี พ.ศ. 2558 (ค.ศ. 2015) แล้วกัน

ประเทศจีน

สินค้าส่งออก 10 รายการของประเทศจีน ค.ศ. 2015
สินค้าส่งออก 10 รายการของประเทศจีน ค.ศ. 2015

ประเทศสหรัฐอเมริกา

สินค้าส่งออก 10 รายการของประเทศสหรัฐอเมริกา ค.ศ. 2015
สินค้าส่งออก 10 รายการของประเทศสหรัฐอเมริกา ค.ศ. 2015

ประเทศสหราชอาณาจักร

สินค้าส่งออก 10 รายการของประเทศสหราชอาณาจักร ค.ศ. 2015
สินค้าส่งออก 10 รายการของประเทศสหราชอาณาจักร ค.ศ. 2015

ประเทศเยอรมัน

สินค้าส่งออก 10 รายการของประเทศเยอรมัน ค.ศ. 2015
สินค้าส่งออก 10 รายการของประเทศเยอรมัน ค.ศ. 2015

ประเทศญี่ปุ่น

สินค้าส่งออก 10 รายการของประเทศญี่ปุ่น ค.ศ. 2015
สินค้าส่งออก 10 รายการของประเทศญี่ปุ่น ค.ศ. 2015

ประเทศเกาหลีใต้

สินค้าส่งออก 10 รายการของประเทศเกาหลีใต้ ค.ศ. 2015
สินค้าส่งออก 10 รายการของประเทศเกาหลีใต้ ค.ศ. 2015

ต้นฉบับดูได้จากที่นี่ จากภาพข้างบน ๆ จะเห็นว่า สินค้าส่งออกลำดับต้น ๆ ส่วนใหญ่ของชาติมหาอำนาจ ล้วนเป็นเครื่องจักรทั้งนั้น ดังนั้น ถ้าประเทศไทยอยากเป็นมหาอำนาจ ก็ต้องตั้งใจสร้างเครื่องจักรกันได้แล้ว!!!

ยุคที่ห้า เครื่องจักรอัจฉริยะควบคุมเครื่องจักรฉลาด

เครื่องจักรปัญญาประดิษฐ์คุมเครื่องจักรฉลาด
เครื่องจักรปัญญาประดิษฐ์คุมเครื่องจักรฉลาด

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

คำว่า “ปัญญาประดิษฐ์” หมายถึง ความฉลาดเทียมที่สร้างขึ้นให้กับสิ่งไม่มีชีวิต (หาอ่านรายละเอียดเต็มได้ที่นี่) ในปัจจุบัน ปัญญาประดิษฐ์เป็นเรื่องของทฤษฎีทางคอมพิวเตอร์ซึ่งเป็นรากฐานสำคัญสำหรับพัฒนาเป็นซอฟต์แวร์คอมพิวเตอร์ และเมื่อมันถูกสร้างขึ้นแล้ว มันก็อาจถูกขับเคลื่อนบนสถาปัตยกรรมของเครื่องจักรฉลาด ที่ใช้ประโยชน์จากการแปลงทิศทางและขนาดของแรงในรูปแบบใดรูปแบบหนึ่ง เช่น แรงแม่เหล็กไฟฟ้า หรือ แรงนิวเคลียร์แบบอ่อน เป็นต้น

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

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

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

วิธีค้นหาคำตอบที่ดีที่สุดโดยคอมพิวเตอร์

เราจะเห็นว่าทุกวันนี้เครื่องจักรที่คิดหรือตัดสินใจอะไรเองได้ เริ่มเข้ามามีบทบาทในชีวิตประจำวันเรามากขึ้นเรื่อย ๆ และการที่มันทำพฤติกรรมแบบนี้ได้ เราก็มักจะมีคำจำกัดความให้มัน เรามักจะเรียกมันว่า “ปัญญาประดิษฐ์” บ้าง หรือไม่ก็เรียกว่า “ระบบอัจฉริยะ” บ้าง อะไรประมาณนั้น

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

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

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

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

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

ดังนั้น ในปัจจุบันจึงมีแนวทางอยู่ 3 ประการในการค้นหาคำตอบที่ดีที่สุดโดยคอมพิวเตอร์ครับ ซึ่งได้แก่

1.  การค้นหาด้วยเทคนิคปรกติ

การค้นหาด้วยเทคนิคปรกติ ก็คือการค้นหาตามหลักการพื้น ๆ ในทางคอมพิวเตอร์ทั่วไป ไม่ว่าจะเป็น

  • การค้นหาแบบดิบ ๆ ตั้งแต่ต้นจนจบ
  • การค้นหาโดยแบ่งข้อมูลเป็นส่วน ๆ
  • การค้นหาโดยการลดรูป
  • การค้นหาโดยจัดเส้นทางค้นหาเป็นแบบต้นไม้
  • การค้นหาโดยจัดเส้นทางค้นหาเป็นแบบต้นไม้แล้วให้น้ำหนัก
  • การค้นหาโดยพักคำตอบไว้ในขั้นตอนก่อนหน้า เพื่อให้ขั้นตอนถัดไปนำไปใช้ซ้ำได้

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

2.  การค้นหาด้วยเทคนิคการเดาอย่างมีเหตุผล

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

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

  • การเดาโดยเลียนแบบพฤติกรรมของธรรมชาติ เช่น เลียนแบบการวิวัฒนาการของสิ่งมีชีวิต การเลียนแบบแรงดึงดูดโน้มถ่วง
  • การเดาโดยเลียนแบบพฤติกรรมของสัตว์หรือแมลง เช่น เลียนแบบการค้นหาเหยื่อของฝูกนก เลียนแบบการหาอาหารของฝูงมด
  • การเดาโดยเลียนแบบสิ่งประดิษฐ์ที่เกิดจากมนุษย์ เช่น เลียนแบบพฤติกรรมของโลหะเมื่อร้อนแดงแล้วค่อย ๆ เย็นตัวลง

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

3.  การค้นหาโดยเทคนิคให้คอมพิวเตอร์เรียนรู้

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

การค้นหาคำตอบที่ดีที่สุดโดยเทคนิคนี้ จะคล้าย ๆ กับเทคนิคการเดาอย่างมีเหตุผลในแง่ของคำตอบ คือคำตอบที่ได้จะไม่ใช่คำตอบที่ดีที่สุดจริง ๆ แต่มันก็ดีพอที่จะยอมรับได้

ดังนั้น โดยสรุปแล้ว ความมีปัญญาของคอมพิวเตอร์ ก็คือการที่คอมพิวเตอร์มันคำนวณ (ด้วยวิธีอันแสนจะซับซ้อน) โดยอิงกับข้อมูล (เท่าที่มี) เพื่อค้นหาคำตอบที่ดีที่สุด ในเวลาที่จำกัดบนทรัพยากรที่จำกัดนั่นเอง

คงอีกนานครับกว่าคอมพิวเตอร์มันจะมีชีวิตจิตใจขึ้นมาได้

ปัญหาการจัดหมู่คลาส Factorial เชิงสังคมศาสตร์

ทุกวันนี้คอมพิวเตอร์มันเก่งมากในการประมวลผลซอฟต์แวร์ แต่มันยังไม่ถึงจุดที่มันจะสร้างซอฟต์แวร์เองได้ ดังนั้น มนุษย์เลยยังคงต้องรับผิดชอบเป็นผู้สร้างซอฟต์แวร์อยู่

ในงานสร้างซอฟต์แวร์โดยเฉพาะซอฟต์แวร์ขนาดใหญ่ มักจะต้องแบ่งงานกันทำ เพราะทำคนเดียวไม่ได้ มันเสร็จช้า และก็อาจจะไม่ประณีตในหลาย ๆ เรื่อง ดังนั้น แบ่งกันทำดีกว่า

ปรกติแล้วการสร้างซอฟต์แวร์ถ้ามีคนพอ จะแบ่งงานออกเป็น 3 ส่วนใหญ่ ๆ คืองาน Management งาน Functional และงาน Technical

ทีนี้เรามาสมมติว่าเราเป็นผู้อำนวยการสร้างกันดีกว่า โดยสมมติให้เราคิดคำนวณตัดสินใจแบบคอมพิวเตอร์ คือสมมติว่าเรามีโครงการสร้างซอฟต์แวร์อยู่โครงการนึง ตั้งงบประมาณไว้ที่ 2,100,000.00 บาท จุดประสงค์ของงบประมาณ คือเอามาจ่ายให้กับคนที่ทำงาน ซึ่งโครงการนี้ต้องการทำให้เสร็จภายใน 30 วัน โดยให้ใช้คนเพียง 3 คนแบ่งกันทำงานทุกวัน ตามตำแหน่ง Management, Functional และ Technical และแต่ล่ะคนทำงานได้เพียงหน้าที่เดียวเท่านั้นตลอดทั้งโครงการ

ในฐานะเราเป็นผู้อำนวยการสร้าง เราก็หวังว่าเราจะใช้คนให้เหมาะสมกับงาน เพื่อให้ได้ประสิทธิผลที่สูงสุด โดยพิจารณาจากคะแนนรวมของตำแหน่ง Management, Functional และ Technical ซึ่งคะแนนของแต่ล่ะตำแหน่ง ก็ได้จากคะแนนทักษะแต่ล่ะแบบของคนทำงานทั้ง 3 คนอีกทอดหนึ่ง

พอดีว่าคนทำงานที่มีให้เลือกมันน้อย ก็เลยมีให้เลือกมาแค่ 3 คนซึ่งมีอายุไล่เลี่ยกัน และแต่ล่ะคนก็มีทักษะ Management, Functional และ Technical แตกต่างกันไปตามภาพข้างล่างนี้ ดังนั้น ลองมาคิดดูกันดีกว่าว่า คนไหนควรจะทำตำแหน่งอะไร เพื่อให้ผลรวมของคะแนนในการคัดเลือกมีมากที่สุด ซึ่งผลรวมมากสุดที่เป็นไปได้ คือ  30 คะแนน

และที่สำคัญ คนไหนที่ได้ทำตำแหน่ง Management เราจะให้เป็นหัวหน้าผู้ควบคุมโครงการในครั้งนี้

คะแนนทักษะ
คะแนนทักษะ

จากภาพจะเห็นว่านาย กอ มีทักษะแยกประเภทและทักษะโดยรวมมากกว่า นาย ขอ และ นาย คอ!!!

จะเห็นว่าปัญหานี้เป็นปัญหาที่ต้องใช้เวลาในการคำนวณซึ่งอยู่ในคลาส Factorial คือถ้าเราจะเลือกคนมาทำ Management ก็จะมีตัวเลือก 3 คน พอต้องมาเลือกคนทำ Functional ก็จะเหลือตัวเลือกแค่ 2 คน เพราะเลือก Management ไปแล้วคนนึง และสุดท้ายก็จะเหลือคนมาทำ Technical แค่คนเดียว เพราะอีก 2 คนถูกเลือกให้ทำ Management กับ Functional ไปแล้ว

ดังนั้น ถ้าเราจะต้องหาว่าผลรวมไหนดีที่สุด เราก็ต้องคำนวณหาในทุกกรณี ซึ่งก็ต้องใช้เวลาในการคำนวณเท่ากับ 3 x 2 x 1 = 3! = 6 รูปแบบนั่นเอง

และเพื่อให้เห็นภาพชัดขึ้น เรามาค่อย ๆ คำนวณกันดีกว่า ค่อย ๆ ทำทีล่ะกรณี เพราะโจทย์นี้มันง่าย ทำแค่ 6 ครั้งก็ได้คำตอบ แต่ถ้าให้ทำมากกว่านี้ก็ไม่ไหวเหมือนกัน ตามภาพด้านล่างนี้

Skill Matrix
Skill Matrix

จากภาพข้างบนจะเห็นว่า การจัดหมู่ที่ดีที่สุดสำหรับโจทย์นี้คือ การให้นาย ขอ เป็นหัวหน้าทำตำแหน่ง Management ให้นาย คอ ทำตำแหน่ง Functional และนาย กอ ทำตำแหน่ง Technical เหตุผลเพราะการจัดหมู่รูปแบบนี้ ให้ผลคะแนนที่ดีที่สุดคือ 20 คะแนน

โดยปรกติแล้วตามราคาตลาด ผลตอบแทนของ Management จะต้องคูณ 2.3 เท่า ส่วนของ Functional จะต้องคูณ 1.2 เท่า และของ Technical ไม่คูณอะไรเลย

ดังนั้น ถ้าให้ค่าตอบแทนวันล่ะ 15,000 บาท ด้วยการจัดหมู่แบบนี้นาย ขอ จะได้ค่าตอบแทนวันล่ะ 15,000 x 2.3 บาท ส่วนนาย คอ จะได้ค่าตอบแทนวันล่ะ 15,000 x  1.2 บาทและส่วนนาย กอ จะได้ค่าตอบแทนวันล่ะ 15,000 บาท

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

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

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

กระบวนการแปลภาษาทางคอมพิวเตอร์

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

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

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

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

โดยองค์ประกอบหลัก ๆ ของการเกิดขึ้นและตั้งอยู่ของภาษาทางคอมพิวเตอร์ก็มีอยู่ 2 ประการคือ หนึ่งไวยากรณ์ของภาษา และ สองโปรแกรมที่จะแปลไวยากรณ์ของภาษาให้เป็นภาษาเครื่อง

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

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

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

สั่งเครื่องจักรด้วยภาษาเครื่อง
สั่งเครื่องจักรด้วยภาษาเครื่อง

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

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

ทีนี้เพื่อความง่ายขึ้น เราก็น่าจะเพิ่มประสิทธิภาพ โดยการคิดค้นภาษาระดับล่างขึ้นมา เพื่อทดแทนภาษาเครื่องดีกว่า ซึ่งองค์ประกอบมันก็ต้องมี 2 อย่างแบบที่บอกไว้ คือ ต้องมีไวยากรณ์ และต้องมีตัวแปลภาษา ดังนั้น ก็ต้องคิดค้นไวยากรณ์ขึ้นมา จากนั้นก็ใช้ภาษาเครื่องที่มีนั่นแหล่ะครับ มาสร้างตัวแปลภาษา เพื่อแปลภาษาระดับล่าง ให้กลายเป็นภาษาเครื่อง แล้วก็เอาไปสั่งเครื่องจักรให้มันทำงานต่อไปได้

ดังนั้น ด้วยการเสียสละเวลาเพื่อคิดค้นพัฒนา ก็จะทำให้การสั่งเครื่องจักรในครั้งต่อ ๆ ไป ไม่ต้องใช้ภาษาเครื่อง แต่ใช้ภาษาระดับล่างแทน ดังรูปด้านล่าง

การแปลภาษาเครื่องให้เป็นภาษาระดับล่าง
การแปลภาษาเครื่องให้เป็นภาษาระดับล่าง

แบบนี้คือชีวิตดีขึ้นมั้ย? ก็ยังไม่ได้ดีขึ้นอะไรมากมายครับ เพราะภาษาระดับล่าง ยังไงก็ทำงานแบบ 1 ต่อ 1 กับภาษาเครื่องอยู่แล้ว มันไม่ได้ช่วยทำให้เขียนน้อยลง แต่มันช่วยเรื่องไวยากรณ์ จากเดิมที่เคยต้องเขียนสั่งด้วยภาษาเครื่องที่เป็นเลขฐานสอง ก็เปลี่ยนมาเป็นภาษาระดับล่างซึ่งมีคำสั่งแบบข้อความสั้น ๆ หรือคำย่อแทน

คนเรามักจะคิดคล้าย ๆ กันครับ คือถ้าสั่งอะไรให้ใครทำ ก็หวังจะสั่งด้วยคำสั่งที่ง่าย ๆ และสั่งแค่คำสั่งไม่กี่คำสั่ง ที่เหลือก็ให้ไปคิดเองว่าจะต้องไปทำอะไรบ้าง ดังนั้น ถ้าเราคิดจะสั่งให้หุ่นยนต์กระพริบตา จะดีกว่ามั้ยถ้าไม่ต้องมาเขียนภาษาเครื่องหลาย ๆ บรรทัด หรือเขียนภาษาระดับล่าง ๆ หลาย ๆ บรรทัดเพื่อสั่งมัน?

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

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

การแปลภาษาระดับสูงเป็นภาษาเครื่อง
การแปลภาษาระดับสูงเป็นภาษาเครื่อง

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

จะเห็นว่าด้วยกระบวนการแบบนี้ เราก็จะสามารถสร้างภาษาชั้นสูงให้มันสูงขึ้นไปได้เรื่อย ๆ สร้างให้มันมีไวยากรณ์เข้าใกล้ภาษามนุษย์ไปเรื่อย ๆ จนอาจจะเปลี่ยนจากภาษาไปเป็นอย่างอื่นที่ไม่ใช่ภาษาเพื่อสั่งงานเครื่องจักรก็ได้

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

แต่ถ้าเราจะสร้างภาษาระดับสูงด้วยเหตุผลทางแฟชั่น อันนี้ก็ต้องคิดค้นไวยากรณ์ขึ้นมาใหม่ และรับผิดชอบสร้างตัวแปลภาษาเองครับ ซึ่งแฟชั่นที่ว่าก็เช่น ถ้าช่วงนี้ใคร ๆ ก็อยากจะสั่งเครื่องจักรให้ทำงานด้าน Machine Learning หรือ Data Mining หรือ Data Science หรือ 3D Printing และภาษาชั้นสูงที่มีในปัจจุบัน มันไม่เอื้อต่องานด้านนี้ ก็สามารถสร้างกันขึ้นมาใหม่ได้ครับ ตามแฟชั่นกันไป

 

ทฤษฎีการคำนวณสำหรับคอมพิวเตอร์และทฤษฎีการประมวลผลสารสนเทศ