De onde vem o Objective-C? C ++ ou C?

8

Estou muito confuso com essa linguagem de programação, Objective-C, que ouvi dizer que é usada para desenvolver aplicativos iOS.

Eu sei que ele usa os princípios do POO. Seria mais fácil aprender se eu já conhecesse C ++? E o seu nome? é uma combinação entre a linguagem de programação C e os princípios de POO que eu uso em C ++?

aplacar
fonte

Respostas:

12

Brad Cox e amigos adicionaram uma fina camada de Smalltalk em cima de C.

O Objective-C, portanto, tem muito mais em comum com o estilo OO de envio de mensagens altamente dinâmico do Smalltalk do que o C ++.

Uma grande diferença é que, no Objective-C, você não se preocupa muito com o que é uma classe: você se importa com as mensagens que alguma coisa entende. Você pode ter objetos que alteram o conjunto de mensagens que eles entendem, em tempo de execução.

Tendo dito que as duas línguas têm idéias muito diferentes sobre o que é OO, muitas idéias / princípios ainda são compartilhados: herança, delegação, polimorfismo, e assim por diante. Você encontrará facilmente muitos exemplos dos vários padrões de OO no código escrito em qualquer idioma.

Frank Shearar
fonte
2

Outros apontaram que Objective-C é uma camada OO do estilo SmallTalk adicionada ao C, acrescentarei que o C ++ começou como uma camada OO do estilo Simula adicionada ao C (e os modelos foram adicionados para fazer uma boa medida).

AProgrammer
fonte
1

Da boca do cavalo :

Objective-C é uma linguagem de programação híbrida […] formada enxertando o estilo Smalltalk-80 de programação orientada a objetos em um porta-enxerto da linguagem C. O Objective-C adiciona precisamente um novo tipo de dados, o objeto, aos C que já fornece, e precisamente uma nova operação, a expressão da mensagem. Como o Smalltalk-80, o Objective-C não faz distinção em tempo de compilação entre diferentes tipos (classes) de objetos.

Para abordar "Seria mais fácil saber se eu já conhecia C ++?" Acho que não, mas também não machucaria. Você pode se sentir mais confortável com conceitos como classes e objetos, se já conhece o C ++, mas descobrirá que o Objective-C implementa classes de uma maneira muito diferente do C ++. Para emprestar alguma terminologia do Stroustrup, todas as mensagens ObjC são "virtuais" e podem ser redefinidas por subclasses, ou até ter suas implementações trocadas na classe de definição. Essa e outras sutilezas provavelmente anulam algumas das vantagens que você terá ao conhecer C ++.


fonte
Os métodos do Objective-C são muito mais virtuais ("apenas aparentemente existentes") que os do C ++ virtual: Um objeto nem precisa entender uma mensagem para lidar com isso. Ele pode encaminhar silenciosamente a mensagem para algum objeto interno que possa entendê-la, permitindo que o proxy transparente suporte, por exemplo, o carregamento lento de uma instância de um banco de dados.
Frank Shearar 5/05
Na verdade, eu estava emprestando a terminologia para familiarizar a ideia. O C ++ usa vtables para despachar métodos virtuais, que o ObjC adicionou recentemente como uma otimização de desempenho.
0

Objetivo-C é C, com uma camada de Smalltalk.

De acordo com a Wikipedia :

Objective-C é uma linguagem de programação reflexiva e orientada a objetos que adiciona mensagens no estilo Smalltalk à linguagem de programação C.

É orientado a objetos, mas não é diretamente do C ++.

Então, sim, é C com algumas das habilidades OO do Smalltalk .

Dinâmico
fonte
5
nem de fato é do C ++. O C ++ empresta seu modelo de classe da Simula e as duas linguagens estavam sendo trabalhadas na mesma época.