IMO ปัญหาเกี่ยวกับ Objective-C ไม่ใช่ข้อบกพร่องที่ใหญ่โตอย่างมากเนื่องจากข้อบกพร่องเล็กน้อย (โดยเฉพาะอย่างยิ่งในช่วงต้น) และการขาดความได้เปรียบ
Objective-C เป็น superset แท้ๆของ C ดังนั้นโค้ด C สามารถเปลี่ยนเป็น Objective-C ได้อย่างง่ายดาย ความคิดที่จะใช้ Objective-C แต่แตกต่างจากซีความคิดจำนวนมาก การเปลี่ยนจาก C เป็น Objective-C นั้นง่ายสำหรับโค้ด แต่ไม่ใช่เรื่องง่ายสำหรับโปรแกรมเมอร์จำนวนมาก โปรแกรมเมอร์ AC ไม่เพียงแค่เลือกฟีเจอร์อำนวยความสะดวกใหม่ ๆ ใน Objective-C อย่างง่ายดายและได้ผลผลิตที่ดีขึ้นเกือบจะทันทีเขาต้องเรียนรู้ "สิ่งใหม่" มากมายก่อนที่เขาจะสามารถไปได้ทุกที่
C ++ ทำให้การเปลี่ยนแปลงสำหรับรหัสบางอย่างยากขึ้นเล็กน้อย แต่การเปลี่ยนสำหรับโปรแกรมเมอร์ส่วนใหญ่ง่ายกว่ามาก โปรแกรมเมอร์ C ที่คุ้นเคยกับการจัดการกับทุกรายละเอียดของรหัสของพวกเขายังสามารถทำได้ใน C ++ เท่าที่พวกเขาต้องการ C ++ ยังทำให้ง่ายต่อการใช้คุณสมบัติใหม่บางอย่าง (เช่นเพิ่ม ctor เพื่อเริ่มต้นสมาชิกของโครงสร้างของคุณโดยอัตโนมัติ) โดยไม่ต้องเปลี่ยนวิธีคิดของคุณจริงๆ นักปราชญ์ OO จำนวนมากผลักดันให้เกิดการเปลี่ยนแปลงอย่างรุนแรงในการคิด แต่โปรแกรมเมอร์ C จำนวนมากเปลี่ยนไปใช้ C ++ โดยไม่ต้องทำอะไรเลย (อย่างน้อยก็ทันที
C ++ ดูคุ้นเคยกับโปรแกรมเมอร์ C มากขึ้น มันเพิ่มคำหลักใหม่ไม่กี่คำ แต่ (โดยเฉพาะในช่วงต้น) รหัสยังดูคุ้นเคยเป็นส่วนใหญ่ แม้จะมีสถานะ "เพียวซูเปอร์เซ็ต" แต่รหัส Objective-C ส่วนใหญ่นั้นดูค่อนข้างแปลกสำหรับโปรแกรมเมอร์ซีส่วนใหญ่ C ++ จำนวนมากนั้นค่อนข้างง่ายที่จะอธิบายและเข้าใจในแง่ของการทำงานใน C การสลับไปที่ Objective-C มีสถานที่มากมายที่คุณสามารถพูดได้คือ "เชื่อใจฉันและลืมทุกสิ่งที่คุณคิดว่ารู้ "
การตัดสินใจในการออกแบบจำนวนมากใน Objective-C ทำให้ช้ากว่า C ++ โดยเฉพาะอย่างยิ่งกับเครื่องที่ค่อนข้างเก่าด้วยโปรเซสเซอร์ที่ช้าหน่วยความจำที่ จำกัด ฯลฯ ไม่ว่าจะถูกหรือผิดก็ถูกมองว่าเป็นผลิตภัณฑ์ของ บริษัท เดียว C ++ สามารถใช้ได้อย่างอิสระสำหรับทุกคนและทุกคนที่จะใช้
สิ่งเหล่านี้นำไปสู่การถูกนำมาใช้อย่างรวดเร็วเร็วพอที่จะทำให้ "วิกฤตมวลชน" ค่อนข้างเร็วดังนั้น (เหนือสิ่งอื่นใด) จึงกลายเป็นตัวเลือกที่ชัดเจนสำหรับโครงการจำนวนมากเพียงเพราะมันเป็นที่รู้จักกันดีในวงกว้าง ปริมาณ.
วัตถุประสงค์ -C ไม่เคยไปถึงจุดนั้น ในความเป็นจริงมันเป็นไปในทางที่จะจางหายไปสู่ความสับสนเมื่อ Apple ฟื้นขึ้นมาโดยเกือบบังคับให้ใครก็ตามที่ต้องการพัฒนาสำหรับระบบของพวกเขา ส่วนแบ่งการตลาดของ Apple นั้นไม่ใหญ่พอสำหรับการให้มวลที่สำคัญอย่างแท้จริงไม่ว่าจะเป็นเพียงช่องที่ใหญ่กว่า เป็นตัวเลือก "เริ่มต้น" เฉพาะที่ / เพราะ Apple ทำเช่นนั้น
ฉันยังเพิ่มที่อย่างน้อยในความคิดของฉันแบบจำลองวัตถุคล้าย Smalltalk เหมือนของ Objective-C หมายความว่ามันเป็นคู่แข่งโดยตรงกับ Java มากกว่า C ++ ใช่มันยังมีการรองรับ C และคุณยังสามารถเขียนรหัสระดับต่ำได้โดยไม่ต้องใช้ภาษาแยกต่างหาก - แต่ C บริสุทธิ์และ Objective-C ที่แท้จริงนั้นแตกต่างกันมากพอที่จะเหมือนภาษาเดียวน้อยกว่าภาษาที่แตกต่างกันสองภาษาโดยสิ้นเชิง เกิดขึ้นกับทั้งคู่ได้รับการจัดการโดยคอมไพเลอร์เดียว (แม้ว่าจะเป็นประโยชน์ที่ทั้งสองสามารถพูดคุยกันได้โดยไม่ต้องมี JNI เข้าร่วมพวกเขา)