2009-07-29 8 views
26

Warum hat Apple beschlossen, Objective-C für das iPhone SDK und nicht für C++ zu verwenden?Warum Apple Objective C verwendet?

Es scheint mir seltsam, dass sie keine Sprache beliebter als Objective-C gewählt hätten. Liegt es daran, etwas Einzigartiges in seiner Anwendung zu haben, das sonst nicht allgemein genutzt wird?

+1

Als Sie Apple gefragt haben, was haben sie gesagt? –

+6

Es wird im iPhone verwendet, weil es die Standard-Programmiersprache für MacOSX ist. – skaffman

+1

Voting zum Schließen als Off-Thema oder zu breit. –

Antwort

46

Apple-fusionierte mit NeXT in den 90er Jahren und Mac OS X wurde von NeXT-Betriebssystem Nextstep gemacht. Objective-C war die offizielle Sprache der NeXTSTEP-Anwendungsframeworks, die zu Mac OS Xs Cocoa wurde. Mac OS X wurde dann in das iPhone OS und Cocoa in Cocoa Touch umgewandelt. Objective-C hat sich auf der ganzen Strecke gut gehalten, und viele Features von Cocoa wären schwer in C++ zu übersetzen.

Also im Wesentlichen kommt alles von NeXT.

+3

Etwas Geschichte. Lesen Sie Seite 1 von http://www.amazon.com/gp/reader/0321503619/ref=sib_dp_ptu#reader-link – epatel

+0

Dead on. Beachten Sie, dass versucht wurde, Cocoa mit Java zu verbinden, aber die dynamischen Funktionen lassen sich nicht gut übersetzen, und CocoaJava wurde in 10.4 als veraltet eingestuft und wird in 10.6+ nicht mehr verwendet. Die Portierung nach C++ würde ähnliche Probleme mit sich bringen, und das einzige, was es wirklich "lösen" würde, ist die Vertrautheit des Entwicklers mit der Programmiersprache. C++ ist eine sehr komplexe Sprache, und obwohl Objective-C nicht perfekt ist, hat es viele eigene Vorteile und vergleicht sich in vielerlei Hinsicht positiv mit C++ und anderen OO-Sprachen. –

+0

Ich denke, eine Cocoa-C++ - Brücke wäre tatsächlich schwieriger als Cocoa-Java. Java selbst wurde stark von Objective-C beeinflusst, daher gibt es dort mehr Gemeinsamkeiten als zwischen zwei völlig unabhängigen Sprachen wie C++ und Objective-C. – Chuck

3

Es ist, weil Objective C die De-facto-Sprache für Mac OS X-Entwicklung war, bevor es Mac OS X war. Wenn Jobs Apple verließ, NeXT einzurichten, wurde die Zielsprache C als eine bestimmte Sprache entwickelt, die nicht C++ war und vermieden viele seiner Fallstricke. Daher ist es sinnvoll, dass alle tragbaren Geräte oder Consumer-Geräte (einschließlich Apple TV) Objective C als primäre Entwicklungssprache verwenden und auf die zugrunde liegende C-Ebene herunterfallen, wenn dies für Leistungs- oder Schnittstellenprobleme erforderlich ist.

+9

Ziel-C war lange vor NeXT. Sie haben es einfach populär gemacht. –

1

Beachten Sie, dass Objective-C keine neue Sprache ist. Es gibt es schon seit 1986 - lange vor Java oder C#!

Es ist seit NeXT im allgemeinen Gebrauch gewesen, viele reale Anwendungen sind, die davon Gebrauch machen.

18

Objectiv C begann Leben im Jahr 1983 Ich glaube, von Brad Cox und Tom Love erstellt. Die Idee von Objective-C bestand darin, die Reinheit und Low-Level-Kontrolle von C zu übernehmen und diese mit echten objektorientierten Features zu verbinden, die es Unternehmen ermöglichen, Systembibliotheken anzupassen, die mit der OOP-Schicht von Obj-C kommunizieren könnten. Im Wesentlichen hat es funktioniert. Obj-C ist eine strikte Übermenge von C, im Gegensatz zu C++, das meistens aus C besteht, aber mit vielen Unterschieden.

Als Steve Jobs NeXT Computer (1985) gründete, brachte er einige seiner ehemaligen Apple-Team und andere. Seine besten Programmierer waren daran interessiert, eine Sprache zu verwenden, die auf C mit denselben Geschwindigkeitsvorteilen und Systemkontrolle erweitert wurde. Sie wählten Objective-C. NeXT schrieb schließlich viele Bibliotheken und Methoden für die Basissprache. Diese beginnen alle mit NS für Next Step. Dies war der Name des NeXT-Betriebssystems. 1989 wurde das Next Step OS als MS Windows oder Mac OS weit überlegen, und viele Computerfirmen wollten es schlecht lizenzieren. Jobs wollten einfach nicht in diese Richtung gehen.

Nachdem Apple Steve Jobs wieder in die Schranken gewiesen hatte (1996), war die Einführung von Next Step OS in das neue Mac OS X der Schlüssel zu Apple, um seine Software und Programmierstrategie wieder aufleben zu lassen.

Während C++ eine wirklich ausgezeichnete und mächtige Sprache bleibt, finde ich, dass Objective C weniger Fehler hat (nur meine Meinung), und Apples fortlaufende Arbeit an Cocoa-Bibliotheken hat die Obj-C-Sprache zu einer wirklich modernen Macht mit C-Grundlagen gemacht. Ist es besser als Java? Nicht sicher. Aber für was es in erster Linie entwickelt wurde (Mac OS, iOS) ist es erstaunlich gut, wenn auch etwas übertrieben.Die größte Kritik an Obj-C ist das syntaktische Styling, aber jeder Programmierer, der die Sprache wirklich lernt, wird schnell von seiner erstaunlichen Kraft und perfekten Passform mit allen Dingen Mac, iPhone, iPad erfahren.

Werden andere Plattformen schließlich Obj-C übernehmen? nicht sicher, aber zweifelhaft. Aber die Cocoa-Bibliotheken sind wirklich wundervoll.

Verwandte Themen