Objective-C编程:学习C和/或Smalltalk会有帮助吗?

前端之家收集整理的这篇文章主要介绍了Objective-C编程:学习C和/或Smalltalk会有帮助吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Objective-C是一种面向对象的编程语言,它将Smalltalk样式的消息传递添加到C编程语言中.我理解学习Smalltalk可能与学习Lisp对一个人的知识有益的方式相同,但我想知道学习Smalltalk特定的概念是否会帮助我更完整地理解Objective-C,因为Smalltalk在其“origin”中的作用故事”.如果是这样,具体是什么?

假设一个人已经知道C编程,我们可以从Smalltalk学到什么?显然,Objective-C中有很多概念不在C语言中(即消息传递,接口,协议,动态类型,委托,反射;它是面向对象的!)但是源自Smalltalk.

编辑:我已经在问题中添加了C编程语言,因为普遍的共识是学习C比学习Smalltalk更好地利用一个人的时间(当谈到Objective-C编程时).

解决方法

Smalltalk是一种非常紧凑的语言,仍然是最纯粹的面向对象语言之一. Objective-C是Smalltalk和C之间的务实折衷,它产生了一些非常大的差异.例如,在Smalltalk中,一切都是一个对象 – 甚至是简单的数字 – 并且对象的每个操作都是通过消息发送.无论名称如何,都以相同的顺序评估消息.所以例如下列:
8 + 9 / 23 + 16 * 8

以严格的从左到右的顺序进行评估,因为运算符”,’/’和’*’对于语言没有特殊含义,只是传递给数字对象的消息.

Objective-C将Smalltalk样式的对象添加到C中,但也是C的严格超集,它保留了C的原始类型和内置运算符.因此,在Objective-C中,正常的数学运算顺序将应用于上面的表达式 – 除法和乘法将首先完成,然后是加法.

学习C对于彻底理解Objective-C绝对必不可少. Objective-C是C的严格超集,并且尽可能明确地使用完全相同的语法和语义.它通过C保留指向事物的指针而不知道如何对事物应用任何操作的能力将对象的概念移植到C上.然后,它扩展了C语法,以提供一种向对象发布消息以及声明和实现对象可能接收的消息的方法.

Objective-C运行时的许多一般设计,特别是与Cocoa结合使用时,直接来自Smalltalk,包括选择器的概念,使用元类作为类的实例的工厂,继承的层次结构和系统,模型 – 视图 – 控制器的划分(Smalltalk原创,虽然现在几乎无处不在)和标准集合和对象上定义的许多消息.

在我的脑海中,Smalltalk在其流量控制系统方面也有很大的不同,并且有一个类似但略有不同的“块”概念(尽管大多数新实现都使这两者成为一致). Apple实际上已经将块实现为C级的扩展,而Objective-C对象上的许多新方法都使用它.

尽管如此,Goldberg Smalltalk-80的书写得非常好,易于阅读且语言非常简单,您只需两到三章即可学习整个语言.大多数复杂性被运行时中可用的对象吞噬,显然这些东西不会传输.对你有益的是,关于对象和运行时的意识形态的东西最终与打印中的细节非常分离.相反,C使流控制和算术之类的东西成为语言特征,这意味着在你真正感觉到你知道发生了什么之前,需要更多的语法和阅读.

因此,总之:Smalltalk-80书(紫色书)绝对值得一读,非常有用,但不一定完全相关.在任何情况下学习C都是必不可少的我对K& R的引用是为了比较.

猜你在找的C&C++相关文章