本文源自本人的学习记录整理与理解,其中参考阅读了部分优秀的博客和书籍,尽量以通俗简单的语句转述。引用到的地方如有遗漏或未能一一列举原文出处还望见谅与指出,另文章内容如有不妥之处还望指教,万分感谢。
想了解 oc 和 c、c++ 的关系,首先需要知道计算机语言的分类:
分类方式有两种:
第一种:按照类型划分
1. 高级语言和低级语言
2. 动态类型和静态类型
3. 强制类型和弱类型
4. 编译型,解释型,半编译半解释
5. 面向对象型和面向过程型
第二种:按照计算机语言的发展的三个阶段划分
机器语言、汇编语言、高级语言。
在这里仅了解第一种即可:如机器码(machine language)、汇编(伪机器语言)和符号语言是属于低级语言;C、C++ 、C#、pascal、python、lisp、prolog、FoxPro、Objective-C 、Swift 、java、php等是属于高级语言。如想了解其他几种分类的语言可以参考计算机语言的几种分类;另如果想了解计算机语言的发展史-->计算机语言发展简史。
简图
图中的Objective-C版本写错了,应该是2.0
由上图可见Objective-C 是由C语言发展而来的,在我们平时编写的Objective-C 代码,底层是转化为Runtime的API实现的。
流程是:Objective-C代码在Runtime时转化为C语言API 函数调用;接着再通过编译器编译成伪机器码;最終转化成机器码来调用硬件执行。
注:文中提到Runtime,Runtime中文解释为运行时;是iOS提供的一套C语言API,是Objective-C 的底层实现。
一个很基础的问题:计算机语言和生活中交流用到的语言最大的区别是什么 ?😁😁
计算机语言要求语法必须明确,不能够似是而非;即不允许有二义性 !
生活中的语言可以有多种语义;即一词多义!