2
เป็นไปได้ไหมที่จะสร้างล่ามแบบ "bootstrapped" โดยไม่ขึ้นอยู่กับล่ามดั้งเดิม?
ตามที่Wikipedia คำว่า "bootstrapping" ในบริบทของการเขียนคอมไพเลอร์หมายถึงสิ่งนี้ : ในวิทยาการคอมพิวเตอร์ bootstrapping เป็นกระบวนการของการเขียนคอมไพเลอร์ (หรือแอสเซมเบลอร์) ในภาษาการเขียนโปรแกรมต้นฉบับที่ตั้งใจจะคอมไพล์ การใช้เทคนิคนี้นำไปสู่การคอมไพล์ด้วยตนเองที่โฮสต์ และฉันสามารถเข้าใจวิธีการที่จะทำงาน อย่างไรก็ตามเรื่องราวดูเหมือนจะแตกต่างกันเล็กน้อยสำหรับล่าม ตอนนี้แน่นอนมันเป็นไปได้ที่จะเขียนล่ามด้วยตนเอง นั่นไม่ใช่สิ่งที่ฉันขอ สิ่งที่ฉันขอจริงคือมันเป็นไปได้ที่จะทำให้ตัวเองเป็นเจ้าภาพอิสระล่ามของเดิมล่ามแรก เพื่ออธิบายสิ่งที่ฉันหมายถึงพิจารณาตัวอย่างนี้: คุณเขียนรุ่นล่ามครั้งแรกของคุณในภาษาของXและล่ามเป็นภาษาใหม่ที่คุณกำลังสร้างที่เรียกว่าY คุณใช้คอมไพเลอร์ภาษาXเพื่อสร้างไฟล์ปฏิบัติการ ขณะนี้คุณสามารถตีความไฟล์ที่เขียนในภาษาของคุณใหม่Yใช้ล่ามที่เขียนในภาษาX ทีนี้เท่าที่ฉันเข้าใจเพื่อที่จะสามารถ "บู๊ตสแตรป" ล่ามที่คุณเขียนเป็นภาษาXคุณต้องเขียนล่ามเป็นภาษาYอีกครั้ง แต่นี่คือการจับ: แม้ว่าคุณจะเขียนล่ามทั้งในภาษาYคุณยังจะต้องเดิมล่ามที่คุณเขียนในภาษาX เนื่องจากการเรียกใช้ล่ามในภาษาYคุณจะต้องตีความไฟล์ต้นฉบับ แต่สิ่งที่จะแปลความหมายไฟล์ต้นฉบับ? แน่นอนมันไม่มีอะไรเลยดังนั้นคุณถูกบังคับให้ต้องใช้ล่ามคนแรก ไม่ว่าคุณจะมีล่ามใหม่กี่คนในภาษาYคุณจะต้องใช้ล่ามตัวแรกที่เขียนด้วยXเพื่อตีความล่ามต่อไป สิ่งนี้ดูเหมือนจะเป็นปัญหาเพียงเพราะธรรมชาติของล่าม อย่างไรก็ตามในด้านพลิกนี้บทความวิกิพีเดียล่ามจริงพูดเกี่ยวกับล่ามตัวเองโฮสติ้ง นี่เป็นข้อความที่ตัดตอนมาเล็กน้อยซึ่งมีความเกี่ยวข้อง: Self-interpreter เป็นล่ามภาษาโปรแกรมที่เขียนในภาษาโปรแกรมซึ่งสามารถตีความได้เอง ตัวอย่างคือล่ามพื้นฐานที่เขียนในภาษาเบสิก ตัวแปลภาษาเองเกี่ยวข้องกับคอมไพเลอร์ที่โฮสต์ด้วยตนเอง หากไม่มีคอมไพเลอร์สำหรับภาษาที่จะตีความการสร้างตัวแปลภาษาเองจำเป็นต้องมีการใช้งานภาษาในภาษาโฮสต์ (ซึ่งอาจเป็นภาษาโปรแกรมหรือแอสเซมเบลอร์อื่น) ด้วยการมีล่ามคนแรกเช่นนี้ระบบจะถูกบูตและรุ่นใหม่ของล่ามสามารถพัฒนาในภาษาของตัวเอง มันยังไม่ชัดเจนสำหรับฉันว่าจะทำอย่างไร ดูเหมือนว่าไม่ว่าอะไรก็ตามคุณจะถูกบังคับให้ใช้ล่ามรุ่นแรกที่เขียนด้วยภาษาโฮสต์ ตอนนี้บทความดังกล่าวข้างต้นเชื่อมโยงไปยังบทความอื่นในวิกิพีเดียซึ่งให้ตัวอย่างบางส่วนของควรล่ามตัวเองโฮสติ้ง เมื่อตรวจสอบอย่างใกล้ชิด แต่ดูเหมือนว่า "ล่าม" เป็นส่วนสำคัญของล่ามที่จัดการโฮสต์ด้วยตนเอง (โดยเฉพาะอย่างยิ่งที่พบบ่อยเช่น PyPy หรือ Rubinius) …