อ่าน 2 นาที
การเปลี่ยนแปลงโปรแกรม
การแปลงโปรแกรม คือการดำเนินการใดๆ ที่นำ โปรแกรมคอมพิวเตอร์ มาสร้างเป็นโปรแกรมอื่น ในหลายกรณี โปรแกรมที่แปลงแล้วจะต้องมี ความหมายเทียบเท่า กับโปรแกรมเดิม โดยสัมพันธ์กับ...
การเปลี่ยนแปลงโปรแกรม
การแปลงโปรแกรมคือการดำเนินการใดๆ ที่นำโปรแกรมคอมพิวเตอร์มาสร้างเป็นโปรแกรมอื่น ในหลายกรณี โปรแกรมที่แปลงแล้วจะต้องมีความหมายเทียบเท่ากับโปรแกรมเดิม โดยสัมพันธ์กับความหมายเชิงรูปธรรม ที่เฉพาะเจาะจง และในกรณีที่น้อยกว่า การแปลงจะส่งผลให้โปรแกรมมีความหมายแตกต่างจากโปรแกรมเดิมในลักษณะที่คาดการณ์ได้[ 1 ]
แม้ว่าการแปลงสามารถทำได้ด้วยตนเอง แต่การใช้ระบบแปลงโปรแกรมที่ใช้ข้อกำหนดของการแปลงที่จำเป็นมักจะใช้งานได้จริงมากกว่า การแปลงโปรแกรมอาจระบุเป็นขั้นตอนอัตโนมัติที่แก้ไขโครงสร้างข้อมูลคอมไพเลอร์ (เช่นต้นไม้ไวยากรณ์นามธรรม ) ที่แสดงถึงข้อความโปรแกรม หรืออาจระบุได้สะดวกกว่าโดยใช้รูปแบบหรือแม่แบบที่แสดงถึงส่วนของโค้ดต้นฉบับที่มีพารามิเตอร์[ 2 ]
ข้อกำหนดเชิงปฏิบัติสำหรับ ระบบการแปลง ซอร์สโค้ดคือ ระบบจะต้องสามารถประมวลผลโปรแกรมที่เขียนด้วยภาษาโปรแกรม ได้อย่างมีประสิทธิภาพ ซึ่งโดยปกติแล้วจะต้องมีการบูรณาการส่วนหน้าแบบเต็มรูปแบบสำหรับภาษาโปรแกรมที่สนใจ รวมถึงการแยกวิเคราะห์ซอร์สโค้ด การสร้างการแสดงโครงสร้างโค้ดภายในโปรแกรม ความหมายของสัญลักษณ์โปรแกรมการวิเคราะห์แบบคงที่ ที่เป็นประโยชน์ และการสร้างซอร์สโค้ดที่ถูกต้องขึ้นใหม่จากการแสดงโปรแกรมที่แปลงแล้ว ปัญหาของการสร้างและการบูรณาการส่วนหน้าที่เหมาะสมสำหรับภาษาทั่วไป ( Java , C++ , PHPเป็นต้น) อาจมีความยากลำบากเท่ากับการสร้างระบบการแปลงโปรแกรมเอง เนื่องจากความซับซ้อนของภาษาเหล่านั้น เพื่อให้มีประโยชน์อย่างกว้างขวาง ระบบการแปลงจะต้องสามารถจัดการกับภาษาโปรแกรมเป้าหมายได้หลายภาษา และต้องมีวิธีการบางอย่างในการระบุส่วนหน้าเฉพาะภาษาดังกล่าว[ 3 ] Spoon [ 4 ]เป็นตัวอย่างของ ไลบรารีการแปลงโปรแกรมเฉพาะ Javaที่จัดการกับความท้าทายนี้โดยการจัดเตรียมส่วนหน้าแบบเต็มรูปแบบสำหรับ Java โดยเปิดเผย API ที่ใช้ ASTสำหรับการใช้งานการวิเคราะห์และการแปลงซอร์สโค้ด Java
แนวคิดเรื่องการปรับปรุงโปรแกรม (program refinement ) เป็นการขยายความทั่วไปของความเท่าเทียมทางความหมาย กล่าวคือ โปรแกรมหนึ่งเป็นการปรับปรุงโปรแกรมอีกโปรแกรมหนึ่ง หากโปรแกรมใหม่นี้สิ้นสุดการทำงานในทุกสถานะเริ่มต้นที่โปรแกรมเดิมสิ้นสุดการทำงาน และสำหรับแต่ละสถานะดังกล่าว โปรแกรมใหม่นี้รับประกันว่าจะสิ้นสุดการทำงานในสถานะสุดท้ายที่เป็นไปได้ของโปรแกรมเดิม กล่าวอีกนัยหนึ่ง การปรับปรุงโปรแกรมมีความชัดเจนและแน่นอนกว่าโปรแกรมเดิม หากโปรแกรมสองโปรแกรมเป็นการปรับปรุงซึ่งกันและกัน โปรแกรมทั้งสองนั้นจะเทียบเท่ากัน
ดูเพิ่มเติม
- รายชื่อระบบการแปลงโปรแกรม
- เมตาโปรแกรมมิ่ง
- การสังเคราะห์โปรแกรม
- คอมไพเลอร์แบบซอร์สโค้ดต่อซอร์สโค้ด
- การสร้างซอร์สโค้ด
- ภาษาการแปลง
- ไวยากรณ์การแปลงรูป
- การคอมไพล์แบบไดนามิก
- ลดการทำงานเพื่อประหยัดพลังงาน
ลิงก์ภายนอก
- วิกิการเปลี่ยนแปลงโปรแกรม
- เอกสารเกี่ยวกับทฤษฎีและการปฏิบัติการเปลี่ยนแปลงโปรแกรม
- บรรณานุกรมเทคโนโลยีการเปลี่ยนแปลง
- ชุดเครื่องมือปรับปรุงโครงสร้างซอฟต์แวร์ DMS : ระบบแปลงโปรแกรมสำหรับ DSL และภาษาคอมพิวเตอร์สมัยใหม่ (C++, Java, ...) และภาษาคอมพิวเตอร์ดั้งเดิม (COBOL, RPG)
- Spoon : ไลบรารีสำหรับวิเคราะห์ แปลง แก้ไข และแปลงโค้ดต้นฉบับ Java โดยจะแยกวิเคราะห์ไฟล์ต้นฉบับเพื่อสร้าง AST ที่ออกแบบมาอย่างดี พร้อมด้วย API สำหรับการวิเคราะห์และการแปลงที่มีประสิทธิภาพ
- JavaParser : ไลบรารี JavaParser ช่วยให้คุณสร้างโครงสร้าง Abstract Syntax Tree (AST) สำหรับโค้ด Java ของคุณ โครงสร้าง AST นี้ช่วยให้คุณสามารถทำงานกับโค้ด Java ได้อย่างง่ายดายด้วยวิธีการเขียนโปรแกรม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การเปลี่ยนแปลงโปรแกรม
การแปลงโปรแกรม คือการดำเนินการใดๆ ที่นำ โปรแกรมคอมพิวเตอร์ มาสร้างเป็นโปรแกรมอื่น ในหลายกรณี โปรแกรมที่แปลงแล้วจะต้องมี ความหมายเทียบเท่า กับโปรแกรมเดิม โดยสัมพันธ์กับ...
ดูเพิ่มเติม
รายชื่อระบบการแปลงโปรแกรม เมตาโปรแกรมมิ่ง การสังเคราะห์โปรแกรม คอมไพเลอร์แบบซอร์สโค้ดต่อซอร์สโค้ด การสร้างซอร์สโค้ด ภาษาการแปลง ไวยากรณ์การแปลงรูป การคอมไพล์แบบไดนามิก ลดการทำงานเพื่อประหยัดพลังงาน
ลิงก์ภายนอก
วิกิการเปลี่ยนแปลงโปรแกรม เอกสารเกี่ยวกับทฤษฎีและการปฏิบัติการเปลี่ยนแปลงโปรแกรม บรรณานุกรมเทคโนโลยีการเปลี่ยนแปลง ชุดเครื่องมือปรับปรุงโครงสร้างซอฟต์แวร์ DMS : ระบบแปลงโปรแกรมสำหรับ DSL และภาษาคอมพิวเตอร์สมัยใหม่ (C++, Java, ...