编程范式
一 . 编程语言
机器语言:机器语言是计算机能够直接执行的语言,它由0和1组成的二进制代码表示
汇编语言:汇编语言是机器语言的助记符,通过将汇编语言转换为机器语言来实现程序的执行。
中级语言 :中级语言是介于汇编语言和高级语言之间的语言,它通常具有高级语言的结构和汇编语言的控制,例如C语言、Pascal等。中级语言需要通过编译器将其转换为机器语言才能被计算机执行
高级语言:高级语言是一种更加方便人类可读的编程语言。例如:java,python。它们通常具有更加丰富的语法和结构,同时,也更加易于使用和理解。高级语言需要转化为机器语言才能被计算机执行
总结:机器语言是计算机能够直接执行的唯一语言,其他语言都要转化为机器语言才能被计算机执行
二 . 编程范式
1.说明
编程范式指的是一种编程的方法论或者思想体系,用于指导程序员如何设计、组织和实现程序。不同的编程范式强调不同的程序设计原则和思维方式,因此也会影响到程序的结构、复杂度、可读性、可维护性和性能等方面。常见的编程范式包括面向过程编程、面向对象编程、函数式编程、响应式编程等等。其中:
命令式:面向过程,面向对象
声明式:函数式,响应式
2.常见编程范式
(1)面向过程
面向过程编程是一种以过程为中心的编程范式,程序主要由一系列的函数或过程组成。它强调的是程序的执行流程,通过将程序分解成多个小的可重用的函数或过程,便于代码的维护和复用。C语言就是一种典型的面向过程编程语言。
缺点:
(2)面向对象
面向对象编程是一种以对象为中心的编程范式,它将数据和相关的操作封装成一个对象,通过对象之间的交互实现程序的功能。面向对象编程强调的是数据的抽象和封装,具有良好的模块化和可扩展性。C++就是面向对象编程语言的代表。
面向对象的典型特性:
封装,继承,多态,依赖注入
面向对象编程的五大原则:
单一职责原则(SRP):一个类只应该有一个单一的功能,即一个类只负责一件事情。如果一个类承担了过多的职责,就会导致类的耦合度过高,不利于代码的维护和扩展。
开放封闭原则(OCP):一个类应该是可以扩展的,但是不可修改的。也就是说,当需要添加新的功能时,应该尽量不修改原有代码,而是通过扩展来实现。
里氏替换原则(LSP):子类必须能够替换掉它们的父类,并且程序仍然能够正确地工作。也就是说,子类不能改变父类原有的功能,而是应该遵循父类的约定。
接口隔离原则(ISP):客户端不应该依赖它不需要的接口。也就是说,一个类不应该强迫其他类依赖它不需要的方法。
依赖倒置原则(DIP):高层模块不应该依赖低层模块,它们应该依赖抽象。也就是说,应该依赖于抽象接口而不是具体实现。
(3)函数式编程
函数式编程是一种以函数为中心的编程范式,它强调的是函数的纯粹性和不可变性,即函数的输入和输出只与函数本身有关,而与外部环境无关。函数式编程不使用可变的状态和变量,通过函数之间的组合和嵌套实现程序的功能。Lisp等语言是函数式编程语言。
函数式编程的核心思想是函数的组合和高阶函数。函数的组合是指将多个函数组合成一个新的函数,通过函数之间的嵌套和调用来实现程序的功能。高阶函数是指可以接受函数作为参数或者返回函数作为结果的函数,它可以实现函数的抽象和复用。
(4)响应式编程
响应式编程(Reactive Programming)是一种基于事件流和数据流的编程范式,它强调的是数据流之间的响应式关系,而不是传统的命令式编程中的控制流。响应式编程可以实现数据的自动更新和异步处理,具有很好的扩展性和可维护性。
响应式编程的核心思想是响应式数据流和响应式操作。响应式数据流是指数据的源头和目标之间的一条有向边,数据可以沿着这条边流动,同时也可以在这条边上添加和移除响应式操作。响应式操作是指对数据流进行变换和处理的操作,比如过滤、映射、合并等。
理解:响应式编程可以理解为一个管道,将数据放到管道上之后开始流动,在流动过程中有对数据的一系列操作。vue.js
就是响应式编程的典型例子
三 . 领域特定语言
1.说明
领域特定语言(Domain-Specific Language,DSL)是一种针对特定领域的编程语言,它可以简化特定领域问题的表述和解决。DSL通常是一种高级语言,它具有特定领域的语法和语义,使得在该领域内解决问题更加自然和高效。
2.典型例子
SQL,它是一种用于管理关系型数据库的编程语言。SQL具有自己的语法和语义,并且被广泛应用于各种关系型数据库管理系统中。
3.构建DSL
在DSL中,Lexer、Parser、Visitor是构建编译器或解释器的三个基本组件。
(1)Lexer(词法分析器):Lexer是DSL编译器或解释器的第一步,它将DSL源代码转换为Token序列。
(2)Parser(语法分析器):Parser是DSL编译器或解释器的第二步,它将Token序列转换为抽象语法树(AST)
(3)Visitor(访问者模式):Visitor是DSL编译器或解释器的第三步,它负责遍历抽象语法树,执行DSL程序的语义。
(4)Tools是指用于构建和处理DSL的工具集合,它包括各种工具和框架,如编译器、解释器、编辑器、语言服务器、代码生成器等。