โปรดพิจารณาที่ความต้องการของฮาร์เปอร์สอนเบื้องต้น CS หลักสูตรระดับมีความแตกต่างกันมากจากความต้องการของผู้ที่โครงการชีวิตจริง งานของเขาคือการสอนแนวคิดพื้นฐาน (เช่นความเป็นเอกเทศ, ความเท่าเทียม, การเหนี่ยวนำ) ให้กับนักศึกษา เช่นนี้เป็นสิ่งสำคัญมากที่การเลือกภาษา (และกระบวนทัศน์) สามารถแสดงแนวคิดเหล่านี้ด้วยพิธีเล็ก ๆ น้อย ๆ (การสร้างประโยคและแนวคิด) ที่เป็นไปได้ ความคุ้นเคย, การสนับสนุนเครื่องมือ, ไลบรารีที่มี, ประสิทธิภาพการทำงาน ฯลฯ ไม่เกี่ยวข้องอย่างสมบูรณ์ในบริบทนี้ ดังนั้นโปรดระลึกไว้เสมอเมื่อพิจารณาสิ่งต่อไปนี้ ...
มุมมองที่ว่า OO เป็นผลการต่อต้านแบบแยกส่วนจากการพึ่งพาจำนวนมากไปยังคลาสอื่น ๆ แม้วัตถุของคลาสที่ออกแบบมาอย่างดีมักจะจบลงด้วย นี่เป็นปัญหา - แม้ในสายตาของผู้สนับสนุนของ OO - จะชัดเจนเมื่อคุณดูที่การเพิ่มจำนวนของกรอบการฉีดการพึ่งพาบทความบทความหนังสือและบล็อกโพสต์ในปีที่ผ่านมา (เช่น mocks และ stubs ที่น่าสนใจ)
คำใบ้อีกข้อคือความสำคัญของรูปแบบการออกแบบและความซับซ้อนของการนำไปใช้ - เมื่อเทียบกับกระบวนทัศน์การเขียนโปรแกรมอื่น ๆ - เช่นโรงงาน, ผู้สร้าง, อะแดปเตอร์, สะพาน, มัณฑนากร, ผู้ตกแต่ง, ซุ้ม, คำสั่ง คอมโพสิตทั้งหมดในบางวิธีที่เกี่ยวข้องกับการปรับปรุง modularity ของรหัส OO
การสืบทอดยังเป็นปัญหา (เช่นปัญหาระดับฐาน Fragile ) และ (subtype) polymorphism ล่อลวงคนหนึ่งให้ดำเนินการตามอัลกอริธึมระหว่างคลาสหลายชั้นซึ่งการเปลี่ยนแปลงสามารถกระเพื่อมผ่านห่วงโซ่มรดกทั้งหมด (ขึ้นและลง!)
ค่าใช้จ่ายในการต่อต้านขนานนั้นสัมพันธ์กับความสำคัญของรัฐเทียบกับการคำนวณ (aka. ความไม่แน่นอนกับความไม่เปลี่ยนแปลง) อดีตทำให้มันเกี่ยวข้องมากขึ้นในการแสดงการพึ่งพาของ subcomputations (ซึ่งเป็นของฮาร์เปอร์ใช้คู่ขนาน!) ในขณะที่คุณมักจะไม่สามารถอนุมานจากตำแหน่งที่รัฐจัดการ (ไฟล์. ซึ่งมีการประกาศตัวแปรอินสแตนซ์) ซึ่งนักแสดงนอก จะเปลี่ยนตามเวลา
การเน้นที่การเปลี่ยนแปลงไม่ได้และการคำนวณทำให้การแสดงการพึ่งพาของ subcomputations ง่ายขึ้นเนื่องจากไม่มีการจัดการของรัฐเพียงแค่ฟังก์ชั่น / การคำนวณที่รวมกันในสถานที่ที่คุณต้องการแสดงการพึ่งพาของ subcomputations