ฉันสนใจในการออกแบบภาษาและโดยทั่วไปฉันสามารถให้เหตุผลเกี่ยวกับคุณสมบัติที่เป็นที่รู้จักกันอย่างแพร่หลาย (เช่นการสืบทอดความหลากหลายรูปแบบผู้ได้รับมอบหมายแลมบ์ดาจับภาพการเก็บขยะยกเว้นข้อตกลงทั่วไปความแปรปรวนการสะท้อนและอื่น ๆ ) ภาษาเฉพาะวิธีที่พวกเขาสามารถนำไปใช้ได้ข้อ จำกัด ฯลฯ
ในช่วงไม่กี่เดือนที่ผ่านมาฉันเริ่มอ่านเกี่ยวกับ Rust ซึ่งมีระบบความเป็นเจ้าของที่ทำให้มั่นใจในความปลอดภัยของหน่วยความจำและการจัดการทรัพยากรที่กำหนดขึ้นโดยบังคับให้อายุการใช้งานของวัตถุนั้นสามารถตรวจสอบได้ จากมุมมองของผู้ใช้ธรรมดาของภาษาฉันสามารถรับระบบได้ทันที
จากมุมมองของนักออกแบบภาษาฉันต้องใช้เวลาสักพักกว่าจะรู้ว่าทำไมสิ่งต่าง ๆ ใน Rust จึงเป็นแบบที่พวกเขาเป็น ฉันไม่สามารถเข้าใจเหตุผลที่อยู่เบื้องหลังข้อ จำกัด ของระบบการเป็นเจ้าของได้ทันทีจนกระทั่งฉันบังคับตัวเองให้มาพร้อมกับกรณีที่จะละเมิดความสมบูรณ์ของระบบถ้ามันไม่มีแง่มุมเหล่านั้น
คำถามหลักของฉันไม่มีส่วนเกี่ยวข้องกับ Rust และความเป็นเจ้าของโดยเฉพาะ - แต่คุณสามารถใช้เป็นตัวอย่างในความเห็น / คำตอบของคุณได้หากคุณต้องการ
เมื่อนักออกแบบภาษาออกแบบคุณลักษณะใหม่พวกเขาใช้วิธีการหรือกระบวนการใดในการตัดสินใจว่าคุณลักษณะดังกล่าวทำงานได้อย่างถูกต้องหรือไม่
ด้วย "ใหม่" ฉันหมายความว่าไม่ใช่สิ่งที่ได้รับการทดสอบในภาษาที่มีอยู่แล้ว (และทำให้นักออกแบบคนอื่น ๆ ได้ทำงานเป็นจำนวนมาก) เมื่อ "ทำงานอย่างถูกต้อง" ฉันหมายถึงฟีเจอร์นี้จะช่วยแก้ปัญหาที่ตั้งใจไว้ได้อย่างถูกต้อง ด้วย "กระสุนที่มีเหตุผลพอสมควร" ฉันหมายความว่าไม่มีการเขียนรหัสในภาษาหรือชุดย่อยเฉพาะของภาษา (เช่นชุดย่อยที่ไม่มีรหัส "ไม่ปลอดภัย") ที่จะละเมิดความสมบูรณ์ของคุณลักษณะ
มันเป็นกระบวนการทดลองและข้อผิดพลาดในแง่ที่ว่าคุณได้มาพร้อมกับรูปแบบที่เรียบง่ายของคุณสมบัติแล้วลองหาวิธีที่จะละเมิดมันแล้วทำการแก้ไขหากคุณประสบความสำเร็จในการทำซ้ำแล้วซ้ำอีก? และเมื่อคุณไม่สามารถนึกถึงการละเมิดอื่น ๆ ที่เป็นไปได้คุณหวังว่าจะไม่มีอะไรเหลือและเรียกมันว่าวันละ
หรือมีวิธีที่เป็นทางการในการพิสูจน์จริง(ในแง่ของคณิตศาสตร์) ที่คุณสมบัติของคุณใช้งานได้และจากนั้นใช้การพิสูจน์นั้นเพื่อให้มั่นใจว่าได้รับคุณสมบัติที่ถูกต้อง (หรือขวาสุด) จากจุดเริ่มต้น?
(ฉันควรพูดถึงว่าฉันมีพื้นฐานด้านวิศวกรรมไม่ใช่วิทยาการคอมพิวเตอร์ดังนั้นหากฉันขาดอะไรบางอย่างที่เห็นได้ชัดสำหรับคน CS โปรดอย่าลังเลที่จะชี้ให้เห็น)