แนวคิดในคำจำกัดความ ABC
เบ็ดเตล็ด / / July 04, 2021
โดย Guillem Alsina González ในเดือนกันยายน 2017
เราจะเข้ากับคนที่เราไม่มีภาษาเหมือนกันได้อย่างไร? ผ่านนักแปล ฟังก์ชันการแปลนี้ทำหน้าที่ a คอมไพเลอร์ เปลี่ยนเป็น รหัส ซอร์สโค้ดปฏิบัติการที่เขียนโดยโปรแกรมเมอร์
การคอมไพล์เป็นกระบวนการที่โปรแกรมเขียนด้วยภาษาระดับสูงคือ แปลเป็นรหัสเครื่องที่ใช้โดยสถาปัตยกรรมคอมพิวเตอร์บางตัวสำหรับการดำเนินการ โดยตรง.
ดังนั้น ตามคำอธิบายที่เราเพิ่งเสนอไป ระบบนี้ต้องการตัวเลือก a สถาปัตยกรรม ปลายทาง ซึ่งอาจแตกต่างกันไปในแต่ละกรณี และจะบังคับให้เราคอมไพล์แยกกันสำหรับสถาปัตยกรรมต่างๆ ที่เราต้องการให้โปรแกรมทำงาน
ตัวอย่างเช่น เราสามารถพัฒนาโปรแกรมบางอย่างสำหรับสถาปัตยกรรม 32 บิต x86, 64 บิต x86 PowerPC หรือ ARM ยังแยกความแตกต่างระหว่าง 32 และ 64 บิต ขึ้นอยู่กับประเภทของอุปกรณ์ที่เราต้องการ เรียกใช้
นอกจากนี้ เราต้องคำนึงถึงระบบปฏิบัติการที่แตกต่างกันด้วย แม้ว่าเราจะทำงานบนแพลตฟอร์มเดียวกันก็ตาม ฮาร์ดแวร์เนื่องจากแต่ละคนมีวิธีการโต้ตอบกับเครื่องทางกายภาพต่างกัน
ลองใช้แพลตฟอร์ม x86 64 บิตเป็นตัวอย่าง เราอาจต้องการที่จะรวบรวมสำหรับ Windows, GNU / Linux หรือ macOS หรือสำหรับแต่ละรายการ ซึ่งหมายถึงกระบวนการรวบรวมสามขั้นตอนที่แยกจากกัน
บางครั้งสิ่งนี้บังคับให้เราปรับแต่งซอร์สโค้ดเล็กน้อย โดยมักจะเก็บสามเวอร์ชันแยกกัน (หรือมากกว่านั้น ขึ้นอยู่กับ กรณี) เพื่อให้พวกเขาสามารถโต้ตอบกับลักษณะเฉพาะและความแตกต่างของแพลตฟอร์มปลายทางได้อย่างถูกต้อง
กระบวนการคอมไพล์เป็นไปตามชุดของขั้นตอน เช่น การตรวจจับข้อผิดพลาดทางไวยากรณ์ในซอร์สโค้ด จากนั้น a ประมวลผลล่วงหน้าเพื่อให้ทราบทรัพยากรที่โปรแกรมต้องการ และสุดท้ายเชื่อมโยงกับไลบรารีและทรัพยากรที่จำเป็นสำหรับ necessary การดำเนินการ
ด้วยวิธีนี้ a ไฟล์ ปฏิบัติการที่มีทั้งหมด ทรัพยากร จำเป็นสำหรับการดำเนินการ และคำแนะนำที่จำเป็นสำหรับการเข้าถึงทรัพยากรภายนอก เช่น ไลบรารีรหัสที่ใช้ร่วมกัน (แบ่งปัน).
กระบวนการคอมไพล์เสร็จสิ้นด้วยเครื่องมือหรือเครื่องมือเฉพาะ (คอมไพเลอร์) แม้ว่าจะเป็นเรื่องปกติที่สิ่งนี้จะถูกรวมเข้ากับสภาพแวดล้อมการพัฒนา (IDE) ดังนั้นจึงอำนวยความสะดวก การใช้งาน
แต่ละภาษาของ การเขียนโปรแกรม มีคอมไพเลอร์ของตัวเอง แม้ว่าจะเป็นเวลานาน คอมไพเลอร์ที่สอดคล้องกับภาษาและสภาพแวดล้อมก็สามารถสร้างไฟล์ปฏิบัติการสำหรับแพลตฟอร์มต่างๆ ได้ ซอฟต์แวร์ แตกต่างกัน
มีตัวเลือกอื่นสำหรับกระบวนการสร้างหรือไม่? ใช่และเป็นภาษาที่ตีความ
ภาษาที่ตีความคือภาษาที่แปลตอนรันไทม์และไม่ได้คอมไพล์
ดังนั้นซอร์สโค้ดของพวกเขาจึงพร้อมใช้งานเสมอ และสิ่งที่พวกเขาต้องการก็คือใน ระบบปฏิบัติการ ที่พวกเขาถูกประหารชีวิตมีล่าม
โดยหลีกเลี่ยงกระบวนการคอมไพล์ หากล่ามพร้อมใช้งานสำหรับหลายแพลตฟอร์ม จะสามารถเรียกใช้โปรแกรมได้โดยตรงบนแต่ละรายการ โดยปกติแล้วจะไม่มีการเปลี่ยนแปลง
อื่นๆ โฟกัส ทางเลือก ซึ่งอยู่กึ่งกลางระหว่างภาษาที่คอมไพล์และที่แปลแล้ว คือภาษาที่ต้องใช้เครื่องเสมือนเพื่อทำงาน เช่น Java
ภาษาโปรแกรมที่ทำงานบนเลเยอร์เวอร์ชวลไลเซชัน (เครื่องเสมือน) ต้องการกระบวนการระดับกลางที่คล้ายกับของ การคอมไพล์ แต่นั่นส่งผลให้โค้ดไม่สามารถสั่งการได้โดยตรง แม้ว่าจะมีการปรับให้เหมาะสมมากกว่าที่รันโดยภาษา ตีความ
ในกรณีเหล่านี้ มันต้องการกระบวนการที่คล้ายกับการคอมไพล์ แต่นั่นให้ผลลัพธ์ที่ต่างออกไป และยังคงต้องการ ในกรณีใด ๆ การติดตั้ง ของ รันไทม์ ในระบบปฏิบัติการที่เราต้องการเรียกใช้โปรแกรมของเรา
ภาพถ่าย: Fotolia - Alexander Pokusay / Onot
หัวข้อในการรวบรวม