Quina diferència hi ha entre C i l’objectiu C, ja que C també pot suportar objectes o és que l’objectiu C és el suport d’objectes en C?


Resposta 1:

Això són notícies per a mi. Des de quan C ha tingut suport per a objectes? C és un llenguatge de programació purament procedimental. No té cap funció dissenyada per a la programació orientada a objectes.

Objective-C és un llenguatge completament diferent. És un reemplaçament de C, però afegeix una sintaxi similar a Smalltalk per a la programació orientada a objectes. El llenguatge de mongrel resultant és difícil d'utilitzar, com a molt.


Resposta 2:

Crec que heu confós les coses aquí. Objective-C és un llenguatge totalment separat que és un superstit de C.

El llenguatge C no té (i mai no ha tingut) suport directe per a "objectes" en sentit OO, només estructures.

Podeu utilitzar estructures C per crear abstraccions d'objectes, ja sigui mitjançant codificació de convencions que són doloroses i propenses a errors, o bé utilitzant C com a destí intermedi per a un compilador, de la qual cosa van començar els objectius C i C ++ originalment.


Resposta 3:

L’objectiu C es basava en Smalltalk, però d’una manera bastant lletja introduint molts []] nidificats, mentre que Smalltalk no necessitava sintaxi per expressar naturalment idees (era una vergonya que NeXT no adoptés una cosa més propera a Smalltalk, però potser s’apassionava). les persones C). L'Objectiu C va ser inventat per Brad Cox com una eina de recerca per a la modularització i components del programari "IC" (circuit integrat).

Des de llavors, Apple ha desempassat l'Objectiu C en favor de Swift, que malauradament segueix sent molt com a C.

C ++ es va basar en Simula, però Dahl i Nygaard.

Tots dos es basaven en els fonaments (o falta de fundacions) de C. Acabo d’escriure una resposta llarga sobre el “patrimoni” (o falta de patrimoni) de C i C ++.

La resposta de Ian Joyner a quina llengua evoluciona C ++?


Resposta 4:

Quina diferència hi ha entre C i l’objectiu C, ja que C també pot suportar objectes o és que l’objectiu C és el suport d’objectes en C?

Hi ha dos problemes amb aquesta qüestió. Primer, C no té suport per a objectes. No necessitarà assistència per a objectes.

En segon lloc, la redacció d’aquesta pregunta fa sonar com si l’Objective-C fos un dialecte de C que va afegir suport per als objectes. No és el cas. Objective-C és un llenguatge orientat a objectes que utilitzava C com a base per a la seva sintaxi i característiques OO. El mateix es pot dir de C ++. Són diferents idiomes. Tot i que C s'hi hagués afegit OO encara que s'anomenés C, no seria possible oblidar l'objectiu C i la seva OO no estàndard i utilitzar el sabor C estàndard. Com he dit, són diferents idiomes.


Resposta 5:

L'Objectiu C originalment era alguns fitxers de codi C i un analitzador que implementava objectes i missatges que passaven amb funcions C, punters i llistes de funcions enllaçades. Va ser un intent de fer que l’enviament dinàmic (tria de funcions en temps d’execució) fos un mètode d’operació predeterminat, una cosa atrevida i apassionada d’un llenguatge compilat.

Com es pot dir, va tenir un èxit força considerable en l’entorn de proveta de Next / Apple, però no tant amb tots els altres.

Els objectes Objective-C eren estructures C amb funcions associades a aquestes estructures mitjançant un conjunt de taules i llistes i un sistema d'execució en viu que intercedia amb les funcions i les estructures per formar un sistema de despatx dinàmic. Es va afegir algunes sintaxis noves al paràmetre frontal, però es va recopilar a la línia recta C. Tot es va fer amb apunts i es va fer una memòria acumulada, que després es va abordar un sistema de recollida d’escombraries de referència, però mai va ser concloent si això era bo. idea.

El principal avantatge que tenia era que era 100% compatible amb C, per la qual cosa es podia cridar C sempre que calgués, i els sistemes operatius Apple 8.8,9 i X eren basats en C.

Amb el temps, Apple va desenvolupar una biblioteca d'objectes gegant per a Objective-C, que podia fer tot el que necessitaven i, per descomptat, perquè ningú realment l'utilitzava, van fer un revolt al mercat i van vendre productes per a desenvolupadors per a la seva línia. Com que Apple era ara un jugador important en el mercat d’ordinadors i tenia el seu propi sistema operatiu, podrien ampliar les capacitats de l’idioma per adaptar-se a les seves necessitats i afegir noves funcions, per intentar estar al dia dels temps que evolucionaven els idiomes fora del seu bloqueig. mercat Van intentar i van desenvolupar algunes innovacions, però van haver de lluitar contra els seus propis desenvolupadors que s'estaven adonant que C ++ tenia molt a oferir que l'Objectiu-C no podia.

C té un sistema d’execució minúscul, que és suficient per gestionar la memòria i integrar-se prou amb el sistema operatiu per controlar el procés, i enviar i capturar senyals del nucli del sistema operatiu.Objective-C té un subsistema sencer a la part superior del temps d’execució C. per gestionar l’enviament de funcions i en alguns casos el recompte de referències per a la recollida d’escombraries.

A C hi ha una taula gran de totes les funcions del programa i podeu trucar a qualsevol en qualsevol moment. Objective-C té taules de funcions i un enllaç de classes a funcions i busca quines classes poden classificar quines funcions i, opcionalment, què fer si no existeix una funció per a aquesta classe, potser truqueu una alternativa o envieu la funció i els paràmetres. en canvi, a una altra classe.