การเตรียมซอฟต์แวณ์สำหรับระบบคออมพิวเตอร์
ระบบคอมพิวเตอร์นั้นจะทำงานอย่างมีขั้นตอน การเรียนรู้ในบทนี้จะช่วยให้นักเขียนโปรแกรมมือใหม่เห็นภาพก่อนว่า ซอฟต์แวร์กับฮาร์ดแวร์ มันทำงานร่วมกันอย่างไร ตัวแปรภาษาเข้ามามีบทบาทอย่างไร ซึ่งจะอธิบายอย่างละเอียดให้เห็นถึงขั้นตอนต่างๆและหลังจากจบบทนี้แล้ว เราจะได้เริ่มเรียนรู้ขั้นตอนการเขียนโปรแกรมกันจริงๆ ในบท ถัดไป
ขั้นตอนการประมวลผลคำสั่งของคอมพิวเตอร์
จากที่กล่าวมาแล้วว่า ระบบคอมพิวเตอร์ประกอบไปด้วย 2 ส่วนคือ ฮาร์ดแวร์และซอฟต์แวร์ ถ้าปราศจากซอฟต์แวร์แล้ว คอมพิวเตอร์จะไม่สามารถทำงานอะไรได้เลย เปรียบเสมือนกับรถยนต์ที่ไร้คนขับนั่นเอง
ในขั้นตอนเริ่มต้น ซอฟต์แวร์จะถูกเขียนขึ้นมาด้วยภาษาใดภาษาหนึ่งก่อน เช่น ภาษาซี/ซีพลัสพลัส (C/C++), จาวา (Java), พีเอชพี (PHP) หรือไพธอน (Python) เป็นต้น จากนั้นโปรแกรมดังกล่าวจะ ถูกแปลงด้วยซอฟต์แวร์อีกชนิดหนึ่งเรียกว่า ”ซอฟต์แวร์แปลภาษา หรือคอมไพเลอร์ (Compiler)“ ให้กลายเป็น ”รหัสเครื่อง (Machine Code)“ ซึ่งก็คือ ภาษาเครื่องที่มีลักษณะเป็นรหัสเลขฐานสองทั้งหมด ซึ่งคอมพิวเตอร์สามารถทำความเข้าใจ และทำงานตามที่ผู้เขียนโปรแกรมต้องการได้ ตัวอย่างรหัสเลขฐานสอง เช่น 0011010101001 เป็นต้น
จากรูปสามารถอธิบายขั้นตอนการทำงานได้ดังนี้
1.ซอฟต์แวร์จะถูกจัดเก็บอยู่ในหน่อยความจำถาวร เช่น ฮาร์ดิสก์ เมื่อผู้ใช้งานดับเบิลคลิกไอคอน (Icon) บนเดสก์ทอป (Desktop) ในการะบบปฏิบัติการเพื่อรันโปรแกรมใดๆ เช่น Google Chrome เป็นต้น
2.โปรแกรมดังกล่าวจะถูกถ่ายโอนย้ายจากหน่วยเก็บข้อมูลถาวรมายังหน่วยความจำหลัก (RAM)ของคอมพิวเตอร์
3.ต่อจากนั้นซีพียูจะอ่านข้อมูลคำสั่งจากแรมเข้ามาทำงานในซีพียู
4.เมื่อซีพียูแปลความความหมายของคำสั่ง หรือเรียกสั้นๆ ว่า "ประมวลผล" เรียบร้อยแล้ว
5.ซีพียูจะสร้างคำสั่งที่เหมาะสมในการควบคุมคอมพิวเตอร์ส่วนอื่นๆ ต่อไป
คอมไพเลอร์และอินเตอร์เน็ตพรีเตอร์ต่างกันอย่างไร
โปรแกรมหรือซอฟต์แวร์ที่พร้อมจะใช้งานได้นั้น จะต้องถูกคอมไพล์ด้วยตัวแปลภาษาเสียก่อน จึงจะสามารถทำงานกับคอมพิวเตอร์ได้
สำหรับการแปลภาษาด้วยตัวแปรภาษาจะมี 2 ลักษณะคือ การแปลโปรแกรมทั้งหมดในครั้งเดียว เรียกว่า "คอมไพเลอร์ (Compiler)" และ แปลทีละบรรทัดขณะทำงานเรียกว่า "อินเตอร์พรีเตอร์ (Interpreter)" ซึ่งแต่ละแบบจะมีลักษณะการทำงานดังนี้
ตัวแปลภาษาชนิดคอมไพเลอร์
สำหรับภาษาคอมพิวเตอร์ที่ใช้วิธีแปลภาษาแบบคอมไพเลอร์ (Compiler) เช่น ภาษาซี/ซีพลัส พลัส/ซีชาร์ป (C#), วิชวลเบสิก(Visual Basic) และสวิฟท์ (Swift) เป็นต้น โดยข้อดีของวิธีการ นี้คือ สามารถแจ้งเตือนข้อผิดพลาดที่ซ่อนอยู่ในโปรแกรมได้ระดับหนึ่ง ซึ่งช่วยลดความผิดพลาดเมื่อนำโปรแกรมไปทำงาน และโปรแกรมจะทำงานได้เร็วกว่าแบบอินเตอร์พรีเตอร์หลายเท่าตัว ส่วน ข้อเสียคือ ภาษาที่ใช้คอมไพเลอร์ส่วนใหญ่จะมีข้อกำหนดทางด้านภาษามาก ทำให้เรียนรู้ได้ช้ากว่าภาษาในกลุ่มอินเตอร์พรีเตอร์
การแปลภาษาชนิดคอมไพเลอร์จะแปลโปรแกรมทั้งหมดในครั้งเดียว ซึ่งมีขั้นตอนดังนี้
1.โปรแกรมเมอร์ดขียนโปรแกรมเพื่อแก้ปัญหาใดปัญหาหนึ่งเรียกว่า "ซอร์สโค้ด"(Source Code)
2.จากนั้นโปรแกรมเมอร์จะแปลซอร์สโค้ดดังกล่าวด้วยคอมไพเลอร์ ถ้าโปรแกรมดังกล่าวเรียกใช้ไลบรารี(Library) คอมไพเลอร์ก็จะนำ เอาไลบรารีดังกล่าวมาแปลร่วมกับซอร์สโค้ดด้วย
3.หลังจากคอมไพล์และไม่มีข้อผิดพลาดใดๆ เกิดขึ้น จะได้แฟ้มที่ชื่อว่า เอ็กซิคิวเทเบิล(Executable File) ที่มีนามสกุลเป็น.exe หรือ .com (หรือ .out ในนุกซ์)
4.ไฟล์ดังกล่าวจะประกอบไปด้วยรหัสเลขฐานสองเท่านั้นเรียกว่า "รหัสเครื่อง"(Machine Code)
5.ไฟล์ดังกล่าว(โปรแกรม)พร้อมที่จะทำงานได้ทันที
ตัวแปลภาษาอินเตอร์พรีเตอร์
อินเตอร์พรีเตอร์ (Interpreter) ตัวแปลภาษาชนิดนี้จะแปลภาษาทีละบรรทัดๆ ในขณะทำงาน ซึ่งแตกต่างจากชนิดคอมไพเลอร์ที่ต้องแปล ความหมายทั้งหมดภายในครั้งเดียว โดยวิธีการแบบอินเตอร์พรีเตอร์มีลักษณะการทำงานดังนี้
1.โปรแกรมเมอร์เขียนโปรแกรมเรียกว่า "ซอร์สโค้ด"
2.จากนั้นซอร์สโค้ดดังกล่าวจะถูกแปลภาษา (Interpret) ด้วยอินเตอร์เน็ตพรีเตอร์ (Interpreter) โดยแปลซอร์สโค้ดทีละบรรทัด ถ้าโปรแกรมดังกล่าวเรียกใช้ไลบรารีดังกล่าวเรียกใช้ งานไลบรารีก็จะถูกแปลร่วมกันในขั้นตอนนี้
3.จากนั้นซอร์สโค้ดแต่ละบรรทัดจะถูกแปลงเป็นรหัสเครื่อง (Machine Code)
4.และรหัสดังกล่าวจะสั่งให้คอมพิวเตอร์ทำงานตามที่โปรแกรมเมอร์ต้องการ
การทำงานจะซ้ำในรหว่างขั้นตอนที่ 2 ถึง 4 ไปเรื่อยๆ จนกว่าคำสั่งในโปรแกรมจะหมด