Tôi nghĩ ObjC đã bị cô lập với thế giới của Apple thông qua một điều bí ẩn về lịch sử và bản chất của các hệ thống độc quyền.
Trước tiên, bạn cần tách ObjC khỏi Cocoa. ObjC là một ngôn ngữ rất thô sơ. Tôi nghĩ đó là một ngôn ngữ rất thanh lịch, nhưng nó cực kỳ cơ bản. Bạn có thể triển khai ObjCv1 trong bộ xử lý trước C. C++ và ObjC được phát triển cùng một lúc. C++ đặt một số lượng lớn cơ sở hạ tầng tại chỗ để mang lại một cú pháp C giống như những gì về cơ bản là một ngôn ngữ hoàn toàn khác nhau. ObjC mang một cú pháp giống Smalltalk đến C, hầu như không có gì khác. Ngay cả những thứ như +alloc
và -release
không phải là yếu tố ngôn ngữ của ObjC. Chúng là các trình bao bọc khá đơn giản xung quanh malloc()
và free()
. * Thường trực, ObjC không thực sự thú vị (tao nhã như tôi nghĩ). Điều này rất giống với bản chất của Smalltalk. Nếu không có thư viện đối tượng của nó, không có nhiều bạn có thể làm với nó. Với các thư viện đối tượng của nó, nó cực kỳ mạnh mẽ.
NeXT cung cấp toàn bộ khung này trên đầu trang của ObjC được gọi là NeXTSTEP. Kể từ khi máy tính NeXT không phải là một thành công thương mại rộng rãi, và NeXTSTEP là độc quyền, không có nhiều người học được khuôn khổ hoặc ngôn ngữ cơ bản. Khi Apple mua nó và biến nó thành Cocoa, nó tiếp tục là một hệ thống độc quyền.
GNUStep ở ngoài đó, nhưng chúng chưa bao giờ phát triển bất kỳ thứ gì đủ thú vị để mang lại nhiều nhà phát triển (trình duyệt web chính hoặc trình xử lý văn bản hoặc tương tự). Và Ca cao đã vượt qua GNUStep trong vài năm qua. Có thể với sự gia tăng quan tâm đến ca cao do iPhone, GNUStep có thể hồi sinh và mang lại một khuôn khổ phát triển đa nền tảng tốt đẹp, nhưng tôi nghi ngờ điều đó.Những người có nền trong C++ nhìn vào C# và thấy một sự cải thiện rõ ràng. Khi họ nhìn vào ObjC, họ thấy rất nhiều dấu ngoặc vuông mà họ không mong đợi họ. Đối với những người lớn lên trên mô hình "phương pháp gọi", mô hình Smalltalk của "thông điệp đi qua" là người ngoài hành tinh và thậm chí một chút đáng sợ. Nhiều nhà phát triển cho rằng họ cần một ngôn ngữ được đánh máy mạnh để tránh các lỗi và không thoải mái với một hệ thống dựa chủ yếu vào kỷ luật lập trình viên và tính nhất quán cẩn thận. Nó dễ dàng hơn nhiều để hack một cái gì đó mà "chỉ hoạt động" trong C# hơn trong ObjC. ObjC thực sự mong đợi rất nhiều nhà phát triển hiểu được những gì đang xảy ra và không dựa vào trình biên dịch để bảo vệ bạn khỏi các hack của bạn.
Về cơ bản, mọi người biết C từ Unix và C++ có ý nghĩa về mặt C và Java có ý nghĩa về C++ và C# chỉ làm sạch Java. ObjC không phải là một trong số này. Đó là Smalltalk, và không ai học Smalltalk nữa.
* Gần đây tôi đã trò chuyện với anh chàng đã viết +alloc
về lịch sử của nó và anh ấy có thể phản đối việc tôi gọi đó là trình bao bọc đơn giản cho việc bao gồm các khu vực. Vì vậy, đối với những người biết sự khác biệt, hãy thay thế +alloc
tại đây bằng +new
.
Nguồn
2009-05-17 15:31:13
Cảm ơn thông tin chi tiết. Tôi muốn tìm hiểu nó bởi vì nó là smalltalk mà tôi yêu –
Ah, sau đó bạn đang nửa đường đến Cocoa Nature rồi. Nếu ngành công nghiệp của chúng tôi nhớ một nửa số bài học mà chúng tôi đã học trong Smalltalk, chúng tôi sẽ gấp đôi so với ngày hôm nay. Tôi có một đội ngũ những sinh viên tốt nghiệp Khoa học Máy tính mới được đào tạo từ các trường xuất sắc, và tôi vẫn phải dạy và dạy lại những kiến thức cơ bản về Model-View-Controller. –