语言 ,规范,协议,框架

什么是语言? c++  java   都是 高级语言,先编译后运行。 js php 脚本语言,边解释边执行。 相同点在哪里? 无论如何 ,都是 有一个解释

什么是语言?

c++  java   都是 高级语言,先编译后运行。

js php 脚本语言,边解释边执行。


相同点在哪里?

无论如何 ,都是 有一个解释器或者运行时解析器在工作的。

他们会识别特定的符号和特定的格式,把变成语言写的东西翻译成计算机可以识别的0和1.

这就是 语言,语言只是一些既定的标识符,既定的语法,格式组成的一个比较复杂的规则而已。


我们用这套语言  组织逻辑,编写代码,这只是第一步,解释器或者运行时解析器 把语言翻译成 0 1是第二步。

计算器 执行 是 第三步。


这就是语言,任何一种新语言的诞生,必然会伴随着一种新的解释器或者编译器的诞生,所以语言只是一种规则而已。

html css js 这些元素组成的HTML文档可以显示成页面, 都是因为 浏览器内部 有可以解释 这些语言的解释器。

如果想要优化代码,就要了解这些解释器 或者编译器是 如何把语言翻译成 0 1 或者 中间语言的。


所以每个人都可以定义自己的语言。



什么是协议?

协议是 双方之间协定好的一份合同,甲方怎么样,乙方怎么样,都有明确规定。如果其中一方不按照合同规定来做事,

则会导致双方之间的交流沟通出现问题。


网络上协议特别多,七层网络每一层都有很多协议。

网络传输 涉及到客户端和服务器端,

客户端按照协议传输数据,服务端按照协议接收数据,

这样  数据就能够被正确获取到。

客户端多是浏览器 ,服务端多是 各种web服务器。

这样浏览器 和服务器 之间需要建立网络连接。

客户端发送的数据,怎么就能到服务端,而不被其他路由器丢掉呢?

这就网络协议的作用。

中间的路由器发现不是自己的包就要帮忙转发出去。这些都是提前协商好的。

所以协议 一般就是网络之间交流数据的格式定义。



什么是规范?

规范是在语言之上的一种高级规则,这个规则限制的不再是语法,格式,特定字符了。

规范 是 规定一组接口(用来提供某种服务的一个入口)和一些原则。

这组接口 需要不同的 厂商去用自己的方式实现这些接口,这样不同的厂商就使用了统一的接口来提供了同一种服务。

服务的提供变得规范化了。


jdbc 接口规范,jvm 规范 ,jms 规范, jax-rs 规范等都是这样。

随着业务和时代的发展,总会有一些服务在时代的压迫中产生,但是这些服务又是多家厂商有自己的接口。很杂乱无章。

这时候就需要  一个规范来统一这些服务提供者。

这就是规范,规范  让   开发者只学习一套接口就ok 了,不用学习每个厂商的不同接口 。

所以规范 就是 一套服务接口而已。

而厂商的接口实现都是用语言写的,所以最后规范的实现也是要需要编译器或者解释器来执行的。

最后补充一句,多个厂商按照同一个接口去实现功能,这个接口才叫规范,规范一般都是针对特定功能的。



框架是什么?

框架是为了方便开发,节省工作量,出现的一些省时省力的功能组合器。

他们封装了多个功能,然后再对外提供接口,这些接口都是他们的内部接口,不算是规范。



所以学习 ,应该先学习 语言,语言懂了,在学习一些接口规范,这样就可以做一些开发了,

如果需要数据传输,就要学习一些协议了,最后学习框架,框架是省时省力,但是出现问题,不容易找到原因。

但是一般来说 客户端和服务端交互,是不会让开发者按照协议的格式 自己 拼装字符串的,

这个工作都是交由某种规范来完成,同样服务端也是不需要自己做协议解析的,都有既定的被封装好的规范可以直接拿来用了。



学语言就是学语法。

学规范就是学统一接口。

学协议就是学 数据传输格式。

学框架 就是 学习功能组合包。


规范实现基于语言,也可能基于某种协议。

协议 和语言无关。

框架和语言 强相关,框架里可以用到多个规范实现。