2009-07-29 8 views
26

Perché Apple ha deciso di utilizzare Objective-C per iPhone SDK e non C++?Perché Apple utilizza l'obiettivo C?

Mi sembra strano che non avrebbero scelto un linguaggio più popolare di Objective-C. È perché volevo avere qualcosa di unico nella loro applicazione che non è altrimenti in uso generale?

+1

Quando hai chiesto ad Apple, cosa hanno detto? –

+6

È utilizzato nell'iPhone perché è il linguaggio di programmazione standard per MacOSX. – skaffman

+1

Votare per chiudere come fuori tema o troppo ampio. –

risposta

46

di Apple fusa con NeXT negli anni '90 e Mac OS X è stato fatto dal sistema operativo di NeXT, NeXTSTEP. Objective-C era la lingua ufficiale dei framework applicativi di NeXTSTEP, che divenne Cocoa di Mac OS X. Mac OS X è stato quindi adattato al sistema operativo dell'iPhone e Cocoa è stato trasformato in Cocoa Touch. Objective-C ha resistito abbastanza bene lungo tutto il percorso, e molte delle funzioni di Cocoa sarebbero state difficili da tradurre in C++.

Quindi, in sostanza, tutto deriva da NeXT.

+3

Un po 'di cronologia. Leggi la pagina 1 da http://www.amazon.com/gp/reader/0321503619/ref=sib_dp_ptu#reader-link – epatel

+0

Dead on. Si noti che è stato fatto un tentativo per collegare Cocoa a Java, ma le funzionalità dinamiche non si traducono bene, e CocoaJava è stato ritirato in 10.4 e sarà disattivato tra 10.6 e versioni successive. Il porting su C++ avrebbe dovuto affrontare problemi simili e l'unica cosa che avrebbe davvero "risolto" è la familiarità degli sviluppatori con il linguaggio di programmazione. Il C++ è un linguaggio molto complesso e, sebbene Objective-C non sia perfetto, ha molti vantaggi e si confronta in modo soddisfacente con C++ e altri linguaggi OO sotto molti aspetti. –

+0

Penso che un bridge Cocoa-C++ sarebbe effettivamente più difficile di Cocoa-Java. Java stesso è stato fortemente influenzato da Objective-C, quindi ci sono più similitudini lì che tra due linguaggi completamente indipendenti come C++ e Objective-C. – Chuck

3

È perché l'Objective C è stato il linguaggio di fatto per lo sviluppo di Mac OS X prima che fosse Mac OS X. Quando Jobs ha lasciato Apple per impostare NeXT, il linguaggio Objective C è stato sviluppato come linguaggio specifico che non era C++ ed evitato molte delle sue insidie. È quindi logico che qualsiasi apparecchiatura portatile o di consumo (inclusa Apple TV) utilizzi l'Objective C come linguaggio di sviluppo primario e scenda al livello C sottostante quando necessario per problemi di prestazioni o di interfaccia.

+9

Objective-C era molto prima di NeXT. L'hanno appena reso popolare. –

1

Si noti che Objective-C non è una nuova lingua. È in circolazione dal 1986, molto prima di Java o C#!

E 'stato in uso generale sin da NeXT, molte applicazioni del mondo reale sono in giro che ne fanno uso.

18

L'obiettivo C è nato nel 1983, credo, creato da Brad Cox e Tom Love. L'idea di Objective-C consisteva nel prendere il controllo di purezza e basso livello di C e fonderlo con vere caratteristiche orientate agli oggetti che avrebbero consentito alle aziende di personalizzare le librerie di sistema che potevano comunicare con il livello OOP di Obj-C. Essenzialmente, ha funzionato. Obj-C è un superset di C rigido, a differenza del C++ che è la maggior parte di C, ma con molte differenze.

Quando Steve Jobs ha fondato NeXT Computer (1985), ha coinvolto alcuni dei suoi ex team Apple e altri. I suoi migliori programmatori erano interessati all'uso di un linguaggio che si espandeva su C con gli stessi vantaggi di velocità e controllo del sistema. Hanno scelto Objective-C. Alla fine, NeXT ha scritto molte librerie e metodi per il linguaggio di base. Tutto inizia con NS per Next Step. Questo era il nome del sistema operativo NeXT. Nel 1989 il Next Step OS era considerato di gran lunga superiore a MS Windows o Mac OS, e molte aziende di computer volevano licenziarlo in modo grave. I lavori semplicemente non volevano andare in quella direzione.

Una volta che Apple ha capito e ha riportato Steve Jobs nella piega (1996), l'infusione di Next Step OS nel nuovo Mac OS X è stata davvero la chiave per rilanciare il suo software e la sua strategia di programmazione.

Mentre C++ rimane un linguaggio veramente eccellente e potente, trovo che l'Objective C ha meno difetti (solo la mia opinione), e il continuo lavoro di Apple sulle librerie Cocoa ha reso il linguaggio Obj-C una potenza veramente moderna con basi C. È meglio di Java? Non sono sicuro. Ma per ciò che è principalmente progettato per (Mac OS, iOS) è sorprendentemente buono, anche se un po 'eccessivamente prolisso.

La più grande critica di Obj-C è lo stile sintattico, ma qualsiasi programmatore che impari veramente la lingua apprenderà rapidamente della sua straordinaria potenza e apparentemente in forma con tutto ciò che è Mac, iPhone, iPad.

In futuro tutte le altre piattaforme adottano Obj-C? non sicuro, ma dubbioso. Ma le librerie di Cocoa sono davvero meravigliose.

Problemi correlati