2009-07-29 30 views
26

Tại sao Apple quyết định sử dụng Objective-C cho iPhone SDK chứ không phải C++?Tại sao Apple sử dụng mục tiêu C?

Có vẻ lạ với tôi rằng họ sẽ không chọn ngôn ngữ phổ biến hơn Objective-C. Có phải vì muốn có một cái gì đó độc đáo trong ứng dụng của họ mà không phải là nếu không sử dụng chung?

+1

Khi bạn hỏi Apple, họ đã nói gì? –

+6

Nó được sử dụng trong iPhone vì ngôn ngữ lập trình chuẩn của nó cho MacOSX. – skaffman

+1

Bỏ phiếu để đóng làm chủ đề hoặc quá rộng. –

Trả lời

46

của Apple sáp nhập với NeXT trong những năm 90 và Mac OS X đã được thực hiện từ hệ điều hành NeXT của, NeXTSTEP. Objective-C là ngôn ngữ chính thức của các khung ứng dụng của NeXTSTEP, đã trở thành Cocoa của Mac OS X. Mac OS X sau đó đã được chuyển thể sang hệ điều hành iPhone và Cocoa được tạo thành Cocoa Touch. Mục tiêu-C đã tổ chức khá tốt trên đường đi, và rất nhiều tính năng của Cocoa sẽ khó dịch sang C++.

Về cơ bản, tất cả đều xuất phát từ NeXT.

+3

Một số lịch sử. Đọc trang 1 từ http://www.amazon.com/gp/reader/0321503619/ref=sib_dp_ptu#reader-link – epatel

+0

Chết trên. Lưu ý rằng một nỗ lực đã được thực hiện để cầu Cocoa với Java, nhưng các tính năng động chỉ không dịch tốt, và CocoaJava đã không được chấp nhận trong 10.4 và sẽ được đi trong 10.6+. Việc chuyển sang C++ sẽ gặp phải các vấn đề tương tự, và điều duy nhất nó thực sự "giải quyết" là sự quen thuộc của nhà phát triển với ngôn ngữ lập trình. C++ là một ngôn ngữ phức tạp, và trong khi Objective-C không hoàn hảo, nó có rất nhiều lợi thế riêng, và so sánh thuận lợi với C++ và các ngôn ngữ OO khác trong nhiều khía cạnh. –

+0

Tôi nghĩ rằng một cây cầu Cocoa-C++ thực sự sẽ khó hơn Cocoa-Java. Bản thân Java bị ảnh hưởng mạnh bởi Objective-C, do đó, có nhiều điểm tương đồng hơn giữa hai ngôn ngữ hoàn toàn không liên quan như C++ và Objective-C. – Chuck

3

Đó là vì Objective C là ngôn ngữ thực tế cho phát triển Mac OS X trước khi nó là Mac OS X. Khi Jobs rời Apple để thiết lập NeXT, ngôn ngữ Objective C được phát triển như một ngôn ngữ cụ thể không phải là C++ và tránh được nhiều cạm bẫy của nó. Do đó, có nghĩa là bất kỳ thiết bị di động hoặc thiết bị tiêu dùng nào (kể cả Apple TV) đều sử dụng Objective C làm ngôn ngữ phát triển chính của chúng và thả xuống lớp C bên dưới khi cần thiết cho các vấn đề về hiệu suất hoặc giao diện.

+9

Objective-C đã được sử dụng tốt trước NeXT. Họ chỉ làm cho nó phổ biến. –

2

Mục tiêu-C thêm lập trình hướng đối tượng vào C. Nó được sử dụng cho NeXT, khi mà rất nhiều OSX được bắt nguồn. Nó hỗ trợ tất cả C và đơn giản hơn C++.

http://discussions.apple.com/thread.jspa?threadID=2091191

+0

liên kết chết: http://discussions.apple.com/thread.jspa?threadID=2091191 – techcraver

1

Lưu ý rằng Mục tiêu-C không phải là ngôn ngữ mới. Nó đã được khoảng từ năm 1986 - trước khi Java hoặc C#!

Nó đã được sử dụng chung kể từ khi NeXT, nhiều ứng dụng trong thế giới thực xung quanh sử dụng nó.

18

Mục tiêu C bắt đầu cuộc sống vào năm 1983 tôi tin rằng, được tạo ra bởi Brad Cox và Tom Love. Ý tưởng của Objective-C là kiểm soát độ tinh khiết và mức độ thấp của C và hợp nhất với các tính năng hướng đối tượng thực sự cho phép các công ty tùy chỉnh các thư viện hệ thống có thể giao tiếp với lớp OOP của Obj-C. Về cơ bản, nó hoạt động. Obj-C là một siêu lớn của C, không giống như C++, phần lớn là C, nhưng có nhiều khác biệt.

Khi Steve Jobs thành lập NeXT Computer (1985), ông đã mang đến một số nhóm Apple cũ của mình và những người khác. Các lập trình viên giỏi nhất của ông đã quan tâm đến việc sử dụng một ngôn ngữ mở rộng trên C với cùng một lợi ích tốc độ và kiểm soát hệ thống. Họ đã chọn Objective-C. NeXT cuối cùng đã viết nhiều thư viện và phương pháp cho ngôn ngữ cơ bản. Tất cả bắt đầu với NS cho Bước tiếp theo. Đây là tên của hệ điều hành NeXT. Đến năm 1989, hệ điều hành Bước tiếp theo được xem là vượt trội hơn nhiều so với MS Windows hoặc Mac OS, và nhiều công ty máy tính muốn cấp phép cho nó một cách tồi tệ. Jobs chỉ đơn giản là không muốn đi theo hướng đó.

Khi Apple lên và đưa Steve Jobs trở lại màn hình (1996), việc đưa hệ điều hành Bước tiếp theo vào Mac OS X mới thực sự là chìa khóa để Apple khôi phục phần mềm và chiến lược lập trình của Apple.

Trong khi C++ vẫn là một ngôn ngữ thực sự tuyệt vời và mạnh mẽ, tôi thấy rằng Objective C có ít sai sót hơn (chỉ là ý kiến ​​của tôi), và công việc tiếp tục của Apple trên thư viện Cocoa đã làm cho ngôn ngữ Obj-C trở thành một sức mạnh thực sự hiện đại với nền tảng C. Nó có tốt hơn Java không? Không chắc. Nhưng đối với những gì nó được thiết kế chủ yếu cho (Mac OS, iOS) nó là đáng kinh ngạc tốt, nếu một chút quá chi tiết.Những lời chỉ trích lớn nhất của Obj-C là tạo kiểu cú pháp, nhưng bất kỳ lập trình viên nào thực sự học ngôn ngữ sẽ nhanh chóng tìm hiểu sức mạnh tuyệt vời của nó và dường như không phù hợp với mọi thứ Mac, iPhone, iPad.

Liệu mọi nền tảng khác có chấp nhận Obj-C cuối cùng không? không chắc chắn, nhưng nghi ngờ. Nhưng các thư viện Cocoa thực sự tuyệt vời.

Các vấn đề liên quan