IMO, Objective-C ile ilgili sorun, çok küçük eksiklikler (özellikle erken dönemde) ve algılanan avantajların olmaması gibi çok büyük eksiklikler değil.
Objective-C, C'nin saf bir süpersetiydi, bu nedenle C kodu kolayca Objective-C'ye geçebiliyordu. Zihniyet için kullanmak Objective-C ise C zihniyeti bir farklılık çok . C'den Objective-C'ye geçiş kod için kolaydır, ancak pek çok programcı için hiç de kolay değildir. AC programcısı kolayca Objective-C'deki birkaç yeni kolaylık özelliğini seçemez ve hemen hemen daha iyi bir üretkenlik elde eder - hiçbir yere ulaşmadan önce birçok yeni "şey" öğrenmesi gerekir.
C ++, bazı kodların geçişini biraz daha zorlaştırdı, ancak çoğu programcının geçişi daha kolaydı. Kodlarının her detayıyla ilgilenmeye alışkın olan C programcıları hala tam olarak istedikleri ölçüde C ++ 'da yapabilirler. C ++ ayrıca, düşünme biçiminizi gerçekten değiştirmeden bazı yeni özelliklerin (örneğin, yapı elemanlarınızı otomatik olarak başlatmak için bir ekleyici eklemek) kullanımını kolaylaştırdı. OO purists bir sürü itti (- şeylerin görünüyor gelen, genellikle sürekli ve en azından hemen) düşünce radikal değişiklikler, ancak C programcıları çok tür bir şey yapmadan C ++ geçti.
C ++ da baktım en C programcıları çok daha tanıdık. Birkaç yeni anahtar kelime ekledi, ancak (özellikle erken) bu kod hala oldukça tanıdık geliyordu. "Saf üst simge" durumuna rağmen, çoğu Objective-C kodu çoğu C programcısı için oldukça yabancı görünüyor . C ++ 'da işlerin nasıl yürüdüğü ile ilgili olarak açıklanması ve anlaşılması da oldukça kolaydır. Objective-C’ye geçmek, söyleyebileceğiniz her şey hakkında "sadece bana güven ve bildiğini düşündüğün her şeyi unutabilirsin." "
Objective-C'deki tasarım kararlarının çoğu da (biraz) C ++ 'dan daha yavaş, özellikle de yavaş işlemcilere, sınırlı belleğe, vb. Sahip olan eski makinelerde. Haklı ya da yanlış, aynı zamanda büyük ölçüde tek bir şirket ürünü olarak görülüyordu. C ++, herkes ve herkesin uygulayabileceği bir şekilde serbest kaldı.
Bunların hepsi, C ++ 'nın yeterince hızlı bir şekilde “kritik kütle” ye çabucak ulaşması için yeterince hızlı bir şekilde benimsemelerine neden oldu, bu yüzden (diğer şeylerin yanı sıra), zaten çok kullanılan, iyi bilinen bir çok proje için bariz seçenek haline geldi. miktar.
Amaç-C asla bu noktaya ulaşmadı. Aslında, Apple kendi sistemleri için geliştirmek isteyen herhangi birisine neredeyse zorlayarak, onu yeniden canlandırdığında belirsizliğe dönüşmeye doğru gidiyordu. Apple'ın pazar payı, gerçekten de olsa kritik kütle vermesi için yeterince büyük değil - sadece daha büyük bir niş. Bu "varsayılan" bir seçimdir, çünkü Apple bunu yapar.
Ayrıca, en azından benim görüşüme göre, Objective-C'nin Smalltalk benzeri nesne modelinin aslında Java için C ++ 'dan çok daha doğrudan bir rakip olduğu anlamına geliyor. Evet, hala C temelleri var ve evet, hala ayrı bir dil kullanmadan düşük seviyeli kod yazabilirsiniz - ama saf C ve gerçek Objective-C, tamamen farklı iki dilden farklı bir dilden daha az farklıdır. her ikisinde de tek bir derleyici tarafından ele alınabilir (her ikisinin de birbirleriyle JNI gibi bir şeyler olmadan konuşabilmeleri yararlıdır).