ความแตกต่างระหว่างเวลารันไทม์และเวลาคอมไพล์

ผู้เขียน: John Webb
วันที่สร้าง: 15 สิงหาคม 2021
วันที่อัปเดต: 13 พฤศจิกายน 2024
Anonim
Understanding the C runtime memory model
วิดีโอ: Understanding the C runtime memory model

เนื้อหา

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

สร้างเวลา

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


รันไทม์

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

ความแตกต่าง

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


ข้อผิดพลาดเวลาคอมไพล์

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

ข้อผิดพลาดในการรันไทม์ที่หายนะ

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


ข้อผิดพลาดตรรกะรันไทม์

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