设计java的灵感源自于Objective-C(简Obj-C), 但是很多学过java的朋友却难以掌握Objective-C。在这个系列的第一部分,David Chisnall(程序开发人员手册的作者),从语言学分析和比较这两种编程语言的相似之处。
Objective-C 创立于 1986, 但是当时很小众。最主要的支持者是 NeXT公司, 一个十年间仅卖出5万台电脑的公司。这很大程度限制了Obj-C的发展。 苹果公司收购NeXT后, 一切开始改变. Objective-C 变为Mac开发的主要语言, 使其占有5%至10%的桌面应用开发市场。giving it somewhere up toaround 5-10 percent of the desktop application development market share. 尽管Objective-C并不是MAC OS X开发的唯一语言,很多开发者使用他们熟悉的语言,但是iPhone,只允许使用Obj-C开发第三方应用。
如果你是从某个java平台转移而来,你会看到惧怕。Obj-C看起来比java复杂得多。幸运的是,只要你看看语法,就会发现熟悉的东西,你会发现十分容易。
一部分的java开发者有过Objective-C的开发经验, 包括一些在NeXT 工作过的朋友. 很多Java 概念是从Objective-C转变而来的, 或者来自于Smalltalk。但并不是说与 Objective-C相同. 有一些重要的不同我将在下一篇文章中说明。
语言哲学
Objective-C 被设计为具有封装的支持,像Smalltalk之于C一般,设计者称其为混血语言,方括号代表了 C 语言到面向对象的语言的进化。
Java的目标是大众化的语言,这结合了类似Smalltalk 的语义和C++ 语法,C++主要是从市场考虑的. C++ 有巨大的市场(且仍然有,虽然原因不明。。。), 而且看似想尽的语法使得人们觉得简单。
不幸的是,这也是java程序员转变为其他程序员的屏障。 Java 看起来像C++, 但是行为像Objective-C. Java 和 Objective-C 都有Smalltalk-like 语义, 与此同时C++ 从C中添加了与Simula 相似的语义。Java 和C++ 分别代表着Smalltalk 和Simula 不同的语义,但是又具有相同的语法.
从C++ 到Objective-C 是简单的,语义变化伴随着语法变化.。从Objective-C到Java是困惑的. 有巨大的语法变化,但是语义却是相似的。
目标的不同很明显. Java 目的在于 C-like 和对于 C 或 C++ 程序员的简单易学, 但是不介意破坏C的方式.;而Objective-C 是一个纯粹的C的超集。 每一个C 程序就是一个Objective-C 程序.。Objective-C 的目的在于创造一个语言封装C到易于重用的组件中。
Objective-C 原本没有很多标准库。而推荐使用C库。 Sun and NeXT的OpenStepAPI, 现在是Objective-C 的标准库, 它的实现例如 Cocoa 或者GNUstep 适用于多数平台. Java 并没有使原有的代码重用变得简单, 所以它需要自己的库。
分享到:
相关推荐
《Prentice Hall - UML for Java Programmers》是一本专为Java程序员设计的UML(统一建模语言)学习指南。这本书详细介绍了如何利用UML进行软件设计和开发,特别是针对Java编程环境。UML是一种标准的建模语言,用于...
Objective-C Pocket Reference provides a quick and concise introduction to Objective-C for programmers already familiar with either C or C++, and will continue to serve as a handy reference even after ...
《Jython for Java Programmers》是由New Riders出版的一本专为Java程序员介绍Jython语言的指南。Jython是Python的一种实现,它完全兼容Python语法,同时又与Java平台紧密集成,使得开发者能够利用Python的简洁性和...
这本书《C++ for Java Programmers》是为具有一定经验的Java程序员所写,目的是让他们利用现有的面向对象编程知识,快速掌握标准C++的所有重要方面。书中强调了C++与Java之间的差异,并着重介绍了C++的底层C风格细节...
书名为《游戏开发图形学-Shaders for Game Programmers and Artists》, 这本书主要是针对游戏程序员和艺术家的着色器教程,着色器在游戏开发图形学中扮演着重要角色。这本书由Thomson Course Technology PTR于2004年...
《Dot.NET Development for Java Programmers》是一本专为有Java背景的开发者设计的指南,旨在帮助他们理解和掌握Microsoft的.NET框架。这本书由Paul Gibbons撰写,Apress出版社于2002年出版。通过深入浅出的方式,...
### 面向Java开发者的Go编程:详细解析 #### 一、引言 随着Go语言的日益流行,越来越多的Java开发者开始转向学习这门语言。Go语言以其简洁高效的特性吸引了大量的关注,尤其是在高并发场景下的表现更是令人瞩目。...
《UML for Java Programmers中文版》是一本专为Java程序员设计的UML(统一建模语言)指南。UML是一种标准的建模语言,它为软件开发提供了一种图形化的方式来描述系统的结构和行为。这本书是快速完成的草稿版,可能...
**UML for Java Programmers 中文版** UML(统一建模语言)是软件工程领域中的一种标准化建模工具,专为系统分析和设计而设计。对于Java程序员来说,掌握UML至关重要,因为它能帮助他们清晰地表达和理解程序结构、...
Computer Graphics for Java Programmers, Second Edition
根据提供的文件信息,本文将围绕“UML for Java Programmers中文版”这一主题展开,深入探讨UML在Java编程中的应用及其重要性。 ### UML简介 统一建模语言(Unified Modeling Language,简称UML)是一种图形化表示...
### UML for Java Programmers知识点总结 #### 一、UML概述 - **UML** (Unified Modeling Language) 是一种标准化的图形表示方法,用于软件系统的建模。 - **类图**(Class Diagram): 描述系统中的类以及它们之间的...
《C++ for Java程序员》是针对已有Java编程基础的学习者,想要深入了解或过渡到C++编程的一份资源。这份压缩包文件包含了一系列的教程、笔记和可能的实践项目,旨在帮助Java开发者理解C++的独特特性和语法差异,以便...
Jython for Java Programmers.chm Java程序员学习Jython的教程。