ปัญหาการขาดแคลนโปรแกรมเมอร์

ข่าวออกมาถี่มาก เรื่องขาดแคลนโปรแกรมเมอร์เนี่ย

เขียนโปรแกรมคอมพิวเตอร์ จริง ๆ มันไม่ได้ยาก แต่มันต้องมีโจทย์มาก่อน

ทิศทางของโจทย์ จะทำให้ตัวโปรแกรมเมอร์รู้ได้เองว่า ตัวเองจะพัฒนาไปในทิศทางไหน

ทิศทางของการพัฒนาโปรแกรมเมอร์ ซึ่งอิงตามโจทย์ จะขึ้นอยู่กับสามปัจจัย คือ

1. โปรแกรมคอมพิวเตอร์ต้องทำงานอยู่บนคอมพิวเตอร์แบบไหน? มันต้องทำงานอยู่บนคอมพิวเตอร์ที่อยู่ในห้องดาต้าเซ็นเตอร์ หรือ ที่ตั้งอยู่บนโต๊ะ หรือ ที่ถือติดมือพกพาได้ หรือ มันทำงานอยู่ในแอร์ ตู้เย็น หรือ มันฝังอยู่ในหุ่นยนต์

คลาสของคอมพิวเตอร์
คลาสของคอมพิวเตอร์

2. โปรแกรมคอมพิวเตอร์ต้องประพฤติตนแบบไหน? อันนี้จัดง่ายเพราะ IEEE Spectrum เขาจัดไว้ให้แล้ว คือ เป็น web application หรือ mobile application หรือ enterprise application หรือ embedded application

ถ้าลองเอาข้อ 1 กับ 2 มา combination กัน ก็อาจยกตัวอย่างได้เช่น web application และ enterprise application มีโอกาสทำงานอยู่บนคอมพิวเตอร์ที่อยู่ในห้องดาต้าเซ็นเตอร์ได้ทั้งคู่ และเพื่อจะสร้าง app ทั้งสองแบบนี้ โปรแกรมเมอร์ก็จะต้องใช้ทักษะที่แตกต่างกัน ต้องพัฒนาตัวเองไปในทิศทางที่แตกต่างกัน เป็นต้น

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

IEEE Spectrum Top Programming Language 2016
IEEE Spectrum Top Programming Language 2016

จะเห็นว่า combination มันมี 3 ตัวแปร ซึ่งแปลว่ามันเยอะ

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

ยกตัวอย่าง บางคนเก่งภาษา C สำหรับสร้างโปรแกรมคอมพิวเตอร์แบบ enterprise application เพื่อใช้ในคอมพิวเตอร์ที่ทำงานอยู่ในดาต้าเซ็นเตอร์ เขาชำนาญด้านการสร้าง services, daemon, multi processing, multithreading และ tcp server socket

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

หรือเขาจะยังคงทิศทางการพัฒนา enterprise application เพื่อทำงานบนคอมพิวเตอร์ที่ทำงานอยู่บนดาต้าเซ็นเตอร์ต่อไป โดยเปลี่ยนจากภาษา C เป็นภาษา Python แทน?

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

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

บางทีคนพอ แต่อาจกระจัดกระจาย ก็เอามารวมอยู่ด้วยกัน แต่ถ้าไม่พอก็ค่อยมาคิดอ่านว่าจะสร้างเพิ่มกันขึ้นมาได้ยังไง

สาเหตุที่ไม่ค่อยชอบ Neural Network ซักเท่าไหร่

เห็นทุกวันนี้งานทางด้าน AI ใช้ Neural Network มากขึ้นเรื่อย ๆ ซึ่งโดยส่วนตัวแล้วไม่ค่อยชอบโมเดลปัญญาประดิษฐ์แบบ Neural Network ซักเท่าไหร่ เพราะ …

