0、计算机语言

三种语言
1、机器语言
2、汇编语言
3、高级语言

1、机器语言(01代码):为了加快开发人员的开发,于是出现了微码(汇编语言)—>编译器(汇编语言是通过编译器,可以让微码转变成01代码)
2、汇编语言:尽管人类可以识别,但是汇编语言跟芯片(CPU)的结合程度也是很高的,不仅开发有难度,而且还不好移植,所以汇编语言也是低级语言,所以后面也就出现了高级语言(c,java,perl,python)
3、高级语言:这个写出的程序,只需要和中间设备区联系,不需要关心底层的CPU是intel的还是AMD,就不需要考虑移植性。

什么是高级语言的中间设备?

    这个中间设备就是我们理解的API(也就是库),也可以理解为内核(有些是直接调用内核去获取硬件资源,如苹果系统IOS,是Unix内核的,直接调用Unix内核获取硬件资源,而有一些是通过应用程序接口去调用硬件资源(当然这一种方式需要被内核监督和管理,如安卓系统,他是一个+Linux+JVM(java虚拟机)+java程序构成,所以并不是直接调用硬件资源,而是通过JVM这个java虚拟机实现调用Linux内核资源,所以效率上肯定没有苹果IOS这么快))。

当然,很多组织都可以抽象出这些中间设备的应用程序接口。

应用程序编程接口:

    简称API(Application Programming Interface),就是软件系统不同组成部分衔接的约定。

在数据封装时,网络分层中的每个层相互之间会用接口进行交互并提供服务,其中应用层与用户之间的接口称之为应用程序接口(API,Application Programming Interface)。API实际上是一种功能集合,也可说是定义、协议的集合,无论是哪种集合,它的实质都是通过抽象为用户屏蔽实现上的细节和复杂性。
从用户角度看应用程序接口,表现为一系列API函数,用户可以使用这些函数进行网络应用程序开发。从网络角度看,应用程序接口给用户提供了一组方法,用户可以使用这组方法向应用层发送业务请求、信息和数据,网络中的各层则依次响应,最终完成网络数据传输。

常见应用程序接口

    应用层的应用程序接口有很多,并且发展很快,比较常见的如socket、FTP、HTTP以及telnet。这些接口从大类上可分为四类:

远程过程调用(RPC,Remote Procedure Call Protocol)
数据查询接口
文件类接口
数据通信接口
例如FTP协议就是文件类接口,基于FTP,用户可以实现文件在网络间的共享和传输。而socket和HTTP可归结为数据通信接口,基于这两种接口,用户可以开发网络通信应用程序,以及web页面交互程序。当然如果从编程开发角度看,无论是FTP、HTTP还是telnet,都是基于socket接口开发出来的应用层协议,是对socket接口的进一步封装和抽象,从而为用户提供更高一层的服务和接口。
socket有时称之为“Berkeley Socket”,它是最早由伯克利开发的应用程序接口。

常用的socket类型有两种:
流式socket(SOCK_STREAM)和数据报式socket(SOCK_DGRAM)。

流式socket是一种面向连接的socket,针对于面向连接的TCP服务应用。
数据报式socket是一种无连接的socket,对应于无连接的UDP服务应用。

从用户接口意义上讲,还有传输层的TLI接口,是由AT&T开发的,有时也称作XTI。它是传输层为用户提供的应用程序接口,可以用来在传输层进行应用开发。