iOS 底层 OC、C 、C 的关系 - AlvinSunny/OC-TheUnderlying GitHub Wiki

想了解 oc 和 c、c++ 的关系,首先需要知道计算机语言的分类:

分类方式有两种:

第一种:按照类型划分

  1. 高级语言和低级语言

  2. 动态类型和静态类型

  3. 强制类型和弱类型

  4. 编译型,解释型,半编译半解释

  5. 面向对象型和面向过程型

第二种:按照计算机语言的发展的三个阶段划分

机器语言、汇编语言、高级语言。

在这里仅了解第一种即可:如机器码(machine language)、汇编(伪机器语言)和符号语言是属于低级语言;C、C++ 、C#、pascalpython、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 的底层实现。

一个很基础的问题:计算机语言和生活中交流用到的语言最大的区别是什么 ?😁😁

计算机语言要求语法必须明确,不能够似是而非;即不允许有二义性 !

生活中的语言可以有多种语义;即一词多义!