Model Neural Network แบบต่าง ๆ
Model Neural Network แบบต่าง ๆ
  1.  แปลความยาก คือเวลามันเรียนรู้แล้วสร้างเส้นแบ่ง เส้นแบ่งมันเป็นเส้นโค้ง โค้งไปมาตามข้อมูลที่มันเรียน มันเลยไม่มีความเป็นกลาง ลองนึกถึงว่าเราตีเส้นตรงเพื่อแบ่งเขต เรายังตีความง่าย แต่พอมันโค้ง เราต้องตีความว่าทำไมมันโค้ง มันหลบทำไม มันมีอะไรพิเศษถึงต้องโค้งหลบ (มันเหมือนทางด่วนที่สร้างหลบบ้านคนรวยมั้ย)
  2. ถ้าอยากได้เส้นแบ่งเป็นเส้นตรง ก็ต้องเลือกใช้ Neural Network แบบ Perceptron แต่มุมเอียงของเส้นตรงที่แบ่งข้อมูล ก็จะเอียงแบบไม่มีหลักการ ถ้าเอาไปเทียบกับ Linear Support Vector Machine หรือ Linear Discriminant Analysis พวกนั้นยังตีเส้นตรงแบ่งแบบมีหลักการกว่าเยอะ
  3. มันช้า แต่ล่ะ epoch แปรผันตรงกับ node และ layer ยิ่งเยอะ ยิ่งช้า
  4. โมเดลมันเป็นแบบปลายเปิด คือ ไม่รู้ว่าจะต้องออกแบบ Hidden Layer หรือ Recurrent Layer หรือ Kernel Layer กี่ node หรือกี่ layer ถึงจะเหมาะกับปัญหาที่จะแก้ ต้องลองผิดลองถูกไปเรื่อยๆเอง
  5. การสุ่มค่าน้ำหนักเริ่มต้น เป็นไปตามดวง สุ่มไม่ดีเรียนรู้ช้า สุ่มดีเรียนรู้เร็ว
  6. ต้องใช้ข้อมูลเพื่อเรียนรู้เยอะมาก กว่าจะแบ่งเขตข้อมูลได้อย่างเหมาะสม

ไม่รู้คนอื่นเจอแค่ไหน แต่ที่ส่วนตัวเคยสัมผัสมา ก็ประมาณนี้

แต่ก็ไม่ใช่ว่า Neural Network จะไม่มีอะไรดีเลยในสายตาผมนะ ผมยังมองว่ามันมีจุดดีอยู่บ้าง ซึ่งเป็นจุดที่ผมชอบมาก ๆ เลย

นั่นก็คือ เมื่อสร้าง Model Neural Network ขึ้นมา แล้วสอนมันจนได้ประสิทธิผลที่พอใจแล้ว เราก็ไม่จำเป็นจะต้องสนใจกับข้อมูลที่สอนอีกต่อไป สนใจเฉพาะโมเดลที่ได้ก็พอ

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

คอมพิวเตอร์คืออะไร?

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

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

หมวดหมู่ของคอมพิวเตอร์
หมวดหมู่ของคอมพิวเตอร์

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

ภาพข้างบนที่ผมจับมาจากวิกิพีเดียมันใหญ่ มันต้องกดขยาย ดูยากไปนิด ผมเลยลอกมาทำเป็น Quote ให้ดูแบบข้างล่างนี้แทน (จัดหมวดหมู่เหมือนวิกิพีเดียเป๊ะ)

Microcomputer, Personal Computer
|-Stationary
|–Workstation
|–Desktop Computer
|–Home Computer
|–Personal supercomputer
|–Small Form Factor (Nettop)
|–Plug Computer
|–Portable Computer (Table Computer)
|–Video Game Arcade Cabinet (System Board)
|–Home Video Game Console
|–Microconsole
|–Interactive kiosk
|–Smart TV
|–Smart Speaker
|-Mobile
|–Laptop
|—Desktop Replacement Computer
|—Notebook Computer
|—2-in-1 PC
|—Subnotebook (Netbook, Smartbook, Ultrabook)
|—Ultramobile PC
|–Tablet
|—Ultramobile PC
|—2-in-1 Tablet
|—Mobile Internet Device
|—Tabletop Computer
|—Phabet
|–Information Appliance
|—Handheld PC (Plamsize PC, Pocket PC, Pocket Computer, Palmtop PC)
|—PDA (Electronic organizer, Enterprise Digital Assistant)
|—Mobile Phone (Feature Phone, Smartphone)
|—Portable Media Player
|—E-Reader
|—Handheld Game Console
|—Portable Data Terminal / Mobile Data Terminal
|–Calculator
|—Scientific Calculator
|—Programmable Calculator
|—Graphing Calculator
|–Wearable
|—Digital wristwatch (Calculator Watch, Smart Watch)
|—Smartglasses
|—Smart Ring
Mini
|-Midrange Computer
|-Superminicomputer
|-Server Computer
Large
|-Supercomputer
|-Minisupercomputer
|-Mainframe Computer
Other
|-Microcontroller
|-Nanocomputer
|-Pizza box form factor
|-Single-board Computer
|-Smartdust
|-Wireless sensor network

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

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

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

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

อธิบายแขนงวิชาของปัญญาประดิษฐ์

เดี๋ยวนี้ ผลิตภัณฑ์อิเล็กทรอนิกส์ที่บรรจุคุณสมบัติของ AI หรือ ปัญญาประดิษฐ์ มีมากขึ้นเรื่อยๆ

ปัญญาประดิษฐ์มีหลายแขนงมาก จะอธิบายให้เข้าใจง่ายๆ ก็ไม่ใช่เรื่องง่ายๆ

แต่ก็จะลองอธิบายดู

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

จากนั้นพอมันเก่งมากพอ มนุษย์เราก็จะเริ่มให้มันเรียนรู้เอง โดยคราวนี้มนุษย์เราจะไม่เฉลยคำตอบให้มันล่ะ ให้มันเฉลยคำตอบเอง เรียนเอง สอนตัวเอง

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

สำหรับนักคอมพิวเตอร์ ซึ่งต้องเป็นผู้ที่เข้าใจเบื้องหลังการทำงานของมัน ก็จะเกี่ยวข้องผูกพันกับ Machine Learning ผ่านความเข้าใจในทฤษฎีพื้นฐานที่เกี่ยวเนื่อง เช่น Naive Bayes, Neural Network, Support Vector Machines, Decision Tree, Fuzzy Logics, Regression, Discriminant Analysis, Ensemble, Hidden Markov Model, Bayesian Network เป็นต้น

แขนกลกดเครื่องคิดเลข

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

สำหรับผู้บริโภคอย่างเรา เราได้สัมผัสมันแล้วผ่านเครือข่ายสังคม เราได้บอกว่าตัวเราชอบอะไร เราเป็นใคร เราอยู่ที่ไหน เราได้อธิบายความผ่าน hash tag เรากด like กด wow เราแชร์รูป

เครื่องมันจะนับ จัดเรียง จำแนก จัดกลุ่ม หาความสัมพันธ์ จากการกระทำของเรา

เครื่องมันไม่รู้ว่าการที่คนเยอะแยะที่บอกว่าตัวเองชอบเครื่องประดับและมักจะแชร์ภาพเครื่องประดับ ทำไมจึงไปกดติดตามเพจ Cartier หรือ Tiffany & Co ซึ่งมีรูปภาพเครื่องประดับ มันไม่รู้ด้วยซ้ำว่า คำว่าเครื่องประดับ กับ รูปภาพเครื่องประดับ มันคืออะไร (การอธิบายข้อมูลเป็นแขนง Ontology ซึ่งแยกต่างหากออกไป ไม่ได้อยู่ใน Data Mining) แต่มันได้รู้ว่าสิ่งเหล่านี้มีความเกี่ยวข้องกัน และเป็นกลุ่มเดียวกันผ่านการ “นับ” จากการที่มนุษย์เราอธิบายความ

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

สำหรับนักคอมพิวเตอร์ ซึ่งต้องเป็นผู้ที่เข้าใจเบื้องหลังการทำงานของมัน (อีกล่ะ) ก็จะเกี่ยวข้องผูกพันกับ Data Mining ผ่านทฤษฎีพื้นฐาน เช่น Centroid Clustering, Hierarchical Clustering, Density Clustering, Association Rule Learning, Frequent Itemsets เป็นต้น

จริงๆยังมีแขนงอื่นของ AI อีกหลายตัวที่ไม่ได้อธิบาย บางตัวก็เป็นเรื่องใกล้ตัว เช่น Image Processing, Ontology หรือ Natural Language Processing

ในขณะที่บางตัวก็ไกลตัวไปเลย เช่น Bioinformatics, Evolutionary Computation หรือ Brain Informatics

ความเร็วของควอนตัมคอมพิวเตอร์

พวกเราคงจำข่าวที่ Google ทดสอบประสิทธิภาพของควอนตัมคอมพิวเตอร์ยี่ห้อ D-Wave X2 แล้วได้ผลว่ามันทำงานได้เร็วกว่าดิจิทัลคอมพิวเตอร์ทั่วไปเป็น 100 ล้านเท่ากันได้

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

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

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

ด้วยข้อเท็จจริงแบบนี้ จึงทำให้ดิจิทัลคอมพิวเตอร์ ต้องเผชิญกับปัญหาความซับซ้อนในการคำนวณหลายระดับ ทั้งระดับชั้น Polynomial, Exponential หรือ Factorial

ซึ่งโดยพื้นฐานแล้ว …

  • ปัญหาระดับชั้น Polynomial ก็ต้องแก้ในเวลา Polynomial
  • ปัญหาระดับชั้น Exponential ก็ต้องแก้ในเวลา Exponential
  • ปัญหาระดับชั้น Factorial ก็ต้องแก้ในเวลา Factorial

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

ซึ่งจะเห็นว่า ดิจิทัลคอมพิวเตอร์มันมีขีดจำกัดของความซับซ้อนในการคำนวณ มันเหมือนกับตัวละคร Iron Man ในภาพยนต์เรื่อง The Avengers ที่โดยพื้นฐานมีกำลังและความสามารถเหมือนมนุษย์ (แก้ปัญหาระดับชั้น Polynomial ในเวลา Polynomial) แต่พอใส่ชุดเกราะเพิ่มพลังก็กลายเป็นยอดมนุษย์ทันที (แก้ปัญหาระดับชั้น Exponential ในเวลา Polynomial หรือ แก้ปัญหาระดับชั้น Factorial ในเวลา Exponential)

เปรียบเทียบความเร็วของดิจิทัลคอมพิวเตอร์กับควอนตัมคอมพิวเตอร์
เปรียบเทียบความเร็วของดิจิทัลคอมพิวเตอร์กับควอนตัมคอมพิวเตอร์

แต่ในอีกด้านหนึ่ง ควอนตัมคอมพิวเตอร์กลับเหมือนกับตัวละคร Thor ในภาพยนต์เรื่อง The Avengers ที่โดยพื้นฐานก็เป็นเผ่าพันธุ์ต่างดาวสมมติเทพ ที่มีกำลังและความสามารถเหนือมนุษย์ตั้งแต่ต้น (แก้ปัญหาระดับชั้น Polynomial, Exponential และ Factorial ได้ในเวลา Polynomial แบบชิว ๆ)

การเป็นยอดมนุษย์ตั้งแต่เกิด มันต่างกับการเปลี่ยนมาเป็นยอดมนุษย์ภายหลังจากเกิดเยอะเลยครับ และการที่ควอนตัมคอมพิวเตอร์มันเร็วกว่าดิจิทัลคอมพิวเตอร์ ก็เพราะมันเร็วกว่าดิจิทัลคอมพิวเตอร์มาตั้งแต่เกิดนั่นเอง

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