编程语言
为什么需要编程语言? 机器没有灵魂,只是一个工具,程序员产生指令,控制机器,因为人类的沟通方式是语言,所以我们会把指令称为语言。
机器语言
每一种语言都需要承载体,其实最早的承载体是纸带。现代的语言通常是用线缆和开关来承载的。
汇编语言
如果是直接使用数字的话,会非常难输入,所以说,后面我们出现了汇编语言,汇编语言是使用字母来代替数字,方便输入,同时的话,不同的字母在不同的机器下可以转换成不同的数字,因此也具有了一定的可一致性。
高级语言
最后的话,出现了高级语言,进一步提高了可一致性。高级语言也更贴近自然语言,贴近我们人类的思维。接着就出现了编译器的概念。编译器就会把高级语言先变成汇编语言,然后汇编语言再转变成机器语言,这样的话,我们就会源码非常小,但是出来的产物就会非常大。
典型的高级语言
- C语言:“中级语言”过程式语言代表
- c++:面向对象语言代表
- Javascript:基于原型和头等函数的多范式语言(是世界上使用最广泛的语言)
编程范式
编程范式分为命令式和声明式,命令主要倾向于程序员如何操作和改变命令状态,声明式分为响应式和函数式。
过程式编程
两大特点:自顶向下和结构化编程。结构化编程改善了传统的Go to,改善了电脑的开发时间,避免写出这种面条式的代码。
面向过程呢也存在一些问题,比如数据与算法关联弱,不利于修改和扩充,不利于代码重用。因此后面出现了面向对象编程,把数据封装。
面向对象编程五大原则
- 单一职责原则
- 开放封闭原则
- 里式替换原则
- 依赖倒置原则
- 接口分离原则 但是面向对象编程也有缺点。所以我们会更推荐函数式编程。
函数式编程
函数式编程是用纯函数的方式,尽量减少变化的部分。
优势
- 可缓存
- 可移植
- 可测试
- 可推理
- 可并行
响应式编程语言
响应式编程是一种在异步/离散的函数式编程,包括数据流和操作符两个概念。同样,是没有纯粹的响应式编程语言,我们需要借助工具库的帮忙,这里推荐的是RxJS工具库。
邻域特定语言
领域特定语言通常要用通用语言来实现,但是通用语言无法用领域特定语言实现。