O Objective-C apresenta uma boa orientação, simplicidade, elegância e (como um superconjunto de C), capacidade de baixo nível. Pode parecer a alternativa simples e moderna ao C ++ que muitas pessoas procuram e tentam encontrar no Go. Mas é usado apenas nos ambientes de cacau e pós-NextSTEP e, mesmo nesse caso, é visto mais como um fardo por razões históricas do que como uma escolha ideal.
Por que não é mais amplamente usado então? Quais são os seus problemas?
objective-c
Toni Cárdenas
fonte
fonte
Respostas:
Na IMO, o problema com o Objective-C não é tanto uma falha maciça, mas uma falha menor (especialmente no início) e falta de vantagens percebidas.
O Objective-C era um superconjunto puro de C; portanto, o código C poderia fazer a transição para o Objective-C facilmente. A mentalidade de usar Objective-C, no entanto, era diferente da C mentalidade um monte . A transição de C para Objective-C é fácil para o código, mas não é fácil para muitos programadores. O programador de CA não pode facilmente escolher apenas alguns novos recursos de conveniência no Objective-C e obter melhor produtividade quase imediatamente - ele precisa aprender muitas "coisas" novas antes de poder chegar a qualquer lugar.
O C ++ tornou a transição para algum código um pouco mais difícil, mas a transição para a maioria dos programadores muito mais fácil. Os programadores de C que estão acostumados a lidar com todos os detalhes de seu código ainda podem fazê-lo em C ++ exatamente na medida em que desejam. O C ++ também facilitou o uso de alguns novos recursos (por exemplo, adicionar um ctor para inicializar automaticamente membros de sua estrutura) sem realmente mudar sua maneira de pensar. Um monte de puristas OO empurrou mudanças radicais no pensamento, mas muitos programadores C comutada para C ++ sem fazer qualquer coisa do tipo (pelo menos de imediato - e muitas vezes nunca, a partir da aparência das coisas).
O C ++ também parecia muito mais familiar para a maioria dos programadores em C. Ele adicionou algumas novas palavras-chave, mas (especialmente no início) o código ainda parecia bastante familiar. Apesar de seu status de "superconjunto puro", a maioria dos códigos de Objective-C parece bastante estranha para a maioria dos programadores em C. Um monte de C ++ também é bastante fácil de explicar e entender em termos de como as coisas funcionam no C. Mudar para o Objective-C tem muito mais lugares que tudo o que você pode dizer é "apenas confie em mim e esqueça tudo o que acha que sabe". "
Muitas das decisões de design no Objective-C também o tornaram (um pouco) mais lento que o C ++, especialmente em máquinas relativamente antigas com processadores lentos, memória limitada etc. Certo ou errado, também era visto em grande parte como um produto de empresa única, onde O C ++ estava disponível gratuitamente para qualquer um e todos implementarem.
Todos eles levaram o C ++ a ser adotado rapidamente o suficiente para atingir "massa crítica" com bastante rapidez; portanto (entre outras coisas), tornou-se a escolha óbvia para muitos projetos, apenas porque já era um amplamente utilizado e conhecido. quantidade.
O objetivo C nunca chegou a esse ponto. Na verdade, estava a caminho de desaparecer na obscuridade quando a Apple a reviveu quase forçando-a a quem quisesse desenvolver para seus sistemas. A participação de mercado da Apple não é grande o suficiente para que isso realmente lhe dê massa crítica - apenas um nicho maior. É uma opção "padrão" apenas onde / porque a Apple faz isso.
Eu também acrescentaria que, pelo menos na minha opinião, o modelo de objeto semelhante ao Smalltalk da Objective-C significa que, na verdade, é muito mais um concorrente direto do Java do que o C ++. Sim, ele ainda possui os fundamentos de C, e sim, você ainda pode escrever código de baixo nível sem usar um idioma separado - mas C puro e Objective-C real são diferentes o suficiente para parecer menos um idioma do que dois idiomas completamente diferentes. Os dois são manipulados por um único compilador (embora seja útil que os dois possam conversar um com o outro sem que JNI se junte a eles).
fonte
Bem, basicamente, a Apple é a força motriz por trás do Objective-C desde há algum tempo:
Como agora, a Apple tem controle total sobre o Objective-C e dirige o idioma de acordo com suas necessidades, embora não exista nenhuma organização neste planeta interessada em executar o Objective-C em um dispositivo que não seja da Apple, que seria suficientemente grande para fornecer uma biblioteca e kit de ferramentas padrão para começar, que poderiam até rivalizar remotamente com os ecossistemas apresentados pelo .NET / Mono, C ++ ou Java.
fonte