Basic Computer Language (LV.1)
พื้นฐานก่อนเรียนภาษาคอมพิวเตอร์
Last updated
Was this helpful?
พื้นฐานก่อนเรียนภาษาคอมพิวเตอร์
Last updated
Was this helpful?
คอมพิวเตอร์ถูกออกแบบมาให้ทำงานบนระบบเลขฐานสอง ซึ่งเป็นเลขฐานที่เล็กที่สุด เพื่อง่ายต่อการออกแบบวงจรไฟฟ้า เช่น มีแรงดันไฟฟ้า = 1 ไม่มีแรงดันไฟฟ้า = 0
เลขฐานสองเพียงหลักเดียว เราเรียกว่า Bit แต่เลขฐานสองเพียงหลักเดียว ไม่เพียงพอต่อการแทนที่ตัวอักษรที่เราใช้กันได้ทั้งหมด จึงมีการใช้เลขฐานสองหนึ่งชุด ซึ่งมีจำนวน 8 หลัก มาแทนแต่ละตัวอักษร ความเป็นไปได้ทั้งหมด 256 แบบ สามารถแทนที่อักษร 0-9, a-z, A-Z และเครื่องหมายอื่นๆ ได้เพียงพอ เราเรียกเลขฐานสองจำนวน 1 ชุดนี้ เราเรียกว่า Byte
คอมพิวเตอร์ทำงานด้วยเลขฐานสอง จึงต้องมีการแปลชุดคำสั่งที่เราเขียนเป็นภาษาที่คอมพิวเตอร์เข้าใจ (Computer Language) ก่อน ภาษาที่เราเขียนอาจจะเป็น BASIC, PASCAL, C/C++, Ada, COBOL, Java หรืออื่นๆ แต่ละภาษาอาจจะมีรูปแบบการแปลที่แตกต่างกัน ซึ่งรูปแบบการแปล แบ่งได้เป็น
Interpreter - มีการแปลทีละคำสั่ง และคอมพิวเตอร์นำไปทำงานทันที
Compiler - จะแปลทุกคำสั่งให้เสร็จก่อน เก็บเป็นไฟล์ แล้วจึงนำไฟล์ไปทำงาน
พฤติกรรมดังกล่าวทำให้ Compiler ใช้เวลาในการแปลคำสั่งนานกว่า เพราะต้องแปลให้เสร็จทั้งหมดก่อน จึงจะนำไปทำงานได้ แต่ในขณะที่โปรแกรมทำงาน Compiler จะทำงานได้ไวกว่า เพราะไม่ต้องนำไปแปลอีกต่อไป ในเชิงความเร็วแล้ว จึงสรุปได้ว่า Compiler มีความเร็วมากกว่า Interpreter
จุดเด่นหนึ่งที่ Interpreter เหนือกว่า Compiler คือการนำโปรแกรมไปใช้บนระบบที่มี CPU Architecture ที่ต่างกันออกไป เพราะโปรแกรมแบบ Compiler นั้น เมื่อแปลแล้ว ไฟล์คำสั่งจะผูกติดกับ CPU Architecture ของระบบที่ใช้แปล ทำให้ไม่สามารถนำไฟล์ที่แปลแล้ว ไปทำงานบนระบบที่ใช้ CPU Architecture อื่นได้ แต่ Interpreter จะแปลทีละคำสั่งในตอนใช้งาน จึงทำให้ไม่ผูกติดกับ CPU Architecture ทำให้เริ่มการทำงานได้ไวกว่า
ในด้านการแสดงข้อผิดพลาดของโปรแกรมนั้น Compiler จะแปลทั้งโปรแกรมจนหมดก่อน แล้วจึงแสดงข้อผิดพลาดทั้งหมดออกมา ในขณะที่ Interpreter จะทำงานทีละบรรทัด และหยุดทันทีที่เจอบรรทัดที่ผิดพลาด
เนื่องจากทั้ง Compiler และ Interpreter ต่างก็มีจุดเด่นในตัวเอง เพื่อลดจุดด้อยในแบบต่างๆ จึงเกิดรูปแบบการแปลภาษาแบบใหม่ ที่เรียกว่า Just-in-time compilation
เป็นการแปลภาษาที่คล้าย Interpreter โดยจะอ่านโปรแกรมมาแปลก่อนเริ่มทำงาน โดยจะแปลเป็นภาษาซึ่งเรียกว่า Bytecode ก่อน และ Bytecode จะถูก Runtime Engine บนระบบนำไปแปลเป็น Machine Language และทำงานตาม CPU Architecture ของตนเอง หากมีการทำงานที่เรียกส่วนเดิมซ้ำ เช่นเรียก function เดิมซ้ำ (โดยอาจมี argument ที่ต่างออกไป) โปรแกรมจะใช้ Bytecode ที่แปลไว้แล้ว ทำให้ขั้นตอนการแปลลดลง จึงไวกว่า Interpreter
ตัวอย่างของ Runtime ที่ใช้ JIT คือ
JVM - รองรับภาษา Java และ JavaScript
CLR - รองรับพวก .NET
Node JS - JavaScript
PHP8