/ BasicKnowledge

เติมวิญญาณ ปลุกพลังซอร์สโค้ด แปลงโค้ดเป็นโปรแกรม

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


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

แปลงโค้ดเป็นโปรแกรม

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

คำสั่งภาษา X คำสั่งภาษาคอมพิวเตอร์
print 00100010
+ 00000001
- 00000010
* 00000100

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

สถานการณ์ A

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

สถานการณ์ B

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

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

คอมไพเลอร์ – Compiler

"ผมจะขอดูงานทั้งหมดของคุณแล้วแปลทีเดียว หลังจากนั้นงานแปลก็เป็นของคุณ"

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

อินเทอร์พรีเตอร์ – Interpreter

"ผมจะเป็นล่ามให้คุณ และติดตามไปทุกที่ ตราบใดที่คุณยังจะจ้างผม"

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

ข้อดีข้อเสียของแต่ละวิธี

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

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

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