บุคคลที่ดีที่สุดที่จะถามคำถามนี้คือคนในคณะกรรมการบริหารของ JCPไม่ใช่พวกเรา อย่างไรก็ตามนั่นจะไม่ป้องกันฉันจากการมีส่วนร่วมในการเก็งกำไรว่าง
คำตอบของคำถามที่ว่า "ทำไมคุณลักษณะนี้จึงไม่ได้ถูกนำไปใช้" ทุกครั้งเป็นเพราะผลประโยชน์ไม่เกินต้นทุน
Eric Lippert (อดีตสมาชิกของทีม C #) กล่าวว่าเพื่อให้ผลิตภัณฑ์มีคุณลักษณะคุณลักษณะนั้นต้องเป็น:
- คิดในตอนแรก
- ต้องการ
- ได้รับการออกแบบ
- ที่ระบุ
- การดำเนินการ
- การทดสอบ
- เอกสาร
- ส่งให้กับลูกค้า
กล่าวอีกนัยหนึ่งจะต้องมีสิ่งสำคัญหลายอย่างที่จะต้องเกิดขึ้นก่อนที่จะสามารถรับรู้คุณลักษณะของภาษาโปรแกรมใหม่ได้ ค่าใช้จ่ายมีขนาดใหญ่กว่าที่คุณคิด
ในทีม C # ทุกคำขอคุณลักษณะใหม่จะเริ่มต้นด้วยคะแนนลบ 100 จากนั้นทีมจะประเมินผลประโยชน์และค่าใช้จ่ายการเพิ่มคะแนนเพื่อประโยชน์และการลบคะแนนสำหรับค่าใช้จ่าย หากคะแนนไม่เกินศูนย์คุณลักษณะที่เสนอจะถูกยกเลิกโดยสรุป กล่าวอีกนัยหนึ่งคุณลักษณะใหม่จะต้องให้ประโยชน์ที่น่าสนใจ
แต่ตัวดำเนินการ Elvisทำให้มันกลายเป็น C # แล้วทำไมมันไม่ทำให้เป็น Java?
แม้จะมีความคล้ายคลึงกันอย่างชัดเจนJava และ C # มีปรัชญาภาษาที่แตกต่างกันอย่างมีนัยสำคัญ สิ่งนี้พิสูจน์ได้จากความจริงที่ว่าโปรแกรมระดับองค์กรของ Java มีแนวโน้มที่จะมีขนาดใหญ่และมีโครงสร้างชุดของสถาปัตยกรรม ความกะทัดรัดและการแสดงออกทางภาษานั้นเสียสละบนแท่นบูชาของพิธีและความง่ายในการเขียนโค้ด รูปแบบสถาปัตยกรรมซอฟต์แวร์ที่รู้จักกันดีซึ่งทุกคนในทีมพัฒนาสามารถรับรู้ได้นั้นเป็นที่ต้องการมากกว่าความสะดวกด้านภาษา
พิจารณาการแลกเปลี่ยน Reddit นี้ :
ตัวดำเนินการ Elvis ได้รับการเสนอสำหรับ Java ทุกรุ่นตั้งแต่ 7 และถูกปฏิเสธทุกครั้ง ภาษาที่แตกต่างกันตกอยู่ในจุดที่แตกต่างกันตามสเปกตรัมจาก "บริสุทธิ์" ถึง "ในทางปฏิบัติ" และภาษาที่ใช้งานผู้ดำเนินการ Elvis นั้นมีแนวโน้มที่จะไปสู่จุดสิ้นสุดของสเปกตรัมมากกว่า Java
หากคุณมีทีมงานผู้เชี่ยวชาญด้าน Java มากกว่า 15 ปีที่เขียนระบบการประมวลผลแบ็กเอนด์ที่กระจายกันอย่างมากพร้อมกันในบางประเภทคุณอาจต้องการสถาปัตยกรรมที่เข้มงวดมากขึ้น
อย่างไรก็ตามหากคุณมีทีมระดับต้นถึงระดับกลางครึ่งหนึ่งย้ายจาก Visual Basic และคุณให้พวกเขาเขียนแอปเว็บ ASP.NET ที่ส่วนใหญ่จะใช้งาน CRUD ในการดำเนินการ ... อาจเป็นเพราะ overkill ในการออกแบบเครือ ของAbstractFactoryFactory
คลาสที่แยกออกจากข้อเท็จจริงที่ว่าคุณไม่สามารถควบคุมได้ว่าคอลัมน์ใดเป็นโมฆะในฐานข้อมูลดั้งเดิมที่คุณต้องใช้
ความแตกต่างที่ลึกซึ้งในปรัชญาภาษานี้ไม่เพียงขยายไปถึงวิธีการใช้ภาษาเท่านั้น แต่ยังรวมถึงวิธีการออกแบบภาษาด้วยตนเอง C # เป็นภาษาเผด็จการใจดี ที่จะได้รับคุณสมบัติใหม่ที่เป็น C # คุณเท่านั้นจริงๆต้องโน้มน้าวให้คนคนหนึ่ง: Anders Hejlsberg
Java ใช้แนวทางอนุรักษ์นิยมมากกว่า เพื่อให้ได้คุณสมบัติใหม่ใน Java นั้นจะต้องได้รับฉันทามติจากกลุ่มผู้ค้ารายใหญ่เช่น Oracle, IBM, HP, Fujitsu และ Red Hat เห็นได้ชัดว่ากระบวนการนั้นจะช้าลงและนำเสนอแถบที่สูงขึ้นสำหรับคุณสมบัติภาษาใหม่
คำถาม "ทำไมฟีเจอร์ x ถึงไม่ได้ใช้งาน ... " รวมคำเหล่านั้นไว้โดยปริยายเสมอ "... ถ้าเห็นได้ชัดว่าเป็นความคิดที่ดี?" ตามที่ฉันได้แสดงให้เห็นอย่างเพียงพอที่นี่ตัวเลือกไม่เคยง่ายขนาดนั้น