เหตุใดกระบวนทัศน์ของผู้ทำลายล้างวัตถุในภาษาที่รวบรวมขยะจึงหายไปอย่างแพร่หลาย?
กำลังมองหาข้อมูลเชิงลึกเกี่ยวกับการตัดสินใจเกี่ยวกับการออกแบบภาษาที่รวบรวมขยะ บางทีผู้เชี่ยวชาญด้านภาษาสามารถสอนฉัน ฉันมาจากพื้นหลัง C ++ ดังนั้นพื้นที่นี้ทำให้ฉันงุนงง ดูเหมือนว่าภาษาที่รวบรวมขยะสมัยใหม่เกือบทั้งหมดที่มีการสนับสนุนวัตถุ OOPy เช่น Ruby, Javascript / ES6 / ES7, Actionscript, Lua และอื่น ๆ จะไม่ใช้ destructor / finalize paradigm Python ดูเหมือนจะเป็นคนเดียวที่มีclass __del__()วิธีการ ทำไมนี้ มีข้อ จำกัด ด้านการทำงาน / ทางทฤษฎีในภาษาที่มีการรวบรวมขยะอัตโนมัติซึ่งป้องกันการใช้งานที่มีประสิทธิภาพของวิธีการ destructor / จบบนวัตถุ? ฉันพบว่าภาษาเหล่านี้ไม่ได้พิจารณาถึงความทรงจำเป็นอย่างยิ่งเพราะเป็นเพียงการจัดการทรัพยากร เกี่ยวกับซ็อกเก็ตตัวจัดการไฟล์สถานะแอปพลิเคชัน หากปราศจากความสามารถในการใช้ตรรกะที่กำหนดเองเพื่อล้างทรัพยากรที่ไม่ใช่หน่วยความจำและสถานะในการสรุปวัตถุฉันต้องทำให้แอปพลิเคชั่นของฉันมีmyObject.destroy()สไตล์การโทรที่กำหนดเองวางตรรกะการล้างข้อมูลนอก "คลาส" ของฉัน การประยุกต์ใช้กับการรั่วไหลของทรัพยากรเนื่องจากข้อผิดพลาดของมนุษย์มากกว่าจะถูกจัดการโดย gc โดยอัตโนมัติ การตัดสินใจออกแบบภาษาที่นำไปสู่ภาษาเหล่านี้ไม่มีวิธีใดในการดำเนินการตรรกะที่กำหนดเองในการกำจัดวัตถุคืออะไร? ฉันต้องจินตนาการว่ามีเหตุผลที่ดี ฉันต้องการเข้าใจการตัดสินใจทางเทคนิคและทางทฤษฎีที่ทำให้ภาษาเหล่านี้ไม่สนับสนุนการทำลายวัตถุ / การสรุป ปรับปรุง: …