ภาษาใดบ้างที่สามารถแปลภาษาทัวริงของคอมไพเลอร์ได้?


12

ความคิดเห็นมากกว่าบน tex.SEทำให้ฉันประหลาดใจ คำสั่งเป็นหลัก:

ถ้าฉันสามารถเขียนคอมไพเลอร์สำหรับภาษา X ในภาษา X แล้ว X คือทัวริงสมบูรณ์

ในแง่ความสามารถในการคำนวณและภาษาที่เป็นทางการนี่คือ:

หากตัดสินใจL L T MและM Lแล้วF L = R EMLLTMMLFL=RE

นี่หมายถึงภาษาของทั่วเข้ารหัสเครื่องทัวริงและF Lหมายถึงชุดของฟังก์ชั่นคำนวณโดยเครื่องในLLTMFLL

มันเป็นเรื่องจริงเหรอ?


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

1
ฉันสร้างภาษาที่ลึกลับซึ่งเรียกว่า InterpretMe ซึ่งไม่สามารถทำอะไรได้นอกจากแสดงออกถึงการเป็นล่ามของตัวเองดังนั้นจึงไม่สมบูรณ์ทัวริง
การสะกดคำแบบไม่มีการควบคุม

M

MMLTM={MM is a Turing machine}FLL

MMLLM=LFL=RE

คำตอบ:


13

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

M2xxMLMFL


(ϕi)i0Q(x,y)pϕpyQ(p,y)Qx=ypϕp(y)=Q(p,y)ϕpp


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

1
cc(P)={xreturn P}P(x)=Pc

1
@immibis ฉัน (ล่าช้า) คิดว่าคุณพูดถูก ดูเหมือนว่าสิ่งที่ฉันหมายถึงการเขียนคือความหมายของทุกโปรแกรมเป็นเพียง "เอาท์พุทของคุณ" นั่นดูเหมือนจะใกล้เคียงกับสิ่งที่ฉันเขียนว่าอาจเป็นสิ่งที่ฉันตั้งใจจะพูดตั้งแต่แรก หรือบางทีฉันโชคดีมากที่การแก้ไขระยะทางจากคำตอบที่ไม่ถูกต้องไปยังคำตอบที่ถูกต้องนั้นเล็กมาก :-)
David Richerby

1
คำตอบตอนนี้บอกว่า "ไม่สนใจอินพุตและเอาต์พุตสำเนาของอินพุต" - คุณไม่สามารถทำทั้งสองอย่างได้
user253751

@immibis ฉันจะมาอีกครั้ง
David Richerby
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